DRS支持直接同步不同schema的表到同一个schema吗
DRS支持直接同步不同schema的表到同一个schema,表不可以冲突。
DRS实时同步支持使用Online DDL工具吗
DRS MySQL到MySQL的表级增量同步支持使用Online DDL工具进行加减列的操作,需注意以下几点:
因为DRS同步机制和工具的冲突,在同步任务的“设置同步”页面,选择对象同步范围时,不能勾选“增量DDL”项。
使用Online DDL工具进行加列操作时,需先在目标库执行,然后在源库执行。
使用Online DDL工具进行减列操作时,需先在源库执行,再在目标库执行。
常见Online DDL工具:
pt-online-schema-change
gh-ost
源库Oracle为RAC集群时,为什么建议使用SCAN IP连接
源库Oracle为RAC集群时,建议使用SCAN IP+ SERVICE_NAMES方式创建任务,因为SCAN IP具有更强的容错性,更好的负载能力,更快的同步体验。
如果需要使用SCAN IP,需要保证SCAN IP与源库的所有VIP互通,否则无法通过测试连接检查。
若不使用SCAN IP,可以使用某一节点的VIP,其他节点异常不影响同步。
关于SCAN IP的说明,可参考Oracle官网文档。
源库Oracle补全日志检查方法
Oracle数据库在Physical Standby模式下,日志会从主库直接复制,而自身不产生任何日志。针对Oracle为源的增量同步链路,DRS需要用户提前手动在主库检查补全日志是否符合要求,以保证任务的正常运行。以下检查和设置方法中,
表级:针对指定表的设置。
库级:指整个数据库级别的设置。
PK/UI:每一行日志中除了记录变更的列以外,还额外记录了该行中主键和唯一键的值。
ALL:每一行日志中记录了该行所有列的值。
以下三项检查,满足其中一项即可符合DRS增量同步的基本要求。
表级补全日志PK/UI检查(最低要求)
针对用户选择的待同步的表级对象,检查补全日志是否满足要求。
步骤 1 在源库中执行以下sql语句。
select * from ALL_LOG_GROUPS where (LOG_GROUP_TYPE='UNIQUE KEY LOGGING' or LOG_GROUP_TYPE='PRIMARY KEY LOGGING') and OWNER='大写SCHEMA名' and TABLE_NAME='大写表名';
该表名在查询结果中能同时对应到LOG_GROUP_TYPE值为UNIQUE KEY LOGGING和PRIMARY KEY LOGGING的两条记录,即可满足DRS增量同步要求。
步骤 1 如果不满足要求,可执行以下sql语句开启表级PK/UI级别补全日志。
alter database add supplemental log data;
alter table SCHEMA名.表名add supplemental log data(primary key,unique) columns;
表级补全日志ALL检查
针对用户选择的待同步的表级对象,检查补全日志是否满足要求。
步骤 2 在源库中执行以下sql语句。
select * from ALL_LOG_GROUPS where LOG_GROUP_TYPE='ALL COLUMN LOGGING' and OWNER='大写SCHEMA名' and TABLE_NAME='大写表名';
该表名在查询结果中有记录,即可满足DRS增量同步要求。
步骤 2 如果不满足要求,可执行以下sql语句开启表级ALL级别补全日志。
alter database add supplemental log data;
alter table SCHEMA名.表名add supplemental log data(all) columns;
库级补全日志检查
针对待同步的库级对象,检查补全日志是否满足要求。
步骤 3 在源库执行以下sql语句。
select SUPPLEMENTAL_LOG_DATA_MIN MIN, SUPPLEMENTAL_LOG_DATA_PK PK, SUPPLEMENTAL_LOG_DATA_UI UI, SUPPLEMENTAL_LOG_DATA_ALL ALL_LOG from v$database;
步骤 3 满足以下其中一项要求即可。
PK和UI同时为YES,即可满足DRS增量同步要求。
如果不满足要求,可执行以下sql语句开启库级PK/UI级别补全日志。
alter database add supplemental log data(primary key, unique) columns;
ALL_LOG为YES,即可满足DRS增量同步要求。
如果不满足要求,可执行以下sql语句开启库级ALL级别补全日志。
alter database add supplemental log data(all) columns;