一、基本思路

  1.在主库上,为不同的从库建立各自的中间表

  2.主库与从库之间只对“中间表”进行复制操作

  3.从库上,“中间表”通过触发器,实现与“实体表”的数据同步

二、主库结构与配置

  主库结构:

  

  主库配置:

  

三、从库结构与配置

  (以其中的一个从库为例)

  从库结构:

  

  其中从库“中间表”上触发器内容如下:

use rel_db;drop trigger if exists slave_trigger_before_insert_staffinfo_middle_100;DELIMITER //
create trigger slave_trigger_before_insert_staffinfo_middle_100 before insert on staffinfo_middle_100  for each row
begininsert into staffinfo values(new.i_userid,new.v_username);
end;
//
DELIMITER  ;

  从库配置:

  

四、测试

  a)准备数据

    1.主库数据初始化

     

    2.从库数据初始化

     

    3.从库开启复制功能

     

  b)数据分发与复制

    4.主库分发数据

use rel_db;drop procedure if exists master_data_dispatch;DELIMITER //
create procedure master_data_dispatch()
begindeclare i int;declare v_name varchar(30);declare staffinfo_cursor CURSOR FOR SELECT i_userid,v_username FROM staffinfo;declare CONTINUE HANDLER FOR SQLSTATE '02000' SET i =null;OPEN staffinfo_cursor;FETCH staffinfo_cursor INTO i,v_name;WHILE ( i is not null) DOif (i>=100)and(i<200)and(not exists(select * from staffinfo_middle_100  where i_userid=i)) theninsert into staffinfo_middle_100 values(i,v_name);else if (i>=200)and(i<300)and(not exists(select * from staffinfo_middle_200  where i_userid=i)) theninsert into staffinfo_middle_200 values(i,v_name);end if;end if;FETCH staffinfo_cursor INTO i,v_name;END WHILE;CLOSE staffinfo_cursor;
end
//
DELIMITER ; call master_data_dispatch;

    5.从库“实体表”查询数据

     

五、说明

  1.一旦设置了replicate-do-db,后面的replicate-ignore-db将不起作用(待进一步验证)

replicate-do-table、replicate-ignore-table与之类似

  2.主库触发器中(已正确指定difiner)的插入操作无法被同步到从库:只是把触发器的

   调用语句写进了二进制文件,从库中不存 在该触发器。

  3.TRIGGER 一般来说是和引发的SQL是在同一个事务中的,也就是说,只要SQL或TRIGGER只

   要有一个出错(包括引发的自定义错误),系统就会自动ROLLBACK,不需要也不能在TRIGGER

   中写ROLLBACK语句.这个是和SQLSERVER不同的,SQLSERVER一般是自动COMMIT的.两

   种数据库机制不一样.如果想SQL中ROLLBACK,TRIGGER中COMMIT,就要用到自治事务了。

  4.自治事务可以把SQL的提交和回滚和TRIGGER中的提交和回滚分开。

转载于:https://www.cnblogs.com/edisonfeng/archive/2013/05/23/3095331.html

mysql通过中间表实现数据的“部分复制”相关推荐

  1. mysql 查询echar 折现数据

    注意mybatis字符串判断等于要用eq 返回的格式要用java拼接

  2. MySQL中如何通过修改表实现约束的添加与删除

    修改表实现约束的添加与删除 一.主键约束 添加主键约束 Alter table 表名 add primary key(列名) 例 将 emp 表中的 employee_id 修改为主键且自动增长: ...

  3. mysql 清空表怎么恢复_mysql怎么恢复删除的表?mysql找回误删表的数据方法

    下面小编就为大家带来一篇mysql 找回误删表的数据方法(必看).小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧. 有备份的话很简单,只需要生成一个最近备份的数据,然后用 ...

  4. 狄斯奎诺算法 c语言,图的邻接表实现迪杰斯特拉算法(C语言).doc

    图的邻接表实现迪杰斯特拉算法(C语言) /*迪杰斯特拉算法(狄斯奎诺算法)解决的是从源点到其它所有顶点的最短路径问题*/ //算法实现: #include #include #define MAX 2 ...

  5. dropdownlist三级联动怎么实现_一张表实现三级联动

    今天是七夕,七夕快乐,大家今天有没有人约呢? 相信大部分的Access玩家都是玩Excel的高手,很多的功能在Excel中实现对大家来说都是小菜,比如今天要讲的联动. 那么,我们现在就来讲一下在Acc ...

  6. 子窗体中组合框联动_一张表实现组合框联动

    嗨,大家中午好! 最近,有网友给我私信,想要一个联动的示例,一个有关于部门联动的操作. 其实关于联动的操作有很多,可以是组合框的联动,列表框联动,组合框与列表框也可以联动,哪怕是放到子窗体中也是可以联 ...

  7. php动态交叉表,PHP Array交叉表实现代码

    PHP Array交叉表实现代码 2019-04-09 16:40:24来源:易采站长站作者:王旭 如果使用sql语句做的话 工作量太大了,于是尝试自己写一个交叉表的类,好二话不说,我们看看代码 代码 ...

  8. 狄斯奎诺算法 c语言,图的邻接表实现迪杰斯特拉算法(C语言)

    图的邻接表实现迪杰斯特拉算法(C语言). 迪杰斯特拉算法(狄斯奎诺算法)解决的是从源点到其它所有顶点的最短路径问题. 图的邻接表实现迪杰斯特拉算法(C语言) /*迪杰斯特拉算法(狄斯奎诺算法)解决的是 ...

  9. 哈希表实现电话号码查询系统(c++)

    问题描述:设计哈希表实现电话号码查询系统,实现下列功能: (1) 假定每个记录有下列数据项:电话号码.用户名.地址. (2) 一是从数据文件old.txt(自己现行建好)中读入各项记录,二是由系统随机 ...

最新文章

  1. iOS的KVO实现剖析
  2. 仿桌面通知pnotify插件
  3. mockcpp的so加载失败问题
  4. CentOS通过日志反查入侵
  5. 2017-3-10 SQL server 数据库 T--SQL语句
  6. 孤灯php加密,PHP实现观察者模式
  7. 真机测试报错ERROR/AndroidRuntime: java.lang.RuntimeException: setParameters failed解决办法
  8. mysql 一致性读_MySQL半一致性读原理解析-从源码角度解析
  9. 进栈顺序为abcd则出栈顺序为_进栈顺序为a、b、c、d,则出栈顺序可以为?
  10. python函数的特性_Python学习(007)-函数的特性
  11. C语言编程方法技巧,C语言编程小技巧分享
  12. 神策分析:三大价值搭建精细化渠道管理体系
  13. CSTA协议英汉词汇
  14. 什么是芯片加速器 Accelerator
  15. 计算机CPU高温,电脑cpu温度高怎么办?别怕,三招搞定
  16. 微信小程相对图片路径_微信小程序加载本地图片时“../”的使用
  17. 情侣博客源码php,分享SEO WordPress的标题Title
  18. 计算机端口号65536,65536端口能不能用
  19. 关于智能共享出行,政界、学界和业界的专家都说了什么? | SMC 2018
  20. 水塔水位控制器单片机c语言,基于51单片机的水塔水位自动控制器的设计

热门文章

  1. APP开发两年的心得:App代码架构设计(1)
  2. 如果你在2018面试前端,那这篇文章最好看一看!
  3. set集合, 深浅拷贝, join, 列表和字典在循环中删除元素的问题, fromkeys( , )
  4. ansible的条件判断、迭代执行、tags
  5. C# 真正能发邮件的源码
  6. 人人都在说SaaS热,客服领域里的SaaS巨头可能长什么样呢
  7. 创建ssh 服务的镜像
  8. MVP模式在Android中的应用之图片展示选择功能的框架设计
  9. UE把环境变量Path改了
  10. Tomcat内存溢出解决办法