MyISAM migrate to InnoDB

MyISAM migrate to InnoDB using mysqldump

Привет,

В MySQL има много начини да се мигрира една таблица от MyISAM към InnoDB.

В този пост ще споделя, как се прави това чрез mysqldump.  Този тип миграция се нарича offline, тъй като има downtime. Разбира се, ако имаме повече от един MySQL сървър, този downtime може да бъде избегнат. А като цяло, главната идята на тази схема, е rebuild-ване на индексите на таблицата(те) – тоест оптимизирането им.

Стъпките са следните :

  1. Бекъп на структурата на таблиците в базата.
  2. Бекъп на данните на самата база.
  3. Конвертиране на бекъпа със структурата от MyISAM към InnoDB.
  4. Изтриване и създаване на базата, и наливане на данните й на ново (постигайки така желаната оптимизация)

Стъпка едно:

Базата ни се казва 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