cdr define repl 有若干属性,常用的属性有:
1、冲突解决策略,必须要和业务贴近,否则会出问题;
2、scope,通常用trans,我也实在想象不出来什么情况下用row;
3、ATS|RIS,最好是打印一下,否则数据不一致的情况下,不知道问题在哪里?
4、通常都是立即复制,不知道什么时候会选择滞后复制或定时复制;
5、建议选择fullrow,而不要使用只复制改变的列,这样带来的问题太多了,数据异常之后很难分析;
6、大对象类型和time series参与复制的时候再详细看吧,会非常复杂的。
定义复制的属性
master复制会强制要求所有复制参与者的表定义和源端表的定义是完全一样的;
classic复制不会检查源端和目标端的表结构的属性是否一致;
默认都是master复制。如果没有指定mastet server,则参与复制的第一个节点就是master server。
冲突解决策略和scope
scope选项
transaction
row
指定复制频率
--immed
--every=interval
--at=time
设置失败的事务日志
ATS:代表了失败的事务;
RIS:代表了失败的数据行;
三个条件:
- 设置ATS|RIS的目录;
- 在定义server的时候设置ATS|RIS;
- 在定义复制的时候设置ATS|RIS;
仅复制改变的列
如果想实现仅复制改变的列,需要在定义复制的时候设置--fullrow=n。此时ER仅仅复制ERKEY+改变的列。
upsert=update=>insert
此方式带来的缺陷:
- ER无法实现upsert;
- 不能使用SPL+Timestamp
- 不能使用update-anywhere
使用IEEE浮点类型
--floatieee
--floatcanon
启用触发器
复制的目标表上如果有触发器,默认的情况下,当复制的时候触发器是不生效的。通过参数--firetrigger可以激活触发器生效。
GL_USEGLU=1生效必须在数据库创建之前设置。
大对象的复制
默认的情况下不包含大对象的数据列发生改变,则包含大对象的列是不复制的;在设置了--alwaysRepLOBS=y之后,无论任何列发生变化,ER都进行整行复制。