将 table 从主服务器动态分区到远程 mySQL 服务器

Dynamically partitioning a table from main to remote mySQL server

我的数据库中有一个 table,我需要根据外键属性对其进行分区。所以分区的数量 tables 与外键存在的不同值的数量相同。

编辑: 我设置了复制,其中主服务器中的 table 被复制到四个从服务器中。从服务器不需要复制主服务器中的整个 table,只需复制其中的一个分区,如图所示。怎样才能做到这一点?

Image: Replicating partitions

根据需要转到什么设备,将您的数据拆分到单独的表或单独的数据库中。然后有 3 层:

主机 -> 继电器 -> 设备

每个中继既是一个(或多个)设备的从设备(对主设备)又是主设备。在 Relay 中,你想要去的表被声明到设备ENGINE=BLACKHOLE。 Relay中的其他表正常声明。

中继可以与主服务器位于同一台服务器上,但您需要单独的 mysqld 实例,每个实例都有一个单独的端口(3306 除外)。开销会很小,特别是因为中继除了传递数据的一个子集之外什么都不做。

编辑(基于图像)

要在 Slave 中限制 space,请在 Slave 上使用 "replicate_do/ignore" 命令。这不会减少主站或从站的带宽。 replicate_* 设置将丢弃大部分复制数据。

如果需要限制 Slaves的带宽,可以引入上面提到的Relays和Blackhole。