Mysql: медленный alter?

Привет, ребята. Есть необходимость на продакшене в таблицу, в которой 1М записей вставить еще одно поле.

Но alter в mysql копирует всю таблицу, из-за чего такая операция очень длительная. Сервак — боевой, простой — недопустим. Может есть возможности добавить еще одно поле в таблицу так, чтобы не блокировать работу сайта? Что подскажете?


Debian 5, Mysql 5.1,

2gb ram, Intel® Atom(TM) CPU D510 @ 1.66GHz

+ подключен сервер репликаций ( слейв )
  • Вопрос задан
  • 2443 просмотра
Пригласить эксперта
Ответы на вопрос 2
@pwlnw
Раз уж ты освоил обычную репликацию, то разберись тогда и с репликацией master-master. Поочередно на каждом сервере сделай ALTER. Во время работы ALTER направляй запросы на другой сервер.

>2gb ram, Intel® Atom(TM) CPU D510 @ 1.66GHz
>Сервак — боевой, простой — недопустим.

Не особо верится, кстати.
Ответ написан
CREATE TABLE new_name (new Layout); 

INSERT INTO new_name 
SELECT (column_list) FROM old_name; 

RENAME TABLE old_name TO to_delete_name, new_name TO old_name;

Суть в том, что можно скопировать все данные в новую таблицу. Минус – за это время лучше не писать новые данные, т.к. они могут не попасть в копию.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы