现场分别部署一套3节点DSC+DW集群和一套主备集群,需通过DRS将DSC+DW中数据迁移数据至主备集群中。
详细部署过程可参考《DMDRS搭建手册》。本环境由于业务表较多且不需要全部同步,为避免归档量增加过大,仅开启同步表的逻辑附加日志,方式如下:
设置逻辑日志开关(RLOG_APPEND_LOGIC=2 支持完整逻辑日志记录)
SP_SET_PARA_VALUE(1, 'RLOG_APPEND_LOGIC', 2);
仅记录指定表的物理逻辑日志(RLOG_IGNORE_TABLE_SET=0)
SP_SET_PARA_VALUE(1, 'RLOG_IGNORE_TABLE_SET', 0);
alter table 用户名.表名 add logic log;
若需迁移表较多,则可通过如下sql进行拼写:
select 'alter table "'||OWNER||'"."'||TABLE_NAME||'" add logic log;' from dba_tables where owner='用户名';
注意:建议在业务空闲期开启表级附加日志,否则容易锁表失败,报错”锁超时”
为提升数据同步及装载性能,现场验证后参数配置如下;
<?xml version="1.0" encoding="GB18030"?>
<drs>
<base>
<mgr_port>15515</mgr_port>
<siteid>55</siteid>
<lang>ch-utf8</lang>
<mem_size>32</mem_size>
</base>
<cpt>
<name>DRS_CPT_XX</name>
<ddl_mask>OBJ:OP:ddl_rec</ddl_mask>
<!--提升源端解析速度-->
<parse_thr>8</parse_thr> #日志解析的线程数
<parse_queue>2000</parse_queue> #日志解析队列的大小,占用内存大小=parse_queue * 2MB
<sel_ddl_convert>1</sel_ddl_convert> #启用查询建表操作同步转换功能,查询建表操作同步时不再缓存同步操作数据,查询建表会转换为同步建表操作和对该表的数据插入操作。
<calc_md5_col_num>0</calc_md5_col_num> #源端ORACLE或DM,建议设置为0
<send_queue>2000</send_queue> #日志发送队列的大小
<log_buf_size>4096</log_buf_size> #读取日志缓冲区大小,如果缓冲区较小,可能存在等待读日志的情况
<op_dml_size>4096</op_dml_size> #CPT模块DML操作的初始heap大小
<!--end-->
<login>
<dbtype>dm8</dbtype>
<server>dm_dsc_XX_drs</server> #源端DSC时必须配置为服务名,否则装载报错“ DRS-5279 DSC存在节点故障,不支持当前操作”
<user>DRS</user>
<pwd>Drs_XXXXXXXXX</pwd>
<port>5236</port>
<local>dm_dsc_XX_drs</local> #源端DSC时必须配置,服务名,否则源端启动报错未配置local
</login>
<send>
<ip>xx.xx.XXX.XX</ip>
<port>15516</port>
<target_name>DRS_EXEC_XXX</target_name>
<map>
<item>DRS.*==DRS.*</item>
</map>
</send>
<rac>
<nodes>3</nodes>
<rac_type>ASM</rac_type>
<login>
<server>xx.xx.XXX.X</server>
<port>31276</port>
<user>ASMSYS</user>
<pwd>XXXXXX</pwd>
</login>
<arch_dir>
<item>0#+DMARCH/LOCAL_ARCH_DSC_XX_0</item>
<item>1#+DMARCH/LOCAL_ARCH_DSC_XX_1</item>
<item>2#+DMARCH/LOCAL_ARCH_DSC_XX_2</item>
</arch_dir>
</rac>
<load>
<enable>1</enable>
<nets>2</nets>
</load>
</cpt>
</drs>
<?xml version="1.0" encoding="GB18030"?>
<drs>
<base>
<mgr_port>15516</mgr_port>
<siteid>56</siteid>
<lang>ch-utf8</lang>
</base>
<exec>
<name>DRS_EXEC_XX</name>
<login>
<dbtype>dm8</dbtype>
<server>xx.xx.XX.XX</server>
<user>DRS</user>
<pwd>Drs_XXXXXXXXX</pwd>
<port>5236</port>
</login>
<group>
<item>
<id>0</id>
<error_policy>1</error_policy>
</item>
</group>
<char_code>GB18030</char_code>
<ckpt_limit>204800</ckpt_limit>
</exec>
</drs>
若源端按用户进行批量装载表,日志刷新较快无法快速分辨装载异常表,使用如下命令可查看装载表进度及报错信息;
查看正在装载的表:
show load table running
查看装载过程中存在报错的表:
show load table error
由于源端归档量保留时间较短,因此采用动态装载数据方式,先装载结构化数据,再更新LOB数据;执行start cpt命令后,装载完成的表可正常进行增量同步,新装载表完成后,可自动进行增量同步,避免因归档断档导致同步失败;
1)装载指定用户下所有表:
ALTER DRS_CPT_BG ADD TABLE "SCH.NAME='XXX'" DICT|DROP|CREATE|INSERT|INDEX|TABLE|CHECK|GROUPS|16
2)装载指定表的结构化数据:
ALTER DRS_CPT_BG ADD TABLE "SCH.NAME='XXX' AND TAB.NAME='TEST'" DICT|DROP|CREATE|INSERT|INDEX|TABLE|CHECK|GROUPS|16|NOLOB
2)更新指定表的大字段数据:
CP DRS_CPT_BG "SCH.NAME='PFBCA' AND TAB.NAME='TEST'" UPDATE|LOB|GROUPS|16
3)更新指定列数据不加锁:
由于加锁可能会影响到源端业务,有些重要系统可能不允许装载时上锁,这时可以用NOLOCK掩码不加锁装载数据。但是要注意不加锁装载无法保证源端和目的端数据一致性,后续必须要通过对比来验证数据,将不一致数据修复后,再次校验,确认数据的完整性。
CP DRS_CPT_BG "SCH.NAME='PFBCA' AND TAB.NAME='TEST'" UPDATE|"C0,C1"|GROUPS|16|NOLOCK
4)不加锁更新指定条件列的数据:
CP DRS_CPT_BG "SCH.NAME='PFBCA' AND TAB.NAME='TEST'" UPDATE|"C0,C1"|GROUPS|16|NOLOCK|where|"C0=1"
在3节点DSC+DW集群的非控制节点上部署agent服务,启动时agent日志卡住,等待30分钟左右agent服务会自动退出。经分析,oshi老版本默认会调用操作系统udev库扫描所有设备,当映射磁盘很多时,会存在卡住或者性能问题。
解决方法:升级oshi到6.9.3版本,此版本可通过-Doshi.os.linux.allowudev=false jvm参数跳过udev扫描。
启动脚本中需添加如下参数:
-Doshi.os.linux.allowudev=false:禁用 udev 工具。这会强制 OSHI 不使用 udev 来获取硬件信息,从而避免其潜在的性能开销或兼容性问题
-Doshi.os.linux.sysfsonly=true:强制仅从 sysfs 读取数据
-Doshi.util.Util.sleepBetweenTries=50:设置内部重试机制的休眠间隔为 50 毫秒
将上述参数配置在启动脚本的JAVA_OPT参数后面。经测试现场配置后启动速度非常快。
注意:由于DMDFM程序测试key仅支持5个AGENT监控,在web页面上多余agent服务无法删除,只能在元数据表AGENT_MAINFRAME中删掉不用的代理。
报错信息:CHECKPOINT SITEID:55 LSN:1732488043956 USED:51356M LIMIT:51200M SKIP"
如果执行端检查点空间上限确实不高的话,可以登录执行端控制台通过set DRS_EXEC_107_BG ckpt_limit 102400 命令动态调整。但若执行端存在大量报错未处理的话,会影响检查点推进和空间释放,建议先处理执行端报错。
1)改drs.xml再重启DRS服务时,需删除drs.xml.bak文件,否则会读取到drs.xml.bak参数配置;
2) DM数据库的辅助表和触发器必须放置在SYSDBA用户下;
3)非全库开启附加日志如果要同步DDL,需要开启辅助表的附加日志(初始化脚本默认带了add logic log);
4)不支持同步DMHS开头的表,强制装载会报错“本次装载没有添加任何同步”;
测试DVS的时候发现没有临时KEY对性能影响非常大,并行不生效,对比速度及其缓慢,须放KEY才可以提升速度。目前DRS、DVS、DIS、DFM的KEY不通用,需分开单独申请。
文章
阅读量
获赞
