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