使用MyDumper迁移InnoDB到TokuDB

最近几台微信买家相关数据库数据量增长迅猛,空间紧张,因而考虑迁移到压缩率超高的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文件分离

<span class="hljs-title" style="font-weight: bold; color: #880000;">mkdir</span><span style="color: #000000;"> /</span><span class="hljs-typedef" style="color: #000000;"><span class="hljs-keyword" style="font-weight: bold;">data</span>/dump_schema 
</span><span class="hljs-title" style="font-weight: bold; color: #880000;">mv</span><span style="color: #000000;"> /</span><span class="hljs-typedef" style="color: #000000;"><span class="hljs-keyword" style="font-weight: bold;">data</span>/dump/*schema* /<span class="hljs-keyword" style="font-weight: bold;">data</span>/dump_schema 
</span><span class="hljs-title" style="font-weight: bold; color: #880000;">mv</span><span style="color: #000000;"> /</span><span class="hljs-typedef" style="color: #000000;"><span class="hljs-keyword" style="font-weight: bold;">data</span>/dump /<span class="hljs-keyword" style="font-weight: bold;">data</span>/dump_data 
</span><span class="hljs-title" style="font-weight: bold; color: #880000;">cp</span><span style="color: #000000;"> /</span><span class="hljs-typedef" style="color: #000000;"><span class="hljs-keyword" style="font-weight: bold;">data</span>/dump/metadata /<span class="hljs-keyword" style="font-weight: bold;">data</span>/dump_schema </span>

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