LINUX.ORG.RU

Проблема репликации MySQL

 ,


0

1

Коллеги, вопрос по репликации MySQL. Настраиваю репликацию типа master-slave между двумя серверами. Конфиг мастера:

log-bin = /var/lib/mysql/mysql-bin.log
log-bin=mysql-bin
server-id = 1
slave-compressed = 1
binlog-do-db = base1, base2, base3, base4

Конфиг слейва:

relay-log = /var/log/mysql/mysql-relay-bin.log
log_bin = /var/lib/mysql/mysql-bin.log
server-id = 2
replicate-do-db = base1, base2, base3, base4

mysql> SHOW SLAVE STATUS\G; на слейве

*************************** 1. row *************************** 
Slave_IO_State: Waiting for master to send event 
Master_Host: 192.168.0.8 
Master_User: repluser 
Master_Port: 3306 
Connect_Retry: 60 
Master_Log_File: mysql-bin.000005 
Read_Master_Log_Pos: 98 
Relay_Log_File: mysql-relay-bin.000002 
Relay_Log_Pos: 244 
Relay_Master_Log_File: mysql-bin.000005 
Slave_IO_Running: Yes 
Slave_SQL_Running: Yes 
Replicate_Do_DB: base1, base2, base3, base4 
Replicate_Ignore_DB: 
Replicate_Do_Table: 
Replicate_Ignore_Table: 
Replicate_Wild_Do_Table: 
Replicate_Wild_Ignore_Table: 
Last_Errno: 0 
Last_Error: 
Skip_Counter: 0 
Exec_Master_Log_Pos: 98 
Relay_Log_Space: 400 
Until_Condition: None 
Until_Log_File: 
Until_Log_Pos: 0 
Master_SSL_Allowed: No 
Master_SSL_CA_File: 
Master_SSL_CA_Path: 
Master_SSL_Cert: 
Master_SSL_Cipher: 
Master_SSL_Key: 
Seconds_Behind_Master: 0 
Master_SSL_Verify_Server_Cert: No 
Last_IO_Errno: 0 
Last_IO_Error: 
Last_SQL_Errno: 0 
Last_SQL_Error: 
Replicate_Ignore_Server_Ids: 
Master_Server_Id: 1 
1 row in set (0.00 sec) 

В логах никаких проблем нет. При этом синхронизация данных не происходит. Если потушить мастер, то слейв это заметит.

mysql> SHOW MASTER STATUS; на мастере

+------------------+----------+---------------------------------------------------+------------------+ 
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | 
+------------------+----------+---------------------------------------------------+------------------+ 
| mysql-bin.000005 | 98 | base1, base2, base3, base4 | | 
+------------------+----------+---------------------------------------------------+------------------+ 
1 row in set (0.00 sec) 

Вот тут интересно: если на мастере внести изменения в БД, то значения File и Position НЕ МЕНЯЮТСЯ. Если перезапустить mysql, то File изменится, но Position остаётся неизменным. Что посмотреть?

Была ошибка в конфиге. Базы, которые будут реплицироваться, нужно записывать каждую в отдельной опции:

replicate-do-db = base1
replicate-do-db = base2
replicate-do-db = base3
replicate-do-db = base4
так же и на мастере.

Теперь я вижу изменения Position (на мастере), вижу изменения, например, Exec_Master_Log_Pos и Relay_Log_Space (на слейве), но если посмотрю в БД на слейве, которая изменена на мастере, то фактических изменений нет, данные не синхронизировались... Смотрю дальше.

yellowboy ()
Ответ на: комментарий от yellowboy

Вопрос решен.

Подключаю в процесс репликации по одной базе, всё нормально, разом была проблема.

yellowboy ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.