tachomi Asked: 2014-09-26 10:47:51 +0800 CST2014-09-26 10:47:51 +0800 CST 2014-09-26 10:47:51 +0800 CST 如何用不同的ENGINE导出mysql数据库? 772 我正在设置 MySQL 集群。当它使用ENGINE=NDBCLUSTER时,我如何从指定 ENGINE 的 MySQL 服务器导出我的数据库? 有没有办法做到这一点? 我所有的桌子都是MYISAM mysql mysqldump 1 个回答 Voted Best Answer RolandoMySQLDBA 2014-09-26T13:25:42+08:002014-09-26T13:25:42+08:00 您应该创建两个 mysqldumps 仅架构,无数据 仅数据,无架构 使用sed, mysqldump 所有数据库除了information_schema, mysql,performance_schema 使用以下命令创建脚本 MYSQL_USER=root MYSQL_PASS=rootpassword MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}" SQL="SELECT GROUP_CONCAT(schema_name) FROM information_schema.schemata" SQL="${SQL} WHERE schema_name NOT IN ('information_schema','mysql','performance_schema')" DB_CSV=`mysql ${MYSQL_CONN} -ANe"${SQL}"` DBLIST=`echo "${DB_CSV}" | sed 's/,/ /g'` # # Schema Only, No Data # mysqldump ${MYSQL_CONN} -d -B ${DBLIST}|sed 's/ENGINE=MyISAM/ENGINE=NDBCLUSTER' > schema_only.sql # # Data Only, No Schema # mysqldump ${MYSQL_CONN} -t -B ${DBLIST} > data_only.sql 运行此脚本。你应该有两个文件 schema_only.sql 应该有所有的CREATE TABLE命令 应该没有数据 现在所有人ENGINE=MyISAM都会说ENGINE=NDBCLUSTER data_only.sql: 重新加载表的所有 INSERT 在 MySQL NDB Cluster 设置中运行 schema_only.sql 脚本。 检查以确保每个表都已创建。 确保现在有特殊选项阻止创建表,例如 FULLTEXT 索引 ROW_FORMAT 选项 如果出现问题,您可以随时手动编辑schema_only.sql并重新加载。 一旦每个表都到位,data_only.sql在 MySQL NDB Cluster 中运行。 试试看 !!!
您应该创建两个 mysqldumps
使用sed, mysqldump 所有数据库除了
information_schema
,mysql
,performance_schema
使用以下命令创建脚本
运行此脚本。你应该有两个文件
schema_only.sql
CREATE TABLE
命令ENGINE=MyISAM
都会说ENGINE=NDBCLUSTER
data_only.sql
: 重新加载表的所有 INSERT在 MySQL NDB Cluster 设置中运行 schema_only.sql 脚本。
检查以确保每个表都已创建。
确保现在有特殊选项阻止创建表,例如
如果出现问题,您可以随时手动编辑
schema_only.sql
并重新加载。一旦每个表都到位,
data_only.sql
在 MySQL NDB Cluster 中运行。试试看 !!!