先月末に数学のテストを終えました。
C単位は降ってきてほしいと切に願います。
あと、中間発表を控えてます。
背景
ステージング環境のDBをプロダクション環境のDBへインポートする際に
レコードを消すわけには行かず
・プロダクションにないテーブルは作成
・すでに存在するテーブルはステージングとプロダクションの差異のALTER文を作成して実行
ということを実現したいと思っていたところ
・Workbench
・Schemea Sync
・手動
のどれかが解決方法らしい。
Workbenchを使うとうまく行かず、Schema Syncは導入が面倒、手動も面倒ということで
シェルスクリプトで作ってみた。
schemaSync – シェルスクリプト
https://gist.github.com/rluisr/ace0513d0251d6ceb2a093cf23b6dafb
できること
・宛先DBにないテーブルを作成
・宛先DBに既にあるテーブルはソース元と差異を取得してALTER文を作成、実行
・AUTO_INCREMENTの値は不変
できないこと
・SSL
・テーブルオプション(文字コード等)の変更はされない
必要なコマンド
・mysql
・mysqldump
・mysqldiff
前準備
宛先テーブルにはレコードを追加しておきます。
実行する
./schemaSync.sh --src-host "localhost" --src-user "root" --src-pass "" --src-db "source" --dst-host "localhost" --dst-user "root" --dst-pass "" --dst-db "destination"
最後にALTER文1つずつに確認画面がでるので
確認しながら実行できまできます。
どちらにも存在したusers
テーブルはレコードが削除されることなく
ソースで追加したmodify
カラムが追加されました。
割りと実現したいことはできたかも。
他のエラー文を残したまま、WARNING文(パスワードをコマンドに書くな)無視はいつかやろうと思う。
本番環境で使ってみようと思います。
あ、これを使って生じた如何なる問題も僕は責任を持ちません。