MyISAM migrate to InnoDB
Привет,
В MySQL има много начини да се мигрира една таблица от MyISAM към InnoDB.
В този пост ще споделя, как се прави това чрез mysqldump. Този тип миграция се нарича offline, тъй като има downtime. Разбира се, ако имаме повече от един MySQL сървър, този downtime може да бъде избегнат. А като цяло, главната идята на тази схема, е rebuild-ване на индексите на таблицата(те) – тоест оптимизирането им.
Стъпките са следните :
- Бекъп на структурата на таблиците в базата.
- Бекъп на данните на самата база.
- Конвертиране на бекъпа със структурата от MyISAM към InnoDB.
- Изтриване и създаване на базата, и наливане на данните й на ново (постигайки така желаната оптимизация)
Стъпка едно:
Базата ни се казва crm – правим й два бекъпа – на структурата и на данните :
mysqldump -uroot -p --no-data -R --triggers crm > crm_schema.sql
и на данните :
mysqldump -uroot -p --no-create-info -R --triggers crm > crm_data.sql
Следва конвертирането към InnoDB:
sed -i.bak 's#MyISAM#InnoDB#g' crm_schema.sql
И последната стъпка : създаване на база на ново и наливане на информацията от двата бекъпа :
mysql -uroot -p -e "create database crm" mysql -uroot -p crm < crm_schema.sql mysql -uroot -p crm < crm_data.sql
Това е!
PS. Намерих много полезен линк за MySQL репликация без downtime. 10х BRYAN KENNEDY