复制不更新所有表
Replication not updating all tables
- 主数据库 MySQL 数据库服务器 2012
- 从数据库MySQL Win7 XAMPP
- 数据库大小 500MB
- Table 计数 42
我已经成功设置了复制,但是它上周停止了,我的从服务器显示错误 Slave_SQL_Running No
。我意识到它正在查看一个不正确的日志文件(00004 而它应该是 00006)。
此后我将其排序为;
硕士;
SHOW MASTER STATUS;
Copied the values of MASTER_LOG_FILE and MASTER_LOG_POS.
在奴隶处;
STOP SLAVE;
RESET SLAVE;
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=98; (<- example values)
START SLAVE;
SHOW SLAVE STATUS \G;
在我的主机上,我通过编辑 table members
测试了复制 - 我编辑了其中一个行值(从 85
到 86
- 这已成功复制在我的奴隶)。但是我注意到在我的主人 members
table 上有 70652 个成员,但在我的奴隶上只有 70056 个。
我在我的主成员 table 中添加了两个新成员,两个 table 的总数都增加了 2。不过好像还是少了那600个?
可能是什么问题?复制似乎有效,但总计无效。每天都有新成员添加到成员table,但没有添加到我的从属成员table。
我的奴隶状态table(来自phpmyadmin)的结果是;
Slave_IO_State Waiting for master to send event
Master_Host xxx.xxx.xxx.xxx
Master_User repl
Master_Port 3306
Connect_Retry 60
Master_Log_File mysql-bin.000006
Read_Master_Log_Pos 787956776
Relay_Log_File mysql-relay-bin.000004
Relay_Log_Pos 624412
Relay_Master_Log_File mysql-bin.000006
Slave_IO_Running Yes
Slave_SQL_Running Yes
Replicate_Do_DB
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 787956776
Relay_Log_Space 788197
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
还有什么我可以检查或测试的吗?
是的,当您停止复制时,一些行被更改或插入。在此之后,您已重置 SLAVE 并设置 MASTER_LOG_POS。所以复制永远无法获得旧的更改。
您有 2 个选项:
第一个:
停止复制
转储Master DB(带master位置)
在从机中恢复
设置位置或检查它们
启动奴隶
秒
停止奴隶
使用 percona 工具包将 masterDB 同步到 Slave DB - pt-table-sync
启动奴隶
- 主数据库 MySQL 数据库服务器 2012
- 从数据库MySQL Win7 XAMPP
- 数据库大小 500MB
- Table 计数 42
我已经成功设置了复制,但是它上周停止了,我的从服务器显示错误 Slave_SQL_Running No
。我意识到它正在查看一个不正确的日志文件(00004 而它应该是 00006)。
此后我将其排序为;
硕士;
SHOW MASTER STATUS;
Copied the values of MASTER_LOG_FILE and MASTER_LOG_POS.
在奴隶处;
STOP SLAVE;
RESET SLAVE;
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=98; (<- example values)
START SLAVE;
SHOW SLAVE STATUS \G;
在我的主机上,我通过编辑 table members
测试了复制 - 我编辑了其中一个行值(从 85
到 86
- 这已成功复制在我的奴隶)。但是我注意到在我的主人 members
table 上有 70652 个成员,但在我的奴隶上只有 70056 个。
我在我的主成员 table 中添加了两个新成员,两个 table 的总数都增加了 2。不过好像还是少了那600个?
可能是什么问题?复制似乎有效,但总计无效。每天都有新成员添加到成员table,但没有添加到我的从属成员table。
我的奴隶状态table(来自phpmyadmin)的结果是;
Slave_IO_State Waiting for master to send event
Master_Host xxx.xxx.xxx.xxx
Master_User repl
Master_Port 3306
Connect_Retry 60
Master_Log_File mysql-bin.000006
Read_Master_Log_Pos 787956776
Relay_Log_File mysql-relay-bin.000004
Relay_Log_Pos 624412
Relay_Master_Log_File mysql-bin.000006
Slave_IO_Running Yes
Slave_SQL_Running Yes
Replicate_Do_DB
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 787956776
Relay_Log_Space 788197
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
还有什么我可以检查或测试的吗?
是的,当您停止复制时,一些行被更改或插入。在此之后,您已重置 SLAVE 并设置 MASTER_LOG_POS。所以复制永远无法获得旧的更改。
您有 2 个选项:
第一个:
停止复制
转储Master DB(带master位置)
在从机中恢复
设置位置或检查它们
启动奴隶
秒
停止奴隶
使用 percona 工具包将 masterDB 同步到 Slave DB - pt-table-sync
启动奴隶