Mysql

如何用不同的ENGINE導出mysql數據庫?

  • September 7, 2017

我正在設置 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 中執行。

試一試 !!!

引用自:https://dba.stackexchange.com/questions/77665