是否有可能创build一个MySQL存储过程,可以执行给定的插入或更新,然后也连接到第二台服务器,并运行相同的命令? 我想基本上调用一台服务器,并实时备份到第二台服务器。 除非你有一个链接或两个方便或另一个解决scheme,只是一个耶或ney就足够了。
感谢您的时间。 亚伦
你可以但只能在三个特定的条件下:
在另一台服务器上更新的第二个表是:
首先,确保在MySQL中启用了FEDERATED引擎
只要运行SHOW ENGINES;
如果FEDERATED存储引擎不存在或被禁用,请不要再阅读。
否则,可以通过将其写为INSERT AFTER和UPDATE AFTER触发器来尝试。
对于这个例子:
this_table数据库this_db that_table数据库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创build一个INSERT AFTER触发器:
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 ;
在第一台服务器上,创build一个针对this_db.this_table的UPDATE AFTER触发器:
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 ;
而已。
试一试!!!