MySQL复制:主数据库名称必须与从数据库名称相同吗?

5

我已将主数据库名称设置为MDB,在从服务器上我将其设置为replicate-do-db=SDB,但这并没有奏效。但是当我将其设置为相同的数据库名称时它起作用了。是否有解决方案可以在同一服务器上设置一个主数据库和两个不同的从数据库?

2个回答

11

您需要指定replicate-rewrite-db选项:

--replicate-rewrite-db=from_name->to_name

告诉从属服务器将默认数据库(即由USE选择的数据库)从from_name翻译为to_name。只影响涉及表的语句(如CREATE DATABASE、DROP DATABASE和ALTER DATABASE等语句不受影响),且仅当from_name是主服务器上的默认数据库时才生效。这对于跨数据库更新无效。要指定多个重写,请多次使用此选项。服务器使用第一个匹配的from_name值。在测试--replicate-*规则之前执行数据库名称翻译。
如果您只复制某些数据库,则需要指定replicate-do-db。请注意,此参数的参数是经过replicate-rewrite-db重命名操作后的数据库名称:
--replicate-do-db=db_name

3
复制-重写数据库的代码应该放在主服务器或从服务器中哪一个? - hkshambesh
请问是否需要在 replicate-rewrite-db 中包含 replicate-do-db? - Syed Muhammad Zeeshan

0

使用不同数据库名称的MySQL复制

将以下内容添加到MySQL配置文件(/etc/mysql/my.cnf)的日志记录和复制部分中,我将其插入到relay-log的正上方。

replicate-rewrite-db = db_1->db_2

db_1替换为要从远程主服务器复制的数据库名称,将db_2替换为目标数据库名称。

  • 重新启动MySQL服务器(/etc/init.d/mysql restart
  • 访问MySQL shell(mysql -h localhost -u root -p
  • 检查Slave状态(SHOW SLAVE STATUS\G

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接