当ブログのおすすめ記事はこちら!
  • 【学生でもできる】エンジニアとして海外ノマドワークをする方法と実際に感じたこと

mysqldumpを使って検証環境と本番環境のDBスキーマチェック

SHARE

mysqldumpを使って検証環境と本番環境のDBスキーマチェック



こんにちはTakumi(@ynwa_ynwa_0826)です。
デプロイを行う際に、検証環境のDBはスキーマをいじったけれど本番をいじるのを忘れていたからSQLエラーがわんさか出た、、、、みたいなことってありませんか?
他にもマスターテーブルの内容を書き換えるのを忘れていたから、エラーが発生したってこともあるかと思います。

これを防ぐためにデプロイを行う際に両者のDBスキーマをチェックする処理をシェルスクリプトで書いていこうと思います。

mysqldumpコマンドでそれぞれを生成してからsedで比較

 mysqldump -h $DEV_ADDRESS --no-data -u${DEV_DB_USER} -p${DEV_DB_PASSWORD} database_name > $DEV_DUMP_PATH

-hでホストの指定、-pでパスワード、-uでユーザ名
とこのように指定してあげてください。
これでスキーマの保存ができるようになりますね。
–no-dataでデータは除外させています。

database_nameのあとにテーブルを書けば、テーブルの指定もできます。
これでマスターテーブルを指定しておけば、その参照もできますね!!

このコード2つ使って2つdumpさせたらsedコマンドで比較させましょう。

sed -i '/ENGINE=InnoDB/d;/*/d;/--/d;/^\s*$/d' $DEV_DUMP_PATH
sed -i '/ENGINE=InnoDB/d;/*/d;/--/d;/^\s*$/d' $PROD_DUMP_PATH

DIFF=$(diff $DEV_DUMP_PATH $PROD_DUMP_PATH)

もしDIFFがから出ない場合は違いが発生しているということになります。
以上です。



スポンサードリンク


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です