时间:2021-07-01 10:21:17 帮助过:7人阅读
mysqldump -uroot -S /tmp/mysql2.sock mysql > *.sql ; mysql -uroot -S /tmp/mysql2.sock db1 < *.sql
在导入之前先修改sql文件
vim *.sql
:1,$s/InnoDB/MyISAM/G
此方法在前两种方法之间做了一个平衡,它不转储整张表,或者一次性转换所有数据,而是创建一个新表,使用mysql的INSERT ... SELECT语法来转移数据。
如下:
mysql > CREATE TABLE innodb_table like myisam_table;
mysql > ALTER TABLE innodb_table ENGINE=InnoDB;
mysql > INSERT INTO innodb_table SELECT * FROM myisam_table;
如果数据量不大,这种办法效果不错,但是更高效的办法是增量地填充表,在填充每个增量数据块的时候都提交事务,这样就不会导致撤销日志变得过于庞大。假定id是主键,可以重复运行下列查询(每次逐次增大x和y的值),直至所有的数据都复制到新表。
mysql > START TRANSACTION;
mysql > INSERT INTO innodb_table SELECT * FROM myisam_table
-> WHERE id BETWEEN x AND y;
mysql > COMMIT;
转移操作完成后,源表扔会保留,可以在操作完成后删除,而此时,新表已被填充完毕。注意:如果有必要,请在转换时加锁源表,避免复制时数据不一致。
出自http://www.cnblogs.com/loveLearning/archive/2013/04/17/3025502.html
本文出自 “一个不想空想的人” 博客,请务必保留此出处http://jzzjw.blog.51cto.com/9921462/1656587
mysql数据库引擎更换
标签:服务器 数据库 mysql