EXEC模块是目标DMDRS服务的核心组成模块,主要功能为接收CPT模块发送的全量装载数据或者增量同步数据,在目标数据库进行同步执行,实现数据实时同步。同时,EXEC模块也可以从DSS流式存储中获取同步数据并应用到目标数据库。
介绍EXEC模块相关的操作命令。
适用场景
数据同步、数据分发
命令功能
在同步中,目标DMDRS终止增量同步表,并清理该表的对象信息。
注意在目标DMDRS清理表的对象信息后,若源DMDRS仍发送有关该表的操作,则目标DMDRS会重新生成对应的对象信息,接收的所有操作的执行都会过滤。要想彻底终止表在链路的同步,应在源DMDRS服务中执行终止增量同步表命令。要再次启用已终止增量同步表的同步,源DMDRS必须执行以下任一操作。
- 重新添加字典。
- 重新添加表的增量同步。
- 重新删除创建表同步。
命令格式
ALTER [<EXEC_NAME>] TERMINATE [SITE <SITE_ID>] OBJ [<PDBNAME>.]<SCHNAME>.<TABNAME>
参数说明
| 参数 | 说明 |
|---|---|
| EXEC_NAME | EXEC模块的名称,对应配置文件中EXEC模块的“name”参数。 |
| SITE_ID | 指定清理站点的站点号,若不指定则默认为目标DMDRS中第一个站点。 |
| [<PDBNAME>.]<SCHNAME>.<TABNAME> | [<PDBNAME>.]<SCHNAME>.<TABNAME>:按容器名.模式名.表名删除增量同步表,容器名仅适用于容器数据库。 |
命令示例
目标DMDRS终止默认第一个站点中的增量同步表RESOURCES.EMPLOYEE,并清理该表的对象信息。
alter exec_dm8 terminate obj RESOURCES.EMPLOYEE
目标DMDRS终止站点号为10的站点中的增量同步表RESOURCES.EMPLOYEE,并清理该表的对象信息。
alter exec_dm8 terminate site 10 obj RESOURCES.EMPLOYEE
适用场景
数据迁移、数据同步、数据分发
命令功能
修改源数据库与目标数据库的数据类型映射关系。用于对数据类型映射有特殊要求的应用场景,若不进行修改,则采用默认的数据类型映射关系,具体可参考各数据库对应的DMDRS搭建手册。
命令格式
ALTER [<EXEC_NAME>] DTYPE_MAP <SRC_DBNAME> <SRC_TYPE> TO <DEST_DBNAME> <DEST_TYPE>
参数说明
| 参数 | 说明 |
|---|---|
| EXEC_NAME | EXEC模块的名称,对应配置文件中EXEC模块的“name”参数。 |
| SRC_DBNAME | 源数据库类型,包括:DM6单机、DM7、DM8(单机、DMDSC、DMDPC)、Oracle 10g及以上版本(单机、RAC)、SQL Server 2008 R2/2016/2019版本、MySQL/MariaDB 5.6/5.7/8、PostgreSQL 9.6/11/12版本、DB2 9.7/10.5/11.5版本、Kingbase V6版本、Kingbase V8(Oracle模式)版本和Kingbase V9(Oracle模式)版本。 参数值不区分大小写。具体如下: DM6单机数据库:dm6。 DM7数据库:dm7。 DM8单机数据库:dm8。 DMDSC数据库:dm8或dsc。 DMDPC数据库:dpc。 Oracle(单机、RAC)数据库:Oracle。 SQL Server数据库:SQLSERVER。 MySQL/MariaDB数据库:MYSQL。 PostgreSQL数据库:postgres。 DB2数据库:DB2。 Kingbase V6数据库:KDBV6。 Kingbase V8(Oracle模式)数据库:kdb。 Kingbase V9(Oracle模式)数据库:kdb或者kdbv9。 |
| SRC_TYPE | 源数据库数据类型,如:INT、CHAR等。 如果类型带有精度或标度,可以用名称表示,如:VARCHAR (n)、INTERVAL HOUR (n) TO SECOND (s)等。 |
| DEST_DBNAME | 目标数据库类型,包括:DM6单机、DM7、DM8(单机、DMDSC、DMDPC)、Oracle 10g及以上版本(单机、RAC)、SQL Server 2008 R2/2016/2019版本、MySQL/MariaDB 5.6/5.7/8、PostgreSQL 9.6/11/12版本、DB2 9.7/10.5/11.5版本、Kingbase V8(Oracle模式)版本、GBase 8s V8版本和GaussDB 7.0.0-RC1。 参数值不区分大小写。具体如下: DM6单机数据库:dm6。 DM7数据库:dm7。 DM8单机数据库:dm8。 DMDSC数据库:dm8或dsc。 DMDPC数据库:dpc。 Oracle(单机、RAC)数据库:Oracle。 SQL Server数据库:SQL Server。 MySQL/MariaDB数据库:MYSQL。 PostgreSQL数据库:postgres。 DB2数据库:DB2。 Kingbase V8(Oracle模式)数据库:kdb。 GBase 8s数据库:gbase8s。 GaussDB 7.0.0-RC1数据库:gaussdb。 |
| DEST_TYPE | 目标数据库数据类型,如:INT、CHAR等。 如果需要对精度或标度进行处理,可以在这里使用源数据库数据类型相应的名称表示。 |
注意如果需要对映射后的类型精度进行倍数放大,可以在目标数据类型的精度前指定倍数,范围1~100,如SRC_TYPE:VARCHAR(n),DEST_TYPE:VARCHAR2(10n)表示映射后的数据类型VARCHAR2的精度将扩大10倍。
如果类型名称包含多个单词,应当用双引号包含。
命令示例
修改DM8同步到Oracle11g数据类型映射:无论源数据库NUMBER类型的精度标度如何,都统一映射为VARCHAR2(50)。
alter exec_ora dtype_map DM8 NUMBER to Oracle11g VARCHAR2(50)
修改DM8同步到Oracle11g数据类型映射:VARCHAR类型映射为VARCHAR2,并且精度扩大10倍。
alter exec_ora dtype_map DM8 VARCHAR(n) to Oracle11g VARCHAR2(10n)
修改DM8同步到Oracle11g数据类型映射:NUMBER类型映射后保留精度,但标度固定为2。
alter exec_ora dtype_map DM8 NUMBER(p,s) to Oracle11g NUMBER(p,2)
修改DM8同步到Oracle11g数据类型映射:INTERVAL HOUR (n) TO SECOND (s) 映射为 VARCHAR2(100)。(源数据库类型可以省略精度和标度)
alter exec_ora dtype_map DM8 "INTERVAL HOUR TO SECOND" to Oracle11g VARCHAR2(10)
适用场景
数据迁移、数据同步、数据分发
命令功能
将同步工作线程事务队列上事务的元数据和日志操作数据输出到文件。
命令格式
DUMP <EXEC_NAME> THR [<THR_ID>] TRX [<TRX_ID>] TSK [ALL] [TABLE "<SCHNAME>.<TABNAME>"] [ROWS <TSK_NUM>] [FILE "<FILE_PATH>"]
参数说明
| 参数 | 说明 |
|---|---|
| EXEC_NAME | EXEC模块的名称,对应配置文件中EXEC模块的“name”参数。 |
| THR_ID | 需要输出的事务所属的线程号,可通过执行查看工作线程信息命令获取。 配置该参数输出指定工作线程的事务数据,不配置该参数输出所有工作线程的事务数据。 |
| TRX_ID | 需要输出的事务的事务号。 配置该参数输出工作线程上指定事务的数据,不配置该参数输出工作线程上所有事务的数据。 |
| ALL | 配置该参数输出事务上的所有操作,不配置该参数只输出当前已执行和正在执行的日志操作。 |
| <SCHNAME>.<TABNAME> | 配置该参数按模式名和表名过滤需要输出的日志操作,不配置该参数输出所有表的日志操作。 |
| TSK_NUM | 配置该参数只输出不超过该指定数量的日志操作,不配置该参数默认输出不超过100000条日志操作。 |
| FILE_PATH | 配置该参数以更改输出文件的路径,不配置该参数默认输出到模块名文件夹下DUMP文件夹中的dump_trx.sql文件。 |
命令示例
将全部工作线程的事务队列的数据输出到默认文件dump_trx.sql中。
dump exec_dm8 thr trx tsk all
将2号工作线程的事务队列的数据输出到dmdrs目录下的dump.sql文件中。
dump exec_dm8 thr 2 trx tsk FILE "/opt/dmdrs/dump.sql"
适用场景
数据迁移、数据同步、数据分发
命令功能
将当前工作线程上绑定好的数据输出到文件中。可通过该命令查看属于绑定状态的日志操作数据。
命令格式
DUMP <EXEC_NAME> THR [<THR_ID>] BIND [FILE "<FILE_PATH>"]
参数说明
| 参数 | 说明 |
|---|---|
| EXEC_NAME | EXEC模块的名称,对应配置文件中EXEC模块的“name”参数。 |
| THR_ID | 需要输出的事务所属的线程号,可通过执行查看工作线程信息命令获取。 配置该参数后将输出指定的工作线程的绑定操作数据,不配置该参数时输出所有工作线程的绑定操作数据。 |
| FILE_PATH | 配置该参数以更改输出文件的路径,不配置该参数默认输出到EXEC模块名文件夹下DUMP文件夹中的dump_bind.sql文件。 |
命令示例
将全部工作线程的绑定操作数据输出到默认文件dump_bind.sql中。
dump exec_dm8 thr bind
将2号工作线程的绑定操作数据输出到dmdrs目录下的dump.sql文件中。
dump exec_dm8 thr 2 bind FILE "/opt/dmdrs/dump.sql"
适用场景
数据分发
命令功能
通过命令添加或删除指定的映射规则,再执行确认命令使所有的修改命令生效或者执行取消命令删除当前未生效的所有修改命令,并同步保存在配置文件中,可在不重启目标DMDRS的情况下动态修改映射规则。
注意输入修改映射规则命令后会对当前输入的映射规则进行校验,满足校验条件的映射规则才能修改。
- 若为添加映射规则,则在type和disable属性相同时校验左值是否完全相等,左值完全一样的无法添加,可添加已有映射规则的真子集或将已有映射规则当作真子集的映射规则(例:存在DMDRS.T*==DMDRS.T*,不可添加DMDRS.T*==SYSDBA.T*,可添加DMDRS.T1==DMDRS.T2和DMDRS.*==SYSDBA.*)。当存在有交集的映射规则时,映射以最大匹配度,即最小子集为准。
- 若为删除映射规则,则在type和disable属性相同时校验整个映射规则,仅当用户输入规则与已有规则完全相同时才能删除。
命令格式
添加或删除指定的映射规则。
ALTER [<EXEC_NAME>] ADD|DELETE [DISABLE] MAP [<TYPE>] "<ITEM>" [DIR "<TSDIR>"] ON DSS <TOPIC>
确认或取消当前所有的修改命令。
ALTER [<EXEC_NAME>] [CONFIRM|CANCEL]
参数说明
| 参数 | 说明 |
|---|---|
| EXEC_NAME | EXEC模块的名称,对应配置文件中EXEC模块的“name”参数。 |
| DISABLE | 配置该参数,表示添加或者删除的映射规则为黑名单规则。如果不配置该参数,表示添加或删除的映射规则为白名单规则。 |
| TYPE | 对象类型。
|
| "<ITEM>" | 映射规则。 不配置TYPE:格式为 "<库名./容器名.>模式名.对象名模式名.对象名"。对象名包括表、序列、视图、函数、存储过程、触发器、包、类、同义词、自定义类型。 TYPE配置为table:格式为 "<库名./容器名.>模式名.表名模式名.表名"。 TYPE配置为tablespace:格式为"表空间名表空间名" TYPE配置为object:格式为 "<库名./容器名.>模式名.对象名模式名.对象名"。对象名不包括表,仅包括序列、视图(普通视图、物化视图)、函数、存储过程、触发器、包、类、同义词、自定义类型。 TYPE配置为view/mview/procedure/function/trigger/package/synonym/sequence/class:格式为 "<库名./容器名.>模式名.对象名==模式名.对象名"。 库名、表空间名、模式名和对象名支持通配符配置,包括*和A*。容器名不支持通配符配置,具体如下: *:表示所有库、所有表空间、所有模式和所有对象。 A*:表示前缀为A的所有库、所有表空间、所有模式和所有对象。 具体说明请参见CPT模块map标签下的item参数。 |
| DIR "<TSDIR>" | 映射后的表空间的路径。TYPE配置为TABLESPACE时需要配置该路径。 |
| TOPIC | 应用映射规则的DSS流存储包含的主题名。 |
命令示例
在cpt_dm8主题上添加"PERSON.* == PERSON.*"映射规则,以及删除"RESOURCES.*==RESOURCES.*"的映射规则,并使当前所有的修改命令生效。
添加"PERSON.* == PERSON.*"的映射规则。
alter exec_dm8 add map "PERSON.*==PERSON.*" on dss cpt_dm8
删除"RESOURCES.*==RESOURCES.*"的映射规则。
alter exec_dm8 delete map "RESOURCES.*==RESOURCES.*" on dss cpt_dm8
使当前所有修改命令生效。
alter exec_dm8 confirm
适用场景
数据迁移、数据同步、数据分发
命令功能
解析本地存放的序列临时文件并执行入库。该命令与EXEC模块的seq_sync_mode参数配合使用,当seq_sync_mode配置为0时,目标DMDRS会将接收的序列同步操作临时保存在本地文件seq_save.seq中,使用该命令解析本地文件并执行入库。命令执行完成后,会删除本地文件seq_save.seq。
命令格式
ALTER [<EXEC_NAME>] SYNC SEQ
参数说明
| 参数 | 说明 |
|---|---|
| EXEC_NAME | EXEC模块的名称,对应配置文件中EXEC模块的“name”参数。 |
命令示例
解析本地保存的序列临时文件并执行入库。
ALTER exec_dm8 SYNC SEQ
适用场景
数据迁移、数据同步、数据分发
命令功能
目标DMDRS获取DMDSS备份的源数据库归档日志文件,并保存到目标DMDRS程序运行目录或指定目录。
说明
- 仅支持获取DMDSS程序运行目录的mgr目录下的归档日志文件。
- 归档日志文件默认保存在DMDRS程序运行目录的mgr目录。
- 指定目录是指DMDRS程序所在服务器的目录。
- 该命令仅适用于DM8(单机、DMDSC)、MySQL和Oracle(单机、RAC)数据库。
- 该命令仅适用于经DSS的同步链路。
命令格式
ALTER [<EXEC_NAME>] FETCH [ARCH "<FILE_NAME>"]|[LSN MIN <MIN_LSN> LSN MAX <MAX_LSN>] [DIR "<SAVE_PATH>"]
参数说明
| 参数 | 说明 |
|---|---|
| EXEC_NAME | EXEC模块的名称,对应配置文件中EXEC模块的“name”参数。 |
| FILE_NAME | 源数据库的归档日志文件名。 |
| MIN_LSN | 源数据库的归档日志文件的最小LSN,包括最小LSN所在的归档日志文件。 |
| MAX_LSN | 源数据库的归档日志文件的最大LSN,包括最大LSN所在的归档日志文件。 |
| SAVE_PATH | 备份归档日志文件的保存目录。不配置该参数,归档日志文件默认保存在程序运行目录的mgr目录。 |
命令示例
目标DMDRS获取DMDSS备份的源数据库归档日志文件1_593_1190308056.DBF,并保存到目标DMDRS程序运行目录。
alter exec_dm8 fetch arch "1_593_1190308056.DBF"
目标DMDRS获取DMDSS备份的LSN范围为28260137~28954251的源数据库归档日志文件,并保存到目标DMDRS程序运行目录。
alter exec_dm8 fetch LSN MIN 28260137 LSN MAX 28954251
目标DMDRS获取DMDSS备份的LSN范围为28260137~28954251的源数据库归档日志文件,并保存到目标DMDRS程序所在服务器的/mppdata/backup目录。
alter exec_dm8 fetch lsn min 28260137 lsn max 28954251 dir "/mppdata/backup"
适用场景
数据同步、数据分发
命令功能
设置指定表在目标DMDRS的装载过滤LSN,只同步该LSN之后的操作。
命令格式
ALTER [<EXEC_NAME>] SET <SITE_ID> <SCHNAME>.<TABNAME> LSN <LSN>
参数说明
| 参数 | 说明 |
|---|---|
| EXEC_NAME | EXEC模块的名称,对应配置文件中EXEC模块的“name”参数。 |
| SITE_ID | 装载表所属源DMDRS的站点号。 |
| <SCHNAME>.<TABNAME> | 模式名.表名。该模式名.表名为源数据库映射到目标数据库的模式名.表名。 |
| LSN | 装载过滤的LSN。如果源数据库为单节点,只需要配置一个LSN值;如果源数据库为DMDSC多节点,需要配置多个节点的LSN值,多个LSN值用空格分隔。 |
命令示例
设置源数据库为单节点,所属源DMDRS站点1的表RESOURCES.EMPLOYEE在目标DMDRS的装载过滤LSN为100000。
alter exec_dm8 set 1 RESOURCES.EMPLOYEE LSN 100000
设置源数据库为DMDSC,所属源DMDRS站点1的表RESOURCES.EMPLOYEE在目标DMDRS的装载过滤LSN为100000。
alter exec_dm8 set 1 RESOURCES.EMPLOYEE LSN 100000 100000
适用场景
数据同步、数据分发
命令功能
目标DMDRS清理现有的同步表字典。字典清理后,会在同步表数据时再重新描述并创建。
该命令适用于目标数据库表结构通过除DMDRS外其他方式变更的情景,避免目标DMDRS服务重启。
命令格式
ALTER [<EXEC_NAME>] CLEAR DICT ["<SCHNAME>.<TABNAME>"]
参数说明
| 参数 | 说明 |
|---|---|
| EXEC_NAME | EXEC模块的名称,对应配置文件中EXEC模块的“name”参数。 |
| "<SCHNAME>.<TABNAME>" | <SCHNAME>.<TABNAME>:按模式名.表名指定需要清理的增量同步表字典。 未指定则清理所有表字典。 |
命令示例
目标DMDRS清理所有表字典。
alter exec_dm8 clear dict
目标DMDRS清理名称为"RESOURCES.EMPLOYEE"的表字典。
alter exec_dm8 clear dict "RESOURCES.EMPLOYEE"
适用场景
数据同步、数据分发
命令功能
解压、提取目标DMDRS压缩后的日志文件。
该命令适用于目标DMDRS开启完整日志,并且配置了压缩选项的场景,通过执行该命令提取日志内容。
命令格式
ALTER [<EXEC_NAME>] EXTRACT <SITEID>|"<PATH>" TO "<DEST_PATH>"
参数说明
| 参数 | 说明 |
|---|---|
| EXEC_NAME | EXEC模块的名称,对应配置文件中EXEC模块的“name”参数。 |
| <SITEID>|"<PATH>" |
|
| "<DEST_PATH>" | 提取的日志存放目录。 |
命令示例
目标DMDRS提取站点1的压缩日志,存放至/home/dmdrs/full_log目录。
alter exec_dm8 extract 1 to "/home/dmdrs/full_log"
适用场景
数据同步、数据分发
命令功能
动态开启清洗转换功能,以及添加、更新或删除CVT脚本配置。
命令格式
ALTER <EXEC_NAME> CVT ADD|UPDATE|DELETE "<PATH>"
参数说明
| 参数 | 说明 |
|---|---|
| EXEC_NAME | EXEC模块的名称,对应配置文件中EXEC模块的“name”参数。 |
| ADD|UPDATE|DELETE |
|
| PATH | CVT文件路径或CVT文件目录。 |
命令示例
动态开启清洗转换功能。
alter exec_dm8 cvt add "/home/dmdrs/bin/cvt_script"
动态添加test1.cvt脚本配置。
alter exec_dm8 cvt add "/home/dmdrs/bin/cvt_script/test1.cvt"
动态更新test1.cvt脚本配置。
alter exec_dm8 cvt update "/home/dmdrs/bin/cvt_script/test1.cvt"
动态删除test1.cvt脚本配置。
alter exec_dm8 cvt delete "/home/dmdrs/bin/cvt_script/test1.cvt"
文章
阅读量
获赞
