Mysql
如何用不同的ENGINE導出mysql數據庫?
我正在設置 MySQL 集群。當它使用
ENGINE=NDBCLUSTER
時,我如何從指定 ENGINE 的 MySQL 伺服器導出我的數據庫?有沒有辦法做到這一點?
我所有的桌子都是
MYISAM
您應該創建兩個 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 中執行。試一試 !!!