MySQL 复制 : struggling with replicate-rewrite-db to change the database name

标签 mysql database-replication

我有我的主数据库,其中有一个表,产品(稍后会有更多,这只是开发)。

操作系统:CentOS 6.4

我已将其设置为使用此复制的主服务器:

在/etc/my.cnf 中:

server-id = 1
binlog-do-db=product_database
relay-log = /var/lib/mysql/mysql-relay-bin
relay-log-index = /var/lib/mysql/mysql-relay-bin.index
log-error = /var/lib/mysql/mysql.err
master-info-file = /var/lib/mysql/mysql-master.info
relay-log-info-file = /var/lib/mysql/mysql-relay-log.info
log-bin = /var/lib/mysql/mysql-bin

在 master 上我用这个命令创建了用户:

GRANT REPLICATION SLAVE ON *.* TO 'hcp_slave'@'%' IDENTIFIED BY 'password_here';

然后在slave上:

server-id = 2
master-host=HOST_IP_ADDRESS
master-connect-retry=60
master-user=hcp_slave
master-password=PASSWORD
replicate-do-db=product_database
#The below line is what causes issues
replicate-rewrite-db=product_database->product_database2
relay-log = /var/lib/mysql/mysql-relay-bin
relay-log-index = /var/lib/mysql/mysql-relay-bin.index
log-error = /var/lib/mysql/mysql.err
master-info-file = /var/lib/mysql/mysql-master.info
relay-log-info-file = /var/lib/mysql/mysql-relay-log.info
log-bin = /var/lib/mysql/mysql-bin

在我添加“replicate-rewrite-db”行(并删除它)之前,复制在具有相同数据库名称的服务器之间完美运行。但是,为了测试目的,我需要它进入具有不同名称的数据库“product_database2”。

根据我在 mysql 手册和一些随机论坛(加上 stackoverflow)中阅读的所有内容,我认为我正确地使用了复制命令,但很明显,我没有,所以我将不胜感激能帮助我弄清楚我的问题出在哪里,或者如果我试图以完全错误的方式解决这个问题!

对于那些好奇的人,我实际上正在尝试做什么,以防我在这里遇到 XY 问题:

我正在尝试创建一个主数据库以将产品提供给少数网站,而不必手动更新它们。我认为最好的方法是创建 1 个主数据库并将所有站点配置为从站点以自动从中提取产品。

编辑:

我尝试在从属配置文件中注释掉“replicate-do-db”行,至少现在它给出了一些指示,表明知道 product_database2 存在,但它是错误的形式:

Last_Error: Error 'Error on rename of './product_database/asdf.frm' to     './product_database2/asdf.frm' (Errcode: 2)' on query. Default database: 'product_database2'. Query: 'RENAME TABLE `product_database`.`asdf`

最佳答案

在slave端需要设置

replicate-do-db=product_database2

因为您重写了数据库名称,例如 product_database->product_database2

关于MySQL 复制 : struggling with replicate-rewrite-db to change the database name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18241462/

相关文章:

node.js - Mongoose:在 ReplicaSet 上阅读

postgresql - 在 Postgres 数据库之间复制数据

sql - Mysql 复制转储无需停机?空的sql文件

mysql - 同一行 ID 后主主复制失败

mysql - 查找 tag_id 5 和 21 参加的所有可能的 event_id

mysql - 具有限制和搜索选项的特殊连接

MySQL 在使用 GROUP BY WEEK 时按 SQL 中的另一列按最大(列)选择行?

php - 通过 phpMyAdmin 将相同的数据添加到所有行的一列(mySQL)

MYSQL:优化表排序中的Order By

sql-server-2005 - 当复制发布者无法连接到订阅者系统时,SQL Server 如何通过电子邮件发送错误消息