Я настроил репликацию MySQL для существующего сервера базы данных. Настройка кажется прекрасной, но база данных никогда не обновляется на подчиненном сервере после запуска репликации. Оба сервера используют 64-разрядную версию CentOS 5.7. У них достаточно места на диске.
mysql> показать такие переменные, как server_id;
| server_id | 1 |
mysql> показать список процессов;
| 391673 | ответ | mysqlslave.mydomain.com:47453 | NULL | Дамп бинлога | 1453 | Отправил весь бинлог ведомому устройству; ждем обновления binlog | НОЛЬ
mysql> показать подчиненные хосты;
Пустой набор (0,00 сек)
mysql> показать статус мастера;
| mysql-bin.000008 | 98 | db1, db2 |
mysql> показать такие переменные, как server_id;
server_id | 2
mysql> показать статус подчиненного \ G;
************************** 1. строка ******************** *******
Slave_IO_State: Ожидание отправки события мастером
Master_Host: 192.168.1.2
Master_User: repl
Мастер_Порт: 3306
Connect_Retry: 60
Главный_Журнал_Файл: mysql-bin.000008
Read_Master_Log_Pos: 98
Relay_Log_File: ведомое-реле-bin.000004
Relay_Log_Pos: 235
Relay_Master_Log_File: mysql-bin.000008;
Slave_IO_Running: Да
Slave_SQL_Running: Да
Replicate_Do_DB: db1; db2
На подчиненном сервере журнал сообщений показывает это
111031 10:53:16 [Примечание] Выход из подчиненного потока ввода-вывода, чтение до журнала 'mysql-bin.000008', позиция 98
111031 10:53:16 [Примечание] Ошибка чтения журнала событий реле: подчиненный поток SQL был убит
111031 10:53:16 [Примечание] Инициализирован подчиненный поток SQL, запуск репликации в журнале mysql-bin.000008 с позиции 98, релейный журнал ./slave-relay-bin.000001 позиция: 4
111031 10:53:16 [Примечание] Подчиненный поток ввода-вывода: подключен к главному серверу «repl@192.168.1.2: 3306», репликация началась в журнале «mysql-bin.000008» в позиции 98
Если я создам новую базу данных на главном сервере, она будет реплицирована на подчиненный сервер, но существующие базы данных не обновятся.
Вместо того, чтобы сбрасывать все базы данных и настраивать репликацию за один раз, я делаю это по одной, и теперь все работает нормально.
Я думаю я вижу проблему
В вашем вопросе указано следующее:
Replicate_Do_DB: db1; db2
Это не должен быть список, разделенный точкой с запятой. Предполагается, что это будет список, разделенный запятыми.
Я предполагаю, что это у вас есть в /etc/my.cnf вашего раба
replicate-do-db=db1; db2
Правильный способ настройки -
replicate-do-db=db1
replicate-do-db=db2
Отрегулируйте это в /etc/my.cnf подчиненного устройства и перезапустите mysql на подчиненном устройстве.
Попробуйте !!!
Вы можете очистить журнал реле, выполнив следующие действия.
STOP SLAVE;
CHANGE MASTER TO master_log_file='mysql-bin.000008',master_log_pos-98;
START SLAVE;
затем беги SHOW SLAVE STATUS\G
и убедитесь, что репликация запущена, убедившись, что вы видите это
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
так же, как вы написали в своем вопросе