Репликация MySQL master-slave не обновляется
Это мой первый раз, когда я настраиваю репликацию master-slave. Я использую это как руководство.
Я следовал за шагами, и все работает до последней части, когда мне нужно проверить репликацию. Когда я создаю новую таблицу и вставляю некоторые данные в таблицу в основной базе данных, она не реплицируется в подчиненную базу данных.
Ниже мастер my.cnf
server-id = 1
binlog-do-db = databasename
relay-log = /var/lib/mysql/mysql-relay-bin
relay-log-index = /var/lib/mysql/mysql-relay-bin.index
log-error = /var/lib/mysql/mysql.err
master-info-file = /var/lib/mysql/mysql-master.info
relay-log-info-file = /var/lib/mysql/mysql-relay-log.info
log-bin = /var/lib/mysql/mysql-bin
И раб мой.cnf
server-id = 2
master-host=10.77.88.111
master-connect-retry=60
master-user=slave_user
master-password=slave_password
replicate-do-db=databasename
replicate-ignore-table=table1
replicate-ignore-table=table2
relay-log = /var/lib/mysql/mysql-relay-bin
relay-log-index = /var/lib/mysql/mysql-relay-bin.index
log-error = /var/lib/mysql/mysql.err
master-info-file = /var/lib/mysql/mysql-master.info
relay-log-info-file = /var/lib/mysql/mysql-relay-log.info
log-bin = /var/lib/mysql/mysql-bin
Ниже приведен SHOW SLAVE STATUS
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.77.88.111
Master_User: slave_user
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 389591
Relay_Log_File: mysql-relay-bin.000003
Relay_Log_Pos: 251
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: databasename
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table: databasename.table1,databasename.table2
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 389591
Relay_Log_Space: 120695
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:
1 row in set (0.00 sec)
Я пытался:
- получить доступ к базе данных master с подчиненного компьютера, используя slave_user ==> success; так что вопрос тут не кроется
- перезапустите службу MySQL на подчиненном компьютере ==> без изменений
- в /var/lib/mysql/mysql.err не отображается ошибка
- остановить брандмауэр с помощью # сервиса iptables stop ==> без изменений
Пожалуйста помоги! Действительно ценю это!
2 ответа
Нет ничего плохого.
Вот как вы можете сказать
УКАЗАНИЕ №1: ведомые нити
Когда ты побежал SHOW SLAVE STATUS\G
, это показывает
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Это показывает, что и поток ввода-вывода (перехватывает события Binlog из главного и сохраненного в FIFO журналов ретрансляции) и поток SQL (считывает события Binlog из FIFO журналов ретрансляции и выполняет SQL), а также подключается и работает
УКАЗАНИЕ № 2: Журналы реле
Когда ты побежал SHOW SLAVE STATUS\G
, это показывает
Relay_Log_Space: 120695
Это показывает, что поток ввода-вывода прочитал 120K от мастера. Это значение должно постоянно меняться, пока поток ввода-вывода читает новые события.
УКАЗАНИЕ № 3: Выполненные заявления
Когда ты побежал SHOW SLAVE STATUS\G
, это показывает
Read_Master_Log_Pos: 389591
Exec_Master_Log_Pos: 389591
Если эти значения изменяются, потоки ввода-вывода находятся в любой позиции Read_Master_Log_Pos
и поток SQL выполнил до любой позиции в Exec_Master_Log_Pos
,
ПРЕДОСТЕРЕЖЕНИЕ
Я вижу, у вас включено ведение двоичного журнала на ведомом устройстве. Вы не увидите, как двоичные журналы растут на подчиненном устройстве. Зачем? Вы забыли добавить log-slave-updates для Slave's my.cnf
,
Вы должны были бы добавить обновления журнала-раба к Рабу my.cnf
и перезапустите MySQL.
Здесь нет ничего явно плохого.
Первое, что я хотел бы сделать, это убедиться, что при выполнении команд CREATE TABLE и INSERT вы фактически используете имя базы данных базы данных.
Вы также можете попробовать снять ограничения, наложенные binlog-do-db, replicate-do-db и т. Д., И посмотреть, поможет ли это.