Mysql 复制重写数据库不工作

Mysql 复制重写数据库不工作

整天都在为这个问题“努力”。

我有一个可以正常工作的主/从设置,但是当我尝试复制到从服务器上的其他数据库名称时,它会失败。my.cnf 如下所示:

server-id=101
report-host=Slave01

replicate_do_db='DB1'
replicate-rewrite-db=DB1->DB2

replicate-ignore-table=DB2.SOME_TABLE_NAME

如果我删除 replicate-rewrite-db 行,它会完美运行并将 DB1 数据库从主服务器复制到从服务器。我在从服务器上使用的主日志位置是在主服务器上的 CREATE DATABASE DB1 调用之后。在该日志位置之后,将在主服务器上创建表并导入数据。在创建 DB2 数据库之后,我才配置和启动从服务器。

有任何想法吗?

更新:在 mysql 错误日志中看到此信息:

120531 15:48:19 [Note] Slave I/O thread: connected to master 'slave_user@master_server:3306',  replication started in log 'mysql-bin.000001' at position 107
120531 15:48:20 [ERROR] Slave: Error 'Unknown database 'DB1'' on query. Default database: 'DB1'. Query: 'CREATE TABLE `ANOTHER_TABLE` (

答案1

我在评论中收到了提示,但用户后来将其删除了。

诀窍是不使用 replicate-do-db 而只使用 replicate-rewrite-db:

#replicate_do_db='DB1'
replicate-rewrite-db=DB1->DB2

注释掉 my.cnf 中的 replicate_do_db 行帮我解决了这个问题。

感谢那位为我指明正确方向的神秘用户,无论您是谁。

答案2

重要提示:您必须添加重写数据库的名称。在 my.cnf 中添加此行:

replicate-do-db=DB2

所以你的配置文件最终必须是这样的:

server-id=101
report-host=Slave01

replicate_do_db       =  DB2
replicate-rewrite-db  =  DB1->DB2

replicate-ignore-table=DB2.SOME_TABLE_NAME

我测试过了,它有效

相关内容