web-dev-qa-db-ja.com

別のエンジンでMySQLデータベースをエクスポートする方法は?

MySQL Clusterをセットアップしています。 ENGINE=NDBCLUSTER、エンジンを指定してMySQLサーバーからデータベースをエクスポートするにはどうすればよいですか?

これを行う方法はありますか?

私のテーブルはすべてMYISAMです

3
tachomi

2つのmysqldumpを作成する必要があります

  • スキーマのみ、データなし
  • データのみ、スキーマなし

sed を使用して、mysqldumpはinformation_schemamysqlperformance_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

このスクリプトを実行します。 2つのファイルが必要です

  • schema_only.sql
    • すべてのCREATE TABLEコマンドが必要です
    • データがないはずです
    • すべてのENGINE=MyISAMENGINE=NDBCLUSTERと言うようになります
  • data_only.sql:テーブルをリロードするすべてのINSERT

MySQL NDB Clusterセットアップでschema_only.sql`スクリプトを実行します。

すべてのテーブルが作成されたことを確認してください。

次のような、テーブルの作成を妨げる特別なオプションがあることを確認してください。

  • FULLTEXTインデックス
  • ROW_FORMATオプション

問題が発生した場合は、いつでもschema_only.sqlを手動で編集して再読み込みできます。

すべてのテーブルが準備できたら、MySQL NDB Clusterでdata_only.sqlを実行します。

試してみる !!!

3
RolandoMySQLDBA