DMHS單機實時同步(DM7)
前言
DMHS 支持的作業系統平臺:Windows 系列(包括 XP、Win2003、Win7/8/10、WinServer2008等),Linux(Redhat、Ubuntu、CentOS、Kylin、Rocky 等)、Aix、Solaris 等,記憶體要求:DMHS 需要的記憶體總量取決于執行的分析執行緒以及執行執行緒的并發數,最少需要 1G 記憶體,磁盤需求:DMHS 安裝檔案占用 277M,包括了管理工具以及管理界面占用的空間,另外需要一些額外的空間存盤 DMHS 運行的日志檔案,作業系統權限:在 Windows 安裝時,安裝和執行 DMHS 的用戶必須是管理員身份;在 Linux 平臺下安裝,安裝用戶必須有權限讀寫 DMHS 安裝目錄,將涉及的資料庫介面動態庫添加到系統共享庫環境變數中,TCP/IP:配置系統支持 TCP/IP 服務(DMHS 安裝的所有機器必須配置主機名或者 IP 地址),DMHS 需要使用以下 TCP/IP 埠:管理行程間通信的默認埠 5345;發送和執行子系統之間通信的默認埠 5346;用戶可以自行定義這些埠,
dmhs.hs組態檔可以移動到bin2目錄下進行配置,因為bin2目錄是debug版本,出錯容易排查,啟動服務也可在bin2目錄下,
一、開啟歸檔和邏輯日志
1.1 設定歸檔標記和邏輯日志標記,打開 DM7 服務器組態檔“dm.ini”,設定如下值:
ARCH_INI = 1
RLOG_APPEND_LOGIC = 1
注意:
dm.ini 配置引數中“FAST_COMMIT”必須為 0,否則會導致邏輯日志不全而影響同步,
1.2 添加歸檔組態檔,在“dm.ini”同目錄下創建檔案“dmarch.ini”,示例內容如下:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /opt/dmdbms/arch #歸檔目錄
ARCH_FILE_SIZE = 128 #歸檔檔案大小,單位 MB
ARCH_SPACE_LIMIT = 0 #空間大小限制,0 表示不限制
1.3 重啟 DM7 資料庫,使配置引數生效,
1.4 驗證配置的正確性
1.4.1 檢查歸檔配置的正確性,請執行以下 SQL 命令:
SELECT ARCH_DEST, ARCH_FILE_SIZE FROM SYS.V$DM_ARCH_INI WHERE ARCH_TYPE='LOCAL' AND ARCH_IS_VALID='Y';
查詢結果如下則為正常:
行號 ARCH_DEST ARCH_FILE_SIZE
------- ---------------------------- --------------
1 /opt/dmdbms/arch 128
已用時間: 128.384(毫秒). 執行號:3
1.4.2 檢查邏輯日志配置的正確性,通過下面的查詢:
SELECT PARA_VALUE FROM SYS.V$DM_INI WHERE PARA_NAME = 'RLOG_APPEND_LOGIC';
查詢結果如下則為正常:
行號 PARA_VALUE
---------- ----------
1 1
已用時間: 20.685(毫秒). 執行號:4.
1.4.3 檢查在線日志,通過如下的查詢:
SELECT PATH FROM SYS.V$RLOGFILE;
查詢結果如下則為正常:
行號 PATH
---------- ----------------------------------------
1 /opt/dmdbms/arch/src_db01.log
2 /opt/dmdbms/arch/src_db02.log
已用時間: 1.096(毫秒). 執行號:5.
1.4.4 檢查 FAST_COMMIT 引數是否為 0
select para_value from v$dm_ini where para_name = 'FAST_COMMIT';
查詢結果如下則為正常:
行號 PARA_VALUE
---------- ----------
1 0
已用時間: 8.691(毫秒). 執行號:585.
二、配置 DDL
如果要求 DDL 同步,那么需要創建 DDL 觸發器和輔助表,創建的腳本參見 DMHS 安裝目錄下 scripts 子目錄中“ddl_sql_dm7.sql”,注意創建時需要使用 SYSDBA 用戶,
檢查創建的觸發器和輔助表是否有效,檢查輔助表的陳述句:
select owner, table_name from dba_tables where owner = 'SYSDBA' and table_name like 'DMHS%' and status =
'VALID';
查詢結果如下則為正常:
行號 OWNER TABLE_NAME
---------- ------ ---------------
1 SYSDBA DMHS_DDL_COL
2 SYSDBA DMHS_DDL_SQL
3 SYSDBA DMHS_DDL_CONS
4 SYSDBA DMHS_DDL_IDX
5 SYSDBA DMHS_DDL_RENAME
6 SYSDBA DMHS_DDL_SEQ
7 SYSDBA DMHS_DDL_PART
7 rows got
已用時間: 197.302(毫秒). 執行號:7.
檢查觸發器的陳述句:
select owner, trigger_name from dba_triggers where owner = 'SYSDBA' and trigger_name like 'DMHS%' and
status = 'Y';
查詢結果如下則為正常:
行號 OWNER TRIGGER_NAME
---------- ------ -----------------------
1 SYSDBA DMHS_DDL_TRIGGER_AFTER
2 SYSDBA DMHS_DDL_TRIGGER_BEFORE
3 SYSDBA DMHS_DDL_TRIGGER_GRANT
4 SYSDBA DMHS_DDL_TRIGGER_REVOKE
已用時間: 12.147(毫秒). 執行號:16.
三、配置 dmhs.hs
dmhs.hs 是 DMHS 默認的組態檔名,如果需要 DDL 同步,那么源端基本的配置示例如下:
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<ckpt_interval>60</ckpt_interval>
<siteid>1</siteid>
</base>
<cpt>
<db_type>dm7</db_type>
<db_server>127.0.0.1</db_server>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
<db_port>5236</db_port>
<db_ssl_path></db_ssl_path>
<db_ssl_pwd></db_ssl_pwd>
<parse_thr>1</parse_thr>
<ddl_mask>op:obj</ddl_mask> <!--DDL 配置項-->
<arch><!--歸檔清理配置項-->
<clear_interval>600</clear_interval>
<clear_flag>2</clear_flag>
<bak_dir>/dmarch/arch_bak</bak_dir>
</arch>
<send><!-- 發送模塊配置 -->
<ip>192.168.10.109</ip>
<mgr_port>5345</mgr_port>
<data_port>5346</data_port>
<trigger>1</trigger><!-- 是否忽略觸發器,默認為 0,限定值 0,1 -->
<constraint>1</constraint><!-- 是否忽略約束,默認為 0,限定值 0,1 -->
<identity>1</identity>
<net_turns>0</net_turns>
<filter><!--過濾配置項-->
<enable><!-- 白名單,所有允許同步的表 -->
<item>SYSDBA.*</item>
</enable>
</filter>
<map><!--映射配置項-->
<item>SYSDBA.*==DMHS.*</item>
</map>
</send>
</cpt>
</dmhs>
目的端(示例):
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base>
<lang>en</lang>
<mgr_port>5345</mgr_port>
<ckpt_interval>60</ckpt_interval>
<siteid>2</siteid>
<version>2.0</version>
</base>
<exec>
<recv>
<data_port>5346</data_port>
</recv>
<db_type>dm7</db_type>
<db_server>10.0.0.210</db_server>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
<db_port>5236</db_port>
<db_name></db_name>
<exec_thr>4</exec_thr>
<exec_sql>1024</exec_sql>
<exec_trx> 5000 </exec_trx>
<exec_rows>1000</exec_rows>
</exec>
</dmhs>
現對以上的基本配置作如下幾點說明:
- siteid 全域唯一,即 DMHS 同步系統涉及的所有節點的 siteid 必須全域唯一,不允許有重復值,
- DDL 配置項,如果不需要 DDL 同步,那么就配置為空,即<ddl_mask></ddl_mask>,相應地 DMHS DDL 觸發器和輔助表也不需要創建,
- 歸檔清理配置項,clear_flag 為 1 表示清除,即 DMHS 將同步完成的歸檔檔案洗掉;為 2,表示將同步完成的歸檔移到 bak_dir 目錄下;為 0,表示不作任何操作,
- 過濾配置項,本示例配置了白名單,即 enable,也可以配置黑名單,其過濾的規則是:先判斷白名單,然后判斷黑名單,如果存在重疊的情況,那么也是會被過濾的,
- 映射配置項,表示存在不同模式之間的表同步,例如本示例中源端的 SYSDBA 模式下的表映射成目的端的 DMHS 模式下同名的表,
四、開啟源端服務
配置完成之后,則可以啟動 DMHS 服務:dmhs_server,
Linux:
./dmhs_serverd start
Windows:
net start dmhs_server
五、初始化裝載
初始裝載是將源端資料庫中的初始資料裝載到目的端資料庫,使 DMHS 同步的時刻源和目的端的同步表資料一致,裝載前源端 DMHS 服務和目的端 DMHS 服務都需要開啟,本示例的目的端 DMHS 使用的是和源端相同環境的 DM7 資料庫,
步驟如下:
1)開啟目的端 DMHS 服務:
./dmhs_serverd start
2)start 目的端 DMHS:
./dmhs_serverd start
./dmhs_console
DMHS >connect
DMHS >start
啟動界面如下:

3)開啟源端 DMHS 服務:
./dmhs_serverd start
- 初始裝載:
./dmhs_serverd start
./dmhs_console
DMHS >connect
DMHS >copy 0 "sch.name='SYSDBA'" DICT|LSN|CREATE|INSERT|INDEX
示例如下:

六、開啟同步
初始裝載完成后,則可以開啟同步:
源端 DMHS:
./dmhs_console
DMHS >start
示例如下:

七、初始化裝載一些示例
示例:LOAD 0 “SCH.NAME=’SYSDBA’AND TAB.NAME=’TEST’” INSERT
說明:裝載SYSDBA模式下的TEST表,裝載時對該表上S鎖,當該表裝載完成以后才釋放S鎖
示例:LOAD 0 “SCH.NAME=’SYSDBA’” INSERT|NOLOCK
說明:裝載SYSDBA模式下的所有表,裝載時對該表短暫的上S鎖,執行陳述句回傳時便釋放S鎖
示例:LOAD 0 “SCH.NAME=’SYSDBA’AND TAB.NAME LIKE ‘T%’” INSERT
說明:裝載SYSDBA模式下所有以T打頭的表
示例:LOAD 0 “SCH.NAME=’SYSDBA’AND TAB.NAME=’TEST’”INSERT|“ID>100” 說明:裝載TEST表時,只裝載該表中ID列大于100的記錄
示例:LOAD 0 "SCH.NAME='TEST' AND TAB.NAME='SF'" UPDATE|"OBJ,NAME"|STOP|FILE
說明:當日志分析依然在運行的情況下,暫停日志分析并更新表TEST.SF的OBJ和NAME列的值
示例:DMHS > COPY 0 “SCH.NAME=’TEST’ AND TAB.NAME=’TX’ ” ABSOLUTE|INSERT
說明:使用該掩碼裝載 TEST.TX 表
示例:DMHS > COPY 0 “SCH.NAME=’TEST’ AND TAB.NAME=’TX’ ” INSERT|AFTER|1000
說明:使用該掩碼裝載 TEST.TX 表查詢結果集 1000 行以后的資料,
示例:DMHS > COPY 0 “SCH.NAME=’TEST’” ALTER|SEQUENCE
說明:把 TEST 用戶下的所有序列當前值應用到目標端
示例:DMHS > COPY 0 BACKUP
說明:立即備份虛擬 ID 為 0 的 CPT 所指向的資料庫并在目標端還原,
示例:DMHS > COPY 0 BACKUP|"/back"
說明:立即備份虛擬 ID 為 0 的 CPT 所指向的資料庫并在目標端還原,源端備份檔案存放在”/back”目錄,
示例:DMHS > COPY 0 BACKUP|FILE|"/back/test_20160506.bak"
說明:指定源端的備份檔案 test_20160506.bak 發送到目標端還原,
示例:DMHS > COPY 0 “SCH.NAME=’USO’” INSERT|THREAD|4|CONTINUE
說明:裝載 USO 用戶下所有的表,如果某表上次成功裝載過這次則跳過該表,
示例:DMHS > COPY 0 “SCH.NAME=’USO’” CREATE|INSERT|THREAD|4
說明: 使用 4 個執行緒并發的裝載 USO 模式下的所有表,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/128481.html
標籤:AI
上一篇:新學期-初來廣州
下一篇:mybatis復雜查詢
