Mysql多数据库之间表简单同步

方案:触发器

优点: 工作效率和开发效率上有很大的提高

缺点: 增加数据库服务器的开销

在同一个mysql实例中:

在数据库sakila中创建insert触发器
use sakila;
mysql> delimiter $$
mysql> create trigger insert_trigger after insert on user_test for each row
 -> BEGIN
 ->        insert into test.user_test(id,username_test) VALUES (new.id,new.username_test);
 ->        insert into world.user_test(id,username_test) VALUES (new.id,new.username_test);
 -> end $$

根据sql可以看出:为user_test表的每一行创建一个名为insert_trigger的【insert 插入】触发器,动作是:插入到test数据库的user_test表(id,username_test) 值为新值,第二行同义。当需要多个数据库同步时增加这里的sql即可。

在数据库sakila中创建update触发器
use sakila;
mysql> delimiter $$
mysql> create trigger update_trigger after update on user_test for each row
 -> begin
 ->        update test.user_test set username_test = new.username_test where id = new.id;
 ->        update world.user_test set username_test = new.username_test where id = new.id;
 ->    end $$

大意相同,不过是insert变为update

参考文章:mysql同一实例多个数据库数据同步_怎么配置mysql同步多个库_木一番的博客-CSDN博客

那如果说是不同的mysql实例呢?

解决方案:Federated数据引擎

检查本地mysql是否支持Federated数据引擎

执行 show ENGINES; 语句

Support值为NO,说明未支持该引擎。需修改mysql的配置文件进行设置。

找到mysql的配置文件,在[mysqld]后添加federated即可;添加完成,重启mysql服务再次查询该引擎状态为YES即为支持。

在本地数据库中创建一个可以映射远程表数据的桥接表 [结构与远程服务器一致,下面叫本地]

注意:该表与远程服务器中需要同步数据的表结构一致(创建表结构即可,表数据会映射过来)

在原来的表结构后加上:

ENGINE=FEDERATED  CONNECTION = 'mysql://user:password@ip:port/databaseName/tableName';

参考:

Mysql 触发器-两个数据库的表数据同步-步骤与问题解决_双数据库同步_瑶山的博客-CSDN博客

mysql 触发器同步远程服务器上数据库 - 创客未来 - 博客园 (cnblogs.com)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值