我的数据库中有一个表,我需要根据外键属性对其进行分区。因此分区表的数量与外键存在的不同值的数量相同。
编辑: 我设置了复制,其中主服务器中的表被复制到四个从服务器中。从属服务器不需要复制主服务器中的整个表,而只需复制其中的一个分区,如图所示。如何才能实现这一点呢?
最佳答案
根据需要将哪些数据发送到哪些设备,将数据拆分为单独的表或单独的数据库。然后有 3 层:
主站 -> 继电器 -> 设备
每个中继既是一个(或多个)设备的从站(主站)又是主站。在中继中,您不想要访问设备的表被声明为ENGINE=BLACKHOLE
。 Relay中的其他表均正常声明。
中继可以与主服务器位于同一服务器上,但您需要单独的 mysqld 实例,每个实例都有一个单独的端口(3306 除外)。开销会相当小,特别是因为中继除了传递数据子集之外什么也不做。
编辑(基于图像)
要限制从站中的空间,请在从站上使用“replicate_do/ignore”命令。这不会减少主设备或从设备的带宽。然后,replicate_* 设置将丢弃大部分复制数据。
如果您需要限制从设备的带宽,请引入上述中继和黑洞。
关于mysql - 将表从主 MySQL 服务器动态分区到远程 MySQL 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35824924/