猪八戒做网站怎么样,网站开发 周期,oou淘宝客图片wordpress模板,wordpress+tag+数字一、基本思路1.在主库上#xff0c;为不同的从库建立各自的中间表2.主库与从库之间只对“中间表”进行复制操作3.从库上#xff0c;“中间表”通过触发器#xff0c;实现与“实体表”的数据同步二、主库结构与配置主库结构#xff1a;主库配置#xff1a;三、从库结构与配…一、基本思路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 rowbegininsert 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 (i100)and(i200)and(not exists(select * from staffinfo_middle_100 where i_useridi)) theninsert into staffinfo_middle_100 values(i,v_name);else if (i200)and(i300)and(not exists(select * from staffinfo_middle_200 where i_useridi)) 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)的插入操作无法被同步到从库只是把触发器的调用语句写进了二进制文件,从库中不存 在该触发器mysql通过中间表实现数据的“部分复制”》(https://www.unjs.com)。3.TRIGGER 一般来说是和引发的SQL是在同一个事务中的,也就是说,只要SQL或TRIGGER只要有一个出错(包括引发的自定义错误),系统就会自动ROLLBACK,不需要也不能在TRIGGER中写ROLLBACK语句.这个是和SQLSERVER不同的,SQLSERVER一般是自动COMMIT的.两种数据库机制不一样.如果想SQL中ROLLBACK,TRIGGER中COMMIT,就要用到自治事务了。4.自治事务可以把SQL的提交和回滚和TRIGGER中的提交和回滚分开。