特定の挿入または更新を実行できるMySQLストアドプロシージャを作成してから、2番目のサーバーに接続して同じコマンドを実行することは可能ですか?基本的に1台のサーバーを呼び出し、リアルタイムで2台目のサーバーにバックアップしたいと思います。あなたがリンクまたは2つの便利なまたは別の解決策を持っていない限り、ただのヤーまたはニーで十分です。
お時間をいただきありがとうございます。アーロン
次の3つの特定の条件下でのみ可能です。
別のサーバーで更新している2番目のテーブルは次のとおりです。
まず、MySQLでFEDERATEDエンジンが有効になっていることを確認しますSHOW ENGINES;
を実行するだけです
FEDERATEDストレージエンジンが存在しないか無効になっている場合は、これ以上読みません。
それ以外の場合は、INSERTAFTERおよびUPDATEAFTERトリガーとして書き込むことでこれを試すことができます。
この例の場合:
this_db
とテーブルthis_table
がありますthat_db
とテーブルthat_table
があります10.20.30.250
テーブル構造は次のようになります。
CREATE TABLE `this _table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`fruit` char(10) NOT NULL,
`number` int(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;
まず、テーブル構造がMyISAMで同一であることを確認してください...
最初のサーバーで、SHOW CREATE TABLE this_db.this_table\G
を実行します
他のサーバーで、SHOW CREATE TABLE that_db.that_table\G
を実行します
最初のサーバーで、これを実行します。
CREATE TABLE this_db.that_table LIKE this_db.this_table;
最初のサーバーで、これを実行します。
ALTER TABLE this_db.that_table ENGINE=FEDERATED
CONNECTION='mysql://10.20.30.250/that_db/that_table';
最初のサーバーで、this_db.this_table
に対してINSERTAFTERトリガーを作成します。
use this_db
DELIMITER $$
CREATE TRIGGER this_table afterinsert AFTER INSERT ON this_table
FOR EACH ROW
INSERT INTO that_table (id,fruit,number)
VALUES (NEW.id,NEW.fruit,NEW.number);
$$
DELIMITER ;
最初のサーバーで、this_db.this_table
に対してUPDATEAFTERトリガーを作成します。
use this_db
DELIMITER $$
CREATE TRIGGER this_table afterupdate AFTER UPDATE ON this_table
FOR EACH ROW
UPDATE that_table SET fruit=NEW.fruit,number=NEW.number WHERE id=OLD.id;
$$
DELIMITER ;
それでおしまい。
試してみる!!!