说我有一个MySQL表:如何通过从数据库分区发展到分片来扩展?
CREATE TABLE tweets (
tweet_id INT NOT NULL AUTO_INCREMENT,
author_id INT NOT NULL,
text CHAR(140) NOT NULL,
PRIMARY KEY (tweet_id)
)
PARTITION BY HASH(tweet_id)
PARTITIONS 12;
一切都很好。该表位于单个服务器上 - Server1。但最终我可能想要扩大规模。所以我想分割表并将12个分区中的6个分区移动到新的服务器 - Server2上。
我愿意:
- 服务器1包含奇数编号的鸣叫:分区1,3,5,7,9,11
- 服务器2含有偶数鸣叫:分区2,4 ,6,8,10,0
1)将这些分区从Server1移动到Server2的最佳方式是什么?我需要确保在迁移过程中自动增量tweet_id的值保持不变。
2)现在我有2个服务器,我如何确保由2台服务器生成的自动增量tweet_id的值不同?我还需要确保每个分区上的tweet_id保持一致,即在分区k上,每个tweet_id的模12等于k。
3)理想情况下,我想继续这个扩展过程。所以后来我想添加第三台服务器 - Server3。我想重新平衡分区,以便每台服务器上有4个分区。我又如何确保3台服务器生成的自动增量tweet_id是不同的,并且tweet_id的模12保持在每个分区内保持一致?