Задача такая:
Есть MySQL-сервер (v5.5.3) с базой Zabbix'а. В базу постоянно что-то важное пишется в количествах неимоверных на самом деле.
Хочется сделать слейв следующим образом:
1) Дампим мастер в STDOUT с параметром --master-data=1. Т.е. в этом дампе в 22-й строке будет информация о том, какой позиции какого бинлога соответствует снятый дамп
2) Подхватываем дамп через PIPE ssh-ем и отправляем на slave
3) В режиме «stop slave» slave применяет дамп
4) В режиме 'start slave" слейв, пользуясь информацией из 22-й строки дампа, начинает автоматически скачивать все изменения, произошедшие на мастере за время слива и применения дампа на слейве
Почему хотелось бы именно так - думаю, понятно: это позволяет полностью избежать сколько-нибудь заметного даунтайма мастер-сервера, поскольку данные на него пишутся интенсивно и данные эти важные, зело полезные, денех немалых стоящие.
Сейчас при попытке сообщить слейву, где находится мастер и как с ним «общаться», я неизменно получаю вот это конгениальное сообщение:
CHANGE MASTER TO MASTER_HOST='10.254.0.41',MASTER_PORT=3306,MASTER_USER='slave-zabbix',MASTER_PASSWORD='zabbix-slave'
ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log;
140122 16:18:00 [ERROR] Error reading master configuration
Попытка залить дамп на слейв приводит к тому же результату: он не может прочитать master.info, сильно возмущается и отказывается со мной сотрудничать.
Прочитал уже по-моему всё, что нашёл в гугле, всю голову сломал, но решения так и не нашёл. Поможите, люди добрые кто чем и сколько может! :)
Собственно, текущий конфиг мастера без комментариев:
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
server-id = 41
log_bin = mysql-bin
log_bin_index = mysql-bin.index
max_binlog_size = 512M
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 1
expire_logs_days = 20
bind-address = 192.168.58.41
bind-address = 10.254.0.41
innodb_flush_log_at_trx_commit = 1
sync_binlog = 1
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
myisam-recover = BACKUP
max_connections = 200
query_cache_limit = 1M
query_cache_size = 16M
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 5
expire_logs_days = 10
max_binlog_size = 100M
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[mysql]
[isamchk]
key_buffer = 16M
!includedir /etc/mysql/conf.d/
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
server-id = 47
innodb_file_per_table=1
report-host = 192.168.58.41
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
bind-address = 192.168.58.47
bind-address = 10.254.0.47
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /run/shm
lc-messages-dir = /usr/share/mysql
skip-external-locking
log = /var/log/mysql/server.log
log-error = /var/log/mysql/error.log
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
myisam-recover = BACKUP
query_cache_limit = 1M
query_cache_size = 16M
expire_logs_days = 10
max_binlog_size = 512M
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[mysql]
[isamchk]
key_buffer = 16M
!includedir /etc/mysql/conf.d/