Скажем, у меня есть 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. Но в конце концов я, возможно, захочу уменьшить масштаб. Поэтому я бы хотел очертить таблицу и переместить 6 из 12 разделов на новый сервер - Server2.
Я хочу:
- Сервер1 содержит нечетные твиты: перегородки 1, 3, 5, 7, 9, 11
- Server2 содержат четные твиты: перегородки 2, 4 , 6, 8, 10, 0
1) Каков наилучший способ перемещения этих разделов с Server1 на Server2? Мне нужно убедиться, что значения auto-increment tweet_id остаются неизменными во время миграции.
2) Теперь, когда у меня есть 2 сервера, как я могу убедиться, что auto-increment tweet_id, сгенерированный двумя серверами, не имеет того же значения? Мне также нужно убедиться, что tweet_id на каждом разделе остается согласованным, т. Е. На разделе k каждый модуль tweet_id 12 равен k.
3) В идеале я хотел бы продолжить этот процесс масштабирования. Поэтому позже я захочу добавить третий сервер - Server3. Я бы хотел перебалансировать разделы, чтобы на каждом сервере было 4 раздела. Опять же, как я могу убедиться, что auto-increment tweet_id, сгенерированный 3-мя серверами, различен и что по модулю 12 из tweet_id остаются согласованными в каждом разделе?