1. Perl
  2. モジュール
  3. here

MySQL::Diff - MySQLのデータベースの差分を調べる

MySQLのデータベースの差分から、差分をなくすようなコマンドを自動生成するツールを探していたら、MySQL::Diffというモジュールを発見した。このモジュールにはmysqldiffというコマンドラインツールがついているので、通常はこちらを使うのが良いみたい。

開発環境と本番環境の差分を埋めるのにとても役立つ。すべての差分を表示してくれるわけではなく、テーブル定義に関する部分だけのようなので、トリガやインデックスについては、自分で設定する必要があるようです。

ドキュメントにはオプションの説明がないようなので、--helpコマンドで確認できる。

mysqldiff --help

まずデータベースのテーブル定義をmysqldumpで取得しましょう。今は開発環境にいて開発環境のデータベースサーバーに変更を加えていると仮定します。

mysqldump -d -uken db > db_devel

本番環境にはsshで接続できると仮定しましょう。そうするとsshでコマンドを実行してリダイレクトしましょう。

ssh ken@remotehost mysqldump -d -uken db > db_production

mysqldiffでは一時的にデータベースを利用するので、データベースの情報を指定する必要があります。

mysqldiff  --host=localhost --user=ken --password=ppp db_production db_devel 

するとdb_productionをdb_develにあわせるためのコマンドが出力されます。

## mysqldiff 0.43
##
## Run on Sun Nov 27 15:57:54 2011
## Options: user=root, debug=0
##
## --- file: db_production
## +++ file: db_devel

CREATE TABLE book (
  id int(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

db_productionとdb_develの順番を間違えると、逆のコマンドが生成されますので、注意してください。

業務に役立つPerl

Perlテキスト処理のエッセンス

PerlでポータブルなLinuxファイル管理入門

ITエンジニアの求人情報など

 ITエンジニアの求人情報・Webサービス・ソフトウェア・スクールなどの情報。

システム開発のお問い合わせ