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) に移動したいと考えています。
私が欲しい:
- 奇数番号のツイートを含む Server1: パーティション 1、3、5、7、9、11
- Server2 に偶数番号のツイートを含める: パーティション 2、4、6、8、10、0
1) これらのパーティションを Server1 から Server2 に移動する最善の方法は何ですか? 自動インクリメントの tweet_id の値が移行中に変更されないことを確認する必要があります。
2) 2 つのサーバーができたので、2 つのサーバーによって生成された自動インクリメントの tweet_id が同じ値でないことを確認するにはどうすればよいですか? また、各パーティションの tweet_id が一貫していることを確認する必要もあります。つまり、パーティション k では、すべての tweet_id の modulo 12 が k に等しくなります。
3) 理想的には、このスケールアウト プロセスを継続したいと考えています。そのため、後で 3 番目のサーバー (Server3) を追加したいと思います。各サーバーに 4 つのパーティションがあるように、パーティションのバランスを取り直したいと思います。繰り返しますが、3 つのサーバーによって生成された自動インクリメントの tweet_id が明確であり、12 を法とする tweet_id が各パーティション内で一貫していることを確認するにはどうすればよいですか?