0

私のシステムではアクションを実行し、レポートのためにそのアクションを別のサーバー(必要に応じてスタースキーマ)に記録します。明らかに、アクションの更新/挿入をロギングと同じトランザクションに含める必要があります。
それで、同じトランザクションで2つの異なるサーバーに2つの異なるsqlを含める方法はありますか?
今、私はそれをコードレベル(php)で管理しています

4

3 に答える 3

0

複雑な方法は次のとおりです。

  1. 同じサーバー上に同じテーブルを作成します。
  2. このサーバーをマスターにする
  3. このテーブルにレプリカを設定する

そのログテーブルをそれほど大きくしたくない場合は、次のことができます。

  1. 最初のテーブル名セット_tmp
  2. 挿入時にスレーブlog_tmpトリガーで作成し、データをログテーブルにコピーするように更新します
  3. しばらくして、マスターのlog_tmpからいくつかのデータを削除します。
于 2010-06-21T14:55:43.033 に答える
0

分散トランザクションコーディネーターを使用できます。

DTCの構成。

于 2010-06-21T13:33:27.823 に答える
0

これは、MySQLだけでは不可能です。MySQLにはフェデレーションストレージエンジン(つまり、他のMySQLサーバーへのリモートアクセス)がありますが、トランザクションはサポートされていません。つまり、MySQLを介してマルチサーバートランザクションを直接調整することはできません。MySQLはInnoDBテーブルのXA をサポートしているため、MySQLで外部トランザクションマネージャーを使用できますが、PHPはXAをサポートしていません。通常、これはエンタープライズレベルの機能と見なされ、JavaまたはC#/。NETを使用して実装します。

于 2010-06-21T14:21:00.270 に答える