Tutorial convert database myisam ke innodb di mysql

1
1148

Halo sobat sekolahlinux, kali ini saya coba memberikan artikel singkat tentang bagaimana cara convert database myisam menjadi innodb pada mysql

Cara No.1

untuk melihat jenis table pada database apakah myisam atau sudah innodb bisa dengan cara dibawah (ganti yourdb dengan database yang akan dilihat)

SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES where TABLE_SCHEMA = 'yourdb';

selanjutnya kita akan dump schema databasenya saja (ganti yourdb dengan database yang akan didump)

mysqldump -uroot -p --no-data -R --triggers yourdb > yourdb_schema.sql

selanjutnya kita akan dump  data databasenya saja (ganti yourdb dengan database yang akan didump)

mysqldump --replace -uroot -p --no-create-info -R --triggers mydb > mydb_data.sql

selanjutnya kita akan convert schema databasenya dari myisam ke innodb (ganti yourdb dengan hasil dump schema database yang akan diconvert)

sed -i.bak 's#MyISAM#innodb#g' yourdb_schema.sql

jika sudah selanjutnya restore database yang sudah kita convert dengan cara diatas (ganti yourdb dengan database yang akan direstore)

# jika database blum ada silahkan buat databasenya dahulu
mysql -uroot -p -e "create database yourdb" 
# restore schema schema
mysql -uroot -p yourdb < yourdb_schema.sql 
#restore data
mysql -uroot -p yourdb < yourdb_data.sql

untuk melihat apakah table databasenya sudah berubah menjadi innodb atau belum bisa dengan perintah dibawah

SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES where TABLE_SCHEMA = 'dbname';

 

Cara No.2

convert semua table dalam satu database

mysql -uroot -p -e "SELECT concat('ALTER TABLE ',TABLE_NAME,' ENGINE=InnoDB;') 
FROM Information_schema.TABLES 
WHERE TABLE_SCHEMA = 'yourdb' AND ENGINE = 'MyISAM' AND TABLE_TYPE='BASE TABLE'" | tail -n+2 > yourdb.sql

restore hasil convert diatas

mysql -uroot -p -f yourdb < yourdb.sql

convert semua table disemua database

mysql -uroot -p -e "SELECT concat('ALTER TABLE \`',TABLE_SCHEMA,'\`.',TABLE_NAME,' ENGINE=InnoDB;') 
FROM Information_schema.TABLES 
WHERE TABLE_SCHEMA != 'mysql' AND ENGINE = 'MyISAM' AND TABLE_TYPE='BASE TABLE'" | tail -n+2 > alldb.sql

restore hasil convert diatas

mysql -uroot -p -f < alldb.sql

sumber:

  • https://easyengine.io/tutorials/mysql/innodb-to-myisam/
  • https://easyengine.io/tutorials/mysql/myisam-to-innodb/

sekian tutorial kali ini, semoga bermanfaat.

1 COMMENT