MySQL:テーブル定義とマスタデータだけ、本番環境から試験環境にコピーする方法

結構どうでもいい系なんですけど、いつもMySQLコマンドのオプションを忘れるのでメモ。

運用中もしくはステージングのDBから全テーブルの定義とマスター類データのみ抽出して
新たなDBを用意するときの簡易手順。
トランザクション系のテーブルからデータを持ってきたく無い時とか用。

手順的には・・・

  1. mysqldumpでデータベースから定義だけ抜く(-dオプション)
  2. mysqldumpでマスター類データのみ抜く(no-create-infoオプション&tablesオプション)
  3. DB新規作成
  4. 定義情報流し込み
  5. マスターデータ流し込み
[root@hoge ~]# mysqldump -uroot [dbname] -d > /hoge/db_ddl.sql    ## 1.定義だけ抜く
[root@hoge ~]# mysqldump -uroot [dbname] --no-create-info --tables [マスターテーブル類 ※対象を半角スペース区切りで列挙] > /hoge/db_masterdata.sql  ## 2.マスターデータだけ抜く
[root@hoge ~]# mysqladmin create newDB  ## 3.DB新規作成
[root@hoge ~]# cat /hoge/db_ddl.sql | mysql -uroot newDB  ## 4.定義情報流し込み
[root@hoge ~]# cat /hoge/db_masterdata.sql | mysql -uroot newDB  ## 5.マスターデータ流し込み

試験環境を作る時、以外と便利。