今回は、本業のシステム開発関連のお題です。
PHP等で作られたシステムをリリースする際、開発環境のデータベースの変更箇所を、漏らさず本番環境のデータベースに反映するってのは、結構面倒で、ちょいちょいミスも発生しがちです。
エクスポートしたSQLファイルにDiffを絡めて差分を出す方法もありますが、Oracle謹製で、無料のMySQL Workbenchを使うと、いとも簡単にデータベース環境を比較し、その差分のSQLを出力することができます。恐らく決定版とも思える一番簡単な方法です。
開発環境のデータベースで修正した項目の内容を実行環境のデータベースに反映する作業というのは結構な頻度であると思います。
準備
事前に以下の3点を準備します。
- 環境のデータベースのエクスポートファイル
- 本番環境のデータベースのエクスポートファイル
- MySQL Workbench (本記事では、バージョン6.2を使用)
ちなみに、それぞれのデータベース環境のエクスポートファイルを作らなくても、直接MySQL Workbenchからそれぞれの環境に接続出来る状況であれば、直接繋げば良いと思いますが、本記事では、エクスポートファイルは、それぞれの環境からphpMyAdminを使って作成しています。
また、MySQL Workbenchは、公式ページからダウンロードして、インストールしていきます。
作業手順
まずは、MySQL Workbenchを起動し、メニューから「Database」→「Reverse Engineer…」を選択します。
データベースの接続を促す画面が出て来ますが、エクスポートファイルを使用するので、ここは「Cancel」します。
「MySQL Model」のタブが開いたら、「Database」→「Synchronize with Any Source…」を選択します。
一応、目を通して、「Next」を選択します。
開いた画面で、Script Fileの項目に上から「開発環境のエクスポートファイル」、「本番環境のデータベースファイル」、「差分ファイル」をそれぞれ入力し、「Next」を選択します。
ファイルの読み込みに成功したら、「Next」を選択します。
スキーマを選択を選択して、「Next」を選択します。
差異がある場合は、下の図の様に緑の矢印と黄色のビックリマークが表示されます。無視したい場合は、その部分を選択して「Ignore」を選択し、反映したい場合(初期値)は「Updatte Destination」を選択し、「Next」を選択します。
下の図のようなALTER文が表示され、「Execute」を選択すると表示されたALTER文が差分ファイルとして保存されます。
あっさりと、終わり
と、こんな感じで、非常に分かりやすいGUIで同期用のSQL文が作成できちゃいます。
後は、このSQL文を本番環境で流すだけです。(必要に応じて、スキーマ名等は変更する必要がありますが。)
では、よいMySQL生活を!