Подтвердить что ты не робот

Добавить новый столбец в большой таблице mysql

Каким будет самый быстрый способ добавить новый столбец в большую таблицу mysql?

В столбце "Добавить столбец" создается копия полной таблицы, а затем старая старая таблица создается. Пока этот процесс запущен, исходная таблица читаема, но все вставки и обновления застопорились.

На больших таблицах копия может занять много времени, есть ли способ ее уменьшить?

4b9b3361

Ответ 1

Вы застряли, выполняя ALTER TABLE. Лучшим способом эффективного решения этой проблемы является использование установки MASTER-MASTER.

Вы можете сначала изменить MASTER1 и просто использовать MASTER2 в процессе производства. Затем вы переключаетесь и делаете точную противоположность.

Ответ 2

Не используйте это в активной системе. Для активной системы сделайте это, пока вы берете систему для регулярного обслуживания.

Ответ 3

Предполагая таблицу INNODB:

  • Скопировать {существующая таблица} в {Новая таблица} без данных (только для схемы)
  • Использовать команды таблиц Alter для добавления/изменения столбцов в таблице NEW (должно работать со вспышкой)
  • существующая таблица MYSQLDUMP (с использованием транзакции single-transaction, -no-drop-table и т.д.) в файл
  • импортировать файл дампа в {New Table} (это может занять некоторое время, но старый стол еще можно использовать в течение этого периода)
  • в течение периода обслуживания, DROP {Старая таблица} и переименовать {Новая таблица} в предыдущую {Старую таблицу}.