1

我需要复制一些数据库,如下所示。

         -DB1---replicate to---> SLAVE_A
        /
MASTER <--DB2---replicate to---> SLAVE_B
        \
         -DB3---replicate to---> SLAVE_C

如果我同时控制主服务器和所有从服务器,此处描述的过程将运行良好,但不幸的是,在这种情况下我只控制主服务器。奴隶可能在不同的国家,由其他管理员管理。

我担心的是 SLAVE_A 上的配置可以很容易地更改为不仅复制预期的 DB1,而且复制 DB2 和 DB3,这是不好的。

我限制哪个从属复制哪个数据库的唯一希望是,如果我能以某种方式从主控控制它,据我所知,这是无法做到的。一个用户要么拥有所有数据库的复制权限,要么没有,这是不幸的。

我在这里遗漏了什么,或者这只是 MySQL 的一个限制?关于如何实现这一点的任何想法?

谢谢。

4

2 回答 2

2

在从服务器上,可以通过replicate-do-dbreplicate-ignore-db参数过滤要应用的事务,这些参数包含在my.cnf 文件中或作为选项在命令行中。使用 binlog-do-db 或 binlog-ignore-db 可以在 master 上完成相同的操作,但是 - 它限制了 master 上某些特定数据库的复制。因此,对您而言,更好的解决方案是过滤从属设备上的事务。

于 2014-02-10T13:53:20.087 回答
-1

为每个复制从属创建不同的 MySQL 用户,并仅授予该用户对您希望其具有复制访问权限的数据库的访问权限。

您可以在 MySQL 文档中阅读更多内容:16.1.1.3。为复制创建用户

CREATE USER 'slave_a'@'some_slave_server' IDENTIFIED BY 'slavepass';
GRANT REPLICATION SLAVE ON `DB1`.* TO 'slave_a'@'some_slave_server';
FLUSH PRIVILEGES;

然后分别对 DB 2 和 3 上的从站 B 和 C 重复此操作。

于 2012-11-14T22:38:37.647 回答