Возможно ли установить другую индексацию на ведомом только для чтения, начиная с мастера? В принципе, это похоже на то, что это имеет смысл с учетом различных требований двух систем, но я хочу убедиться, что он будет работать и не вызовет никаких проблем.
Можете ли вы индексировать таблицы по-разному на Master и Slave (MySQL)
Ответ 1
Я так считаю. После того, как репликация работает, вы можете отбросить индексы на подчиненном устройстве и создать нужные вам индексы, и это должно быть сделано. Поскольку MySQL реплицирует операторы, а не данные (по крайней мере, по умолчанию), если SQL, необходимый для вставки или обновления или выбора из таблицы, не требуется изменять, он не должен замечать.
Теперь, очевидно, есть недостатки. Если вы создадите уникальный ключ, который не находится на главном компьютере, вы можете получить данные, вставленные в мастер, которые не могут быть вставлены на подчиненный. Если обновление выполнено с использованием индекса, он может быстро запускаться на главном компьютере, но вызывает сканирование таблицы на подчиненном устройстве (поскольку у вас нет никакого индекса, который был бы удобен).
И если какие-либо изменения DDL когда-либо произойдут на сервере (например, чтобы изменить индекс), который будет передан ведомому, и там будет создан новый индекс, даже если вы этого не хотите.
Ответ 2
Конечно. Я делаю это все время. Проблемы, с которыми я столкнулся:
- Ссылка на индексы с помощью
FORCE/USE/IGNORE INDEX
вSELECTS
приведет к ошибке - Ссылка на индексы в
ALTER
статутах мастера может разбить репликацию - Добавляет еще один шаг к продвижению подчиненного устройства в качестве главного в случае чрезвычайной ситуации.
- Если вы используете репликацию на основе утверждений (норма), и вы играете с индексами
UNIQUE
, любые статусыINSERT... ON DUPLICATE KEY
,INSERT IGNORE
илиREPLACE
будут вызывать экстремальные дрейфы/расхождения данных - Различия в производительности (как хорошие, так и плохие)
Ответ 3
Конечно, я считаю, что даже обычной практикой является копирование таблиц InnoDB в таблицы MyISAM на ведомом, чтобы иметь возможность добавлять полнотекстовые индексы.