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

MySql ALTER TABLE о продуктовых базах данных - любые вопросы?

У меня около 100 баз данных (одинаковая структура, только на разных серверах) с примерно десятком таблиц. Большинство таблиц небольшие (скажем, 100 МБ или меньше). Есть случайные крайние случаи, когда таблица может быть большой (скажем, 4 ГБ +).

Мне нужно запустить серию команд ALTER TABLE примерно для каждой таблицы в каждой базе данных. В основном добавление некоторых строк в структуру, но несколько изменений, таких как изменение строки из varchar в tinytext (или наоборот). Кроме того, добавление нескольких новых индексов (но индексация новых строк, а не существующих, поэтому предполагая, что это не большая сделка).

Мне интересно, как это безопасно, и если есть какие-то лучшие методы для этого процесса.

Во-первых, есть ли вероятность, что я могу повредить или удалить данные в таблицах. Я подозреваю, что нет, но нужно быть уверенным.

Во-вторых, я полагаю, что для больших таблиц (4 ГБ +) это может быть от нескольких минут до нескольких часов?

Все, что я должен знать о выполнении команд ALTER TABLE в производственной базе данных, мне интересно узнать.

Если он знает какое-либо значение, я планирую выпустить команды через PHPMYADMIN по большей части.

Спасибо -

4b9b3361

Ответ 1

Прежде чем применять какие-либо смены, сделайте резервные копии. Два способа сделать это: mysqldump все или вы можете скопировать папку данных mysql.

Во-вторых, вы можете использовать mysql из командной строки. PHPMyAdmin, вероятно, отключится. Большинство серверов PHP имеют тайм-аут менее 10 минут. Или вы случайно закроете браузер.

Ответ 2

Вот мое предложение.

  • Вы можете выполнить провал приложений (убедитесь, что нет соединений на всех dbs).

  • Вы можете создавать индексы с помощью "create index statements". Не используйте команды alter table add index.

  • Сделайте все это с помощью script like (сохраните все эти утверждения в файле и запустите из источника).

  • Похоже, размеры таблиц очень малы, поэтому он не будет создавать головную боль.