MySQL基于FEDERATED引擎实现不同服务器表数据同步
前提说明:
两个数据库test01 与 test。以下语句运行环境是在test01中(即本地库),test(远程库,需要随test01表中的数据更新、新增、删除动态变化的库)。
步骤:
1、在test01中执行命令
show ENGINES; 查看是否支持FEDERATED引擎。
如果是yes,则表示当前数据库支持该引擎,如果为no则需要配置该引擎,然后重启。
2、修改对应表的存储引擎,即将InnoDB引擎修改为FEDERATED引擎。
以下是navcat中修改存储引擎的步骤。
①、右键设计表
②、点击选项,链接参数类似
mysql://用户名:密码@ip:端口/数据库/目标表
例子:mysql://root:123456@43.138.184.211:3306/test/user
3、对将要动态远程更新的表创建触发器。(增、删、改三种类型的触发器)
说明:test01本地库,test远程库,user表名
-- 新增触发器 drop trigger if exists insert_user; create trigger insert_user after insert on user for each row begin insert into test.user values(test01.user); end; |
-- 删除触发器 drop trigger if exists delete_user; create trigger delete_user after delete on user for each row begin delete from test01.user where id=test.id; end; |
-- 修改触发器 drop trigger if exists update_user; create trigger update_user after update on user for each row begin update test.user as u set u.name = test01.name , u.phone = test01.phone where u.id=test01.id; -- 此处的sql需要更具表来动态编写字段。 end; |
如果有多个表都需要进行远程同步,则需要为每个表都创建触发器。