最近几台微信买家相关数据库数据量增长迅猛,空间紧张,因而考虑迁移到压缩率超高的TokuDB,一个比较流行的迁移方法是用mysqldump导出同时修改InnoDB字符串到TokuDB:
mysqldump ...... | sed -e 's/^) ENGINE=MyISAM/) ENGINE=InnoDB/' > dump.sql
但这样导出的单一文件恢复时太慢,虽然有各种第三方方法能使mysqldump导出多个文件,但复杂了些;而mydumper因为并行特性是一个更理想的迁移工具,但0.6之前因为锁时间太长导致实际不可用,而0.6后大大降低了锁时间,因而这次我尝试使用MyDumper来迁移InnoDB到TokuDB,我的思路是:
因为MyDumper导出的文件是schema和data分开的,因而可以先导入schema,修改成TokuDB引擎后再将数据导入
以下是步骤:
1.导出文件
mydumper ...... -o /data/dump
2.将schema和data文件分离
mkdir /data/dump_schema
mv /data/dump/*schema* /data/dump_schema
mv /data/dump /data/dump_data
cp /data/dump/metadata /data/dump_schema
3.导入schema
myloader ...... -d /data/dump_schema
4.转换InnoDB到TokuDB
pt-find ...... --engine InnoDB --exec "ALTER TABLE %D.%N ENGINE=TokuDB"
5.导入data
myloader ...... -d /data/dump_data