主库配置:
log-bin=mysql-bin
server-id = 66
从库配置:
server-id = 67
replicate-do-db = liuxm_test
replicate-rewrite-db = liuxm_test->liuxm
同步无效,但是把replicate-rewrite-db去掉,在从库上建一个liuxm_test库就可以同步
求大神指点
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.60.110.66
Master_User: sync
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000007
Read_Master_Log_Pos: 4241753
Relay_Log_File: web2-relay-bin.000032
Relay_Log_Pos: 66331
Relay_Master_Log_File: mysql-bin.000007
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: liuxm_test
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: 4241753
Relay_Log_Space: 67263
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: 66
Master_UUID: 2c653815-1117-11e6-ab2c-44a842479353
Master_Info_File: /usr/local/mysql/data/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB: (liuxm_test,liuxm)
Channel_Name:
Master_TLS_Version:
1 row in set (0.00 sec)
从库配置应该改为:
要注意一点:ddl、dml语句不能带上 dbname(dbname.tablename)。特别是binlog记录的是statement的时候使用 navicat 等图形界面创建、插入、更新等操作都会带上 dbname。如:
可以看下mysql官方文档有关replicate-rewrite-db的部分,有详细说明。以下是文档部分内容的中文翻译:
为确保重写产生预期的结果,尤其是与其他复制筛选选项结合使用时,请在使用选项--replicate-rewrite-db时遵循以下建议:
如果遵循这些 建议,则可以安全的将
--replicate-rewrite-db
选项与 table 级复制过滤选项(例如--replicate-do-table
)结合使用。