MySQLで、開発環境と本番環境を同期する一番簡単な方法

今回は、本業のシステム開発関連のお題です。

PHP等で作られたシステムをリリースする際、開発環境のデータベースの変更箇所を、漏らさず本番環境のデータベースに反映するってのは、結構面倒で、ちょいちょいミスも発生しがちです。

エクスポートしたSQLファイルにDiffを絡めて差分を出す方法もありますが、Oracle謹製で、無料のMySQL Workbenchを使うと、いとも簡単にデータベース環境を比較し、その差分のSQLを出力することができます。恐らく決定版とも思える一番簡単な方法です。

開発環境のデータベースで修正した項目の内容を実行環境のデータベースに反映する作業というのは結構な頻度であると思います。

準備

事前に以下の3点を準備します。

  • 環境のデータベースのエクスポートファイル
  • 本番環境のデータベースのエクスポートファイル
  • MySQL Workbench (本記事では、バージョン6.2を使用)

ちなみに、それぞれのデータベース環境のエクスポートファイルを作らなくても、直接MySQL Workbenchからそれぞれの環境に接続出来る状況であれば、直接繋げば良いと思いますが、本記事では、エクスポートファイルは、それぞれの環境からphpMyAdminを使って作成しています。
また、MySQL Workbenchは、公式ページからダウンロードして、インストールしていきます。

作業手順

まずは、MySQL Workbenchを起動し、メニューから「Database」→「Reverse Engineer…」を選択します。

無題クリップ_053116_034207_PM

データベースの接続を促す画面が出て来ますが、エクスポートファイルを使用するので、ここは「Cancel」します。

スクリーンショット_053116_034817_PM

スポンサードリンク

「MySQL Model」のタブが開いたら、「Database」→「Synchronize with Any Source…」を選択します。

無題クリップ_053116_035257_PM

一応、目を通して、「Next」を選択します。

スクリーンショット_053116_035652_PM

開いた画面で、Script Fileの項目に上から「開発環境のエクスポートファイル」、「本番環境のデータベースファイル」、「差分ファイル」をそれぞれ入力し、「Next」を選択します。

スクリーンショット_053116_040943_PM

ファイルの読み込みに成功したら、「Next」を選択します。

スクリーンショット_053116_041718_PM

スキーマを選択を選択して、「Next」を選択します。

スクリーンショット_053116_042424_PM

差異がある場合は、下の図の様に緑の矢印と黄色のビックリマークが表示されます。無視したい場合は、その部分を選択して「Ignore」を選択し、反映したい場合(初期値)は「Updatte Destination」を選択し、「Next」を選択します。

スクリーンショット_053116_053047_PM

下の図のようなALTER文が表示され、「Execute」を選択すると表示されたALTER文が差分ファイルとして保存されます。

スクリーンショット_053116_053340_PM

あっさりと、終わり

と、こんな感じで、非常に分かりやすいGUIで同期用のSQL文が作成できちゃいます。

後は、このSQL文を本番環境で流すだけです。(必要に応じて、スキーマ名等は変更する必要がありますが。)

では、よいMySQL生活を!