MySQL主从复制不更新

这是我第一次设置主从复制。 我用这个作为指导。

我遵循的步骤和所有工作,直到最后一部分,当我需要validation复制。 当我创build一个新表并将一些数据插入到master数据库中的表中时,它不会被复制到从数据库中。

下面是主人的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 

奴隶的my.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) 

我努力了:

  • 从机使用slave_user访问master数据库==>成功; 所以问题不在这里
  • 重新启动mysql服务在奴隶机器==>没有改变
  • /var/lib/mysql/mysql.err中没有显示错误
  • 停止防火墙使用#服务iptables停止==>没有改变

请帮忙! 真的很感激!

没有任何错误。

这是你可以告诉的

指示#1:从线程

当您运行SHOW SLAVE STATUS\G ,会显示

 Slave_IO_Running: Yes Slave_SQL_Running: Yes 

这显示了IO线程(从主站截获Binlog事件并在中继日志FIFO中存储它们)和SQL线程(从中继日志FIFO读取二进制日志事件并执行SQL)并连接并运行

指示#2:中继日志

当您运行SHOW SLAVE STATUS\G ,会显示

 Relay_Log_Space: 120695 

这表明IO线程已经从主机读取了120K。 IO线程正在读取新事件时,此值应该不断变化。

指示#3:已执行的陈述

当您运行SHOW SLAVE STATUS\G ,会显示

 Read_Master_Log_Pos: 389591 Exec_Master_Log_Pos: 389591 

如果这些值正在改变,那么IO线程将到达Read_Master_Log_Pos任何位置,并且SQL线程已经执行到Exec_Master_Log_Pos任何位置。

警告

我看到你在从机上启用了二进制日志logging。 您不会看到从机上增长的二进制日志。 为什么? 您忘记将从站更新添加到从站的my.cnf

您将不得不添加从站的my.cnf 日志从属更新并重新启动MySQL。

这里没有什么明显的错误。

我要做的第一件事是确保在发出CREATE TABLE和INSERT命令时,实际上是使用数据库数据库名称。

你也可以尝试删除由binlog-do-db,replicate-do-db等施加的限制,看看是否有帮助。