說我有一個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保持在每個分區內保持一致?