本例假设你的MySQL和MemSQL运行在同一台机器上,MySQL在3306端口,MemSQL在3307端口,同时也假设两者都可以访问通过没有密码的根帐户。使用mysqldump工具进行移植mysqldump是MySQL客户端最常用的数据备份工具之一。它会生成一些建表和插入数据的SQL语句,所以恢复数据库最方便。在您决定将数据迁移到MemSQL之前,有几点需要注意:大多数MySQL存储引擎使用B树来存储索引,而MemSQL使用单向无锁跳过列表或无锁哈希表面。选择正确的索引数据结构可以显着提高应用程序性能。其中哈希表主要适用于key-value查找,跳跃表特别适用于复杂范围扫描排序(ORDERBY)。因此在迁移之前,您必须重新访问您的表定义并确定您是否可以使用MemSQL特定的优化。默认的BTREE表示法将转换为升序跳过列表。如果需要对某列进行双向范围扫描,可以考虑同时添加升序和降序索引。有关MemSQL索引的更多信息,请参阅索引。因为代码生成,MemSQL***加载数据库结构比MySQL慢,因为MemSQL***加载表结构时,会生成并编译代码实现表结构,包括内存分配、插入、删除、和迭代方法等。一旦表被编译,MemSQL将在整个运行时直接使用编译代码。mysqldump生成的INSERT语句也会专门编译一次。mysqldump会生成一些MemSQL不支持的SQL语句,例如不支持UNIQUE_CHECKS。为了更好地支持mysqldump,MemSQL只对这些不支持的语句发出警告。您可以通过调整warn_level变量来控制错误级别。有关详细信息,请参阅不支持的功能。某些CREATETABLE语句可能会被完全阻止执行。如果遇到这种问题,只能手动修改表的定义SQL。如果你运行MemSQL的机器没有足够的内存来加载数据,服务器会为INSERT语句报告内存不足的错误信息,在这种情况下你只能安装更多的内存。如果将现有的memsqlbin目录复制到新机器,MemSQL将继续使用已编译的表定义和INSERT语句。如果你使用的是MemSQL开发版,超过了10G的限制,可以参考memsql.com/next升级方法。建议您将数据库结构定义和数据存储在单独的文件中,以便您可以在需要时调整表结构。可以使用以下命令分别导出数据库结构和数据文件:$mysqldump-h127.0.0.1-uroot-B[databasename]--no-data>schema.sql$mysqldump-h127.0.0.1-uroot-B[databasename]--no-create-info>data.sql然后通过以下方法导入:$mysql-h127.0.0.1-uroot-P3307
