MySQL复制(3个主人,1个奴隶)

时间:2011-05-04 19:05:47

标签: mysql replication master-slave

我目前正在设置mySQL复制。

我需要从三个地方获取数据。

所以例如我有

需要此数据
server1 - database1
server2 - database2
server3 - database3

在此处存储数据
server4 - database4

我需要这个用于报告目的。

我已经读过你无法连接到一个以上的主人。所以说到这一点,我将尝试一个“主链”拓扑,因为我想我明白这个是怎么回事

所以数据流将如下所示

server1 - > server2 - > server3 - >服务器4

server2 server3 将为复制数据库提供黑洞存储引擎,因此我们实际上并未将信息存储在这些服务器上,但信息仍记录到二进制文件中-log所以所有的语句都会逐渐减少,以使server4保持最新状态。

我是否正确理解了这一点?

1 个答案:

答案 0 :(得分:2)

这样可行,但不是最好的实现,可能会在将来导致问题。在server1或server2上添加新表之前,您必须在下游服务器上创建BLACKHOLE表,否则您将最终获得真实表。我想你可以通过编写一个每天晚上在server2和server3上运行的脚本来寻找任何非黑洞表并运行ALTER TABLE将它们修改为BLACKHOLE表来解决这个问题。

您是否需要更新报告数据?如果不是,我建议抛弃这个想法,并根据需要定期将数据转储到server4。

编辑:(第二天)经过一番思考后,我想如果这是我,我可能会考虑在 server4 上运行三个独立的MySQL实例,每个实例都是其中一个服务器的直接奴隶。

使用这种方法没有复制,复制设置更简单/正常,每个数据库对都是自包含的。

运行多个MySQL实例很简单,也很正常,甚至还有一个名为mysqld_multi的工具可以帮助你进行设置。