2011-10-17 15 views
1

外部のプログラムからMySQLデータベースへの書き込みを聞くことができるのだろうかと思います。私がしたいのは、あるサーバー上の変更を監視し、その変更をHTTP経由で別のサーバーに送信することです。MySQLの書き込みを聞く方法はありますか?

+0

レプリケーションについてはどうですか? –

答えて

1

可能な2つのソリューション:レプリケーション(可能な場合)またはdatabase triggersを使用します。

1

可能であれば、レプリケーション(Krisの言いたように)が最適なオプションです。しかし、何らかの理由で複製があなたのユースケースでは機能しないと仮定します。特に、HTTP経由で送信する必要があると言います。私は、各アップデートでHTTPを介して別のサーバーで実行されているRESTサービスを呼び出す行に沿って何かをする必要があると仮定します。これがあなたのユースケースである場合、レプリケーションは実行可能なオプションではない可能性があります。

1つのオプションがトリガーになります。私はMySQLで利用可能な関数を認識していないので、トリガー内からRESTサービスを直接呼び出すことができます。また、各データベースの更新ごとに大幅に待ち時間が増えるので、あなたが望むとは思えません。代わりに、気になるテーブルで更新、削除、挿入が発生するたびに、ローカルテーブルに記録するトリガを追加することをお勧めします。これは「監査」テーブルのようなものです。次に、これらの表を読み取るバッチ・プロセス/ cronジョブを作成し、別のサーバーで実行中の外部RESTサービスを同期的に呼び出します。

もう1つのオプションは、データベースへのアクセスに使用されている言語によって異なります。たとえば、Javaを使用している場合、使用できる「プロキシ」JDBCドライバがあります。このドライバを使用すると、すべてのアップデートにコードを挿入できます。

もう1つの方法は、バイナリログにログアウトするようにMySQLを設定することです。次に、バイナリログを解析し、上記のようにバッチ/ cronプロセスを使用することができますが、更新のための "監査"テーブルを読むのではなく、バイナリログを読むでしょう。データベースが両方の場所でまったく同じ場合は、複製をセットアップできます。それ以外の場合は、バイナリログを復元できるリモートサーバ(プラットフォームに依存)にバイナリログを取得するプロセスを考え出すことができます。 http://dev.mysql.com/doc/refman/5.0/en/binary-log.htmlを参照してください。

関連する問題