MySQL存储过程是否能够插入/更新到远程备份MySQL服务器?

是否有可能创build一个MySQL存储过程,可以执行给定的插入或更新,然后也连接到第二台服务器,并运行相同的命令? 我想基本上调用一台服务器,并实时备份到第二台服务器。 除非你有一个链接或两个方便或另一个解决scheme,只是一个耶或ney就足够了。

感谢您的时间。 亚伦

你可以但只能在三个特定的条件下:

在另一台服务器上更新的第二个表是:

  1. 一个MyISAM表
  2. 与第一台服务器相同的表结构
  3. 在MySQL的第一台服务器上代表存储引擎FEDERATED

首先,确保在MySQL中启用了FEDERATED引擎
只要运行SHOW ENGINES;

如果FEDERATED存储引擎不存在或被禁用,请不要再阅读。

否则,可以通过将其写为INSERT AFTER和UPDATE AFTER触发器来尝试。

对于这个例子:

  • SERVER1具有表this_table数据库this_db
  • SERVER2具有带表that_table数据库that_table
  • SERVER2的IP地址为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; 
  1. 首先,确保表结构是MyISAM并且相同…
    在第一台服务器上,执行SHOW CREATE TABLE this_db.this_table\G
    在另一台服务器上,执行SHOW CREATE TABLE that_db.that_table\G

  2. 在第一台服务器上运行:

     CREATE TABLE this_db.that_table LIKE this_db.this_table; 
  3. 在第一台服务器上运行:

     ALTER TABLE this_db.that_table ENGINE=FEDERATED CONNECTION='mysql://10.20.30.250/that_db/that_table'; 
  4. 在第一台服务器上,针对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 ; 
  5. 在第一台服务器上,创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 ; 

而已。

试一试!!!