最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

mysql通过中间表实现数据的“部分复制”_MySQL

来源:动视网 责编:小采 时间:2020-11-09 18:36:11
文档

mysql通过中间表实现数据的“部分复制”_MySQL

mysql通过中间表实现数据的部分复制_MySQL:bitsCN.com mysql通过中间表实现数据的“部分复制”一、基本思路1.在主库上,为不同的从库建立各自的中间表2.主库与从库之间只对“中间表”进行复制操作3.从库上,“中间表”通过触发器,实现与“实体表&
推荐度:
导读mysql通过中间表实现数据的部分复制_MySQL:bitsCN.com mysql通过中间表实现数据的“部分复制”一、基本思路1.在主库上,为不同的从库建立各自的中间表2.主库与从库之间只对“中间表”进行复制操作3.从库上,“中间表”通过触发器,实现与“实体表&
 bitsCN.com

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

一、基本思路
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
begin
insert 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()
begin
declare 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) DO
if (i>=100)and(i<200)and(not exists(select * from staffinfo_middle_100 where i_userid=i)) then
insert 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)) then
insert 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中的提交和回滚分开。

bitsCN.com

文档

mysql通过中间表实现数据的“部分复制”_MySQL

mysql通过中间表实现数据的部分复制_MySQL:bitsCN.com mysql通过中间表实现数据的“部分复制”一、基本思路1.在主库上,为不同的从库建立各自的中间表2.主库与从库之间只对“中间表”进行复制操作3.从库上,“中间表”通过触发器,实现与“实体表&
推荐度:
标签: 复制 的数据 数据
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top