MYSQL 5.1.73
我在同一台服务器上使用复制
my.cfg
server-id=1
report-host=master-is-slave-host
log-bin=myserver-binlog
relay-log=myserver-relaylog
replicate-same-server-id=1
binlog-do-db=pal_main
replicate-rewrite-db=pal_main->pal_test
replicate-do-db=pal_test
expire_logs_days = 5
一切正常,但在有数据库名称的查询中有错误
INSERT INTO `pal_main`.`api_log` (`ID`, ...) VALUES (NULL, ...)'
结果:
Last_SQL_Error:错误'重复录入' 3'关键' PRIMARY''上 查询。默认数据库:' pal_test'。查询:' INSERT INTO ' pal_main'' api_log' (' ID',...)VALUES(NULL,...)'
查询:
INSERT INTO `api_log` (`ID`, ...) VALUES (NULL, ...)'
奴隶没有问题
它看起来不会在查询中替换数据库名称并在主服务器
中尝试插入时出错答案 0 :(得分:0)
binlog-do-db
设置为binlog_format
, STATEMENT
将仅在当前数据库是指定数据库时复制语句。设置为MIXED
时,可能会也可能不会出现同样的问题。
如果先USE pal_main;
,则查询将复制。否则,它没有。
对于您正在做的事情,您需要binlog_format=ROW
才能保持一致的行为。当MySQL决定是否写入Binlog时,这应该不需要检查当前数据库。
您使用精巧的配置进行操作。