久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

DM7數據復制中模式級復制的配置及用法是什么

152次閱讀
沒有評論

共計 10515 個字符,預計需要花費 27 分鐘才能閱讀完成。

DM7 數據復制中模式級復制的配置及用法是什么,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面丸趣 TV 小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

DM 的數據復制可以在表級,模式級和庫級進行配置,表級復制因為不能同步 DDL,所以必須要求主從段表的結構必須完全一致。本篇我們看下模式級數據復制的配置過程。
下面舉一個簡單的例子來說明數據復制的配置。
1. 準備工作
參與復制的復制實例的信息如下表所示。
數據庫 實例名 IP 地址 數據庫端口號 MAL 端口號 文件目錄
復制數據庫 jydm 10.10.10.180 5236 5241 /dm_home/dmdba/dmdbms/data/
主數據庫 hy 10.10.10.184 5236 5242 /dm_home/dmdba/dmdbms/data/
從數據庫 wy 10.10.10.185 5236 5243 /dm_home/dmdba/dmdbms/data/

假設主數據庫上存在 hy 用戶,從數據庫上存在 wy 用戶,現需要創建一個主數據庫上的 hy 用戶到從數據庫上 wy 用戶的同步復制關系,其名稱為 REPHY2WY。

2. 參數設置
修改 3 臺 DM 數據庫的 dm.ini 文件,添加如下內容:
數據庫 dm.ini 設置
復制數據庫 INSTANCE_NAME = jydm
PORT_NUM = 5236
MAL_INI = 1
主數據庫 INSTANCE_NAME = hy
PORT_NUM = 5236
MAL_INI = 1
從數據庫 INSTANCE_NAME = wy
PORT_NUM = 5236
MAL_INI = 1

配置 dmmal.ini 文件
修改 dmmal.ini 文件,添加如下內容。Dmmal 配置文件默認沒有,可以從示例目錄下復制過來修改。

[root@shard1 ini_script]# pwd
/dm_home/dmdba/dmdbms/samples/ini_script
[root@shard1 ini_script]# ls -lrt
總用量  48
-rwxr-xr-x 1 dmdba dinstall 890 2 月  14 2019 dmarch_example.ini
-rwxr-xr-x 1 dmdba dinstall 1966 2 月  14 2019 dmdcr_cfg_example.ini
-rwxr-xr-x 1 dmdba dinstall 631 2 月  14 2019 dmdcr_example.ini
-rwxr-xr-x 1 dmdba dinstall 1537 2 月  14 2019 dminit_example.ini
-rwxr-xr-x 1 dmdba dinstall 2070 2 月  14 2019 dmmal_example.ini
-rwxr-xr-x 1 dmdba dinstall 1277 2 月  14 2019 dmmonitor_example.ini
-rwxr-xr-x 1 dmdba dinstall 288 2 月  14 2019 dmmpp_example.ini
-rwxr-xr-x 1 dmdba dinstall 1679 2 月  14 2019 dmtimer_example.ini
-rwxr-xr-x 1 dmdba dinstall 1241 2 月  14 2019 dmwatch_example.ini
-rwxr-xr-x 1 dmdba dinstall 2146 2 月  14 2019 dmwatcher_example.ini
-rwxr-xr-x 1 dmdba dinstall 522 2 月  14 2019 dmwmon_example.ini
-rwxr-xr-x 1 dmdba dinstall 636 2 月  14 2019 sqllog_example.ini

在每個數據庫服務器上創建一個 dmmal.ini 文件,每個 dmmal.ini 配置必須一致:

MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_jydm]
MAL_INST_NAME = jydm
MAL_HOST = 10.10.10.180
MAL_PORT = 5241
MAL_INST_PORT = 5236 
MAL_INST_HOST = 10.10.10.180
[MAL_hy]
MAL_INST_NAME = hy
MAL_HOST = 10.10.10.184
MAL_PORT = 5242
MAL_INST_PORT = 5236 
MAL_INST_HOST = 10.10.10.184
[MAL_wy] 
MAL_INST_NAME =wy
MAL_HOST = 10.10.10.185
MAL_PORT = 5243
MAL_INST_PORT = 5236 
MAL_INST_HOST =10.10.10.185
[dmdba@shard1 jydm]$ cat dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_jydm]
MAL_INST_NAME = jydm
MAL_HOST = 10.10.10.180
MAL_PORT = 5241
MAL_INST_PORT = 5236 
MAL_INST_HOST = 10.10.10.180
[MAL_hy]
MAL_INST_NAME = hy
MAL_HOST = 10.10.10.184
MAL_PORT = 5242
MAL_INST_PORT = 5236 
MAL_INST_HOST = 10.10.10.184
[MAL_wy] 
MAL_INST_NAME =wy
MAL_HOST = 10.10.10.185
MAL_PORT = 5243
MAL_INST_PORT = 5236 
MAL_INST_HOST =10.10.10.185
[dmdba@jydm2 hy]$ cat dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_jydm]
MAL_INST_NAME = jydm
MAL_HOST = 10.10.10.180
MAL_PORT = 5241
MAL_INST_PORT = 5236 
MAL_INST_HOST = 10.10.10.180
[MAL_hy]
MAL_INST_NAME = hy
MAL_HOST = 10.10.10.184
MAL_PORT = 5242
MAL_INST_PORT = 5236 
MAL_INST_HOST = 10.10.10.184
[MAL_wy] 
MAL_INST_NAME =wy
MAL_HOST = 10.10.10.185
MAL_PORT = 5243
MAL_INST_PORT = 5236 
MAL_INST_HOST =10.10.10.185
[dmdba@jydm3 wy]$ cat dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_jydm]
MAL_INST_NAME = jydm
MAL_HOST = 10.10.10.180
MAL_PORT = 5241
MAL_INST_PORT = 5236 
MAL_INST_HOST = 10.10.10.180
[MAL_hy]
MAL_INST_NAME = hy
MAL_HOST = 10.10.10.184
MAL_PORT = 5242
MAL_INST_PORT = 5236 
MAL_INST_HOST = 10.10.10.184
[MAL_wy] 
MAL_INST_NAME =wy
MAL_HOST = 10.10.10.185
MAL_PORT = 5243
MAL_INST_PORT = 5236 
MAL_INST_HOST =10.10.10.185

對 3 個數據庫都要啟用 mal_ini 參數

SQL  sp_set_para_value(2, MAL_INI ,1);
DMSQL executed successfully
used time: 7.465(ms). Execute id is 23.

復制數據庫初始化
如果是第一次使用復制數據庫,需要對復制數據庫執行初始化操作。通過執行系統函數 SP_INIT_REP_SYS(create_flag)來初始化復制數據庫。其主要作用是創建復制用戶(SYSREP/SYSREP)和創建復制數據庫上需要的系統表。SP_INIT_REP_SYS 的參數 create_flag 為 1 時表示創建用戶和系統表,為 0 時表示刪除用戶和系統表。

開始初始化:

SQL  SP_INIT_REP_SYS(1);
DMSQL executed successfully
used time: 115.960(ms). Execute id is 30.
SQL  conn SYSREP/SYSREP
Server[LOCALHOST:5236]:mode is normal, state is open
login used time: 9.684(ms)
SQL  select table_name from user_tables;
LINEID TABLE_NAME 
---------- -----------------
1 RPS_GROUPS
2 RPS_INSTANCES
3 RPS_REPLICATIONS
4 RPS_TABMAPS
5 RPS_FAULT_HISTORY
6 RPS_CONFLICTS
7 RPS_TIMERS
7 rows got
used time: 170.443(ms). Execute id is 31.

創建的 7 張復制系統表如下:
1) 復制組表
CREATE TABLE SYSREP.RPS_GROUPS (
NAME VARCHAR(128), // 復制組名
ID INT, // 復制組 ID
DESC$ VARCHAR(1000), // 描述
CLUSTER PRIMARY (NAME)
);
2) 復制節點實例表
CREATE TABLE SYSREP.RPS_INSTANCES(
INST_NAME VARCHAR(128), // 復制節點實例名
GRP_ID INT, // 復制組 ID
INST_ID INT, // 實例在復制組中編號
FAULT_TIMEOUT INT, // 故障超時處理值,以秒為單位,0 為立即超時
VALID_FLAG CHAR(1), // 節點系統狀態
FAULT_TIME DATETIME, // 節點故障開始時間
NET_VALID_FLAG CHAR(1), // 網絡狀態
NET_FAULT_TIME DATETIME, // 網絡故障開始時間
CLUSTER PRIMAY KEY(GRP_ID, INST_NAME)
);
3) 復制關系表
CREATE TABLE SYSREP.RPS_REPLICATIONS(
REP_NAME VARCHAR(128), // 復制名
GRP_ID INT, // 復制組 ID
REP_ID INT, // 復制 ID,全局唯一
MINST_ID INT, // 主節點實例編號
SINST_ID INT, // 從節點實例編號
ARCH_DIR VARCHAR(256), // 主節點歸檔日志路徑
FAULT_TIMEOUT INT, // 故障超時處理值,以秒為單位,0 為立即超時
VALID_FLAG CHAR(1), // 復制關系狀態
FAULT_TIME DATETIME, // 故障開始時間
SYNC_FLAG INTEGER // 指定同步或異步復制
TIMER_NAME VARCHAR(128) // 指定異步復制的定時器(同步復制沒有此項)
DESC$ VARCHAR(1000), // 復制描述
CLUSTER PRIMARY KEY(GRP_ID, REP_NAME)
);
4) 復制映射表
CREATE TABLE SYSREP.RPS_TABMAPS(
REP_ID INT, // 復制 ID
MSCH_NAME VARCHAR(128), // 主表模式名
MTAB_NAME VARCHAR(128), // 主表名
MSCH_ID INT, // 主表模式 ID
MTAB_ID INT, // 主表 ID
SSCH_NAME VARCHAR(128), // 從表模式名
STAB_NAME VARCHAR(128), // 從表名
SSCH_ID INT, // 從表模式 ID
STAB_ID INT, // 從表 ID
READONLY_MODE INT, // 映射模式 1: 只讀模式,0:非只讀模式
CLUSTER PRIMARY KEY(REP_ID, MTAB_ID, STAB_ID)
);
5) 復制故障歷史表
CREATE TABLE SYSREP.REP_FAULT_HISTORY(
GRP_NAME VARCHAR(128), // 復制組
OBJ_NAME VARCHAR(128), // 故障節點或關系
FAULT_TYPE VARCHAR(128), // 故障類型描述
START_TIME DATETIME, // 故障開始時間
END_TIME DATETIME // 故障結束時間
);
6) 復制沖突歷史表
CREATE TABLE SYSREP.RPS_CONFLICTS
(
SEQ_NO BIGINT // 沖突序號
REP_ID INT, // 對應復制號
INST_ID INT, // 產生沖突的節點編號
TABLE_ID INT, // 沖突表 ID
TYPE TINYINT // 操作類型
OCC_TIME DATETIME, // 沖突產生時間
KEY_DATA VARCHAR(8000), // 沖突數據的 PK 值,如包含多個 KEY 值,則以逗號分隔。如鍵值超長則截斷
);
7) 復制定時器表
CREATE TABLE SYSREP.RPS_TIMERS (
NAME VARCHAR(128), // 定時器名稱
TYPE$ INT, // 定時類型,取值可參見 SP_RPS_CREATE_TIMER
FERQ_INTERVAL INT, // 間隔天數
FREQ_SUB_INTERVAL INT, // 間隔的月 / 周(調度類型決定)數
FREQ_MINUTE_INTERVAL INT, // 間隔的分鐘數
START_TIME TIME, // 開始時間
END_TIME TIME, // 結束時間
DURING_START_DATE DATETIME // 開始時間點
DURING_END_DATE DATETIME, // 結束時間點
NO_END_DATA_FLAG INTEGER // 是否有結束日期(0:有結束日期;1:沒有結束日期)
DESC$ VARCHAR(1000), // 定時器描述
CLUSTER PRIMARY KEY(REP_NAME)
);
配置模式級復制

啟動 3 臺服務器,啟動的順序不分先后。

[root@shard1 jydm]# systemctl stop DmServicejydm.service
[root@shard1 jydm]# systemctl start DmServicejydm.service
[root@jydm2 ~]# systemctl stop DmServicehy.service
[root@jydm2 ~]# systemctl start DmServicehy.service
[root@jydm3 ~]# systemctl stop DmServicewy.service
[root@jydm3 ~]# systemctl start DmServicewy.service

登錄復制數據庫(RPS jydm),保證服務器狀態為 OPEN,開始復制配置。

[dmdba@shard1 bin]$ ./disql sysdba/abcd
Server[LOCALHOST:5236]:mode is normal, state is open
login used time: 9.851(ms)
disql V7.1.6.46-Build(2018.02.08-89107)ENT 
Connected to: DM 7.1.6.46

創建復制組 REP_GRP_hy2wy

SQL  SP_RPS_ADD_GROUP( REP_GRP_hy2wy ,  主從同步復制 
DMSQL executed successfully
used time: 6.109(ms). Execute id is 55.
SQL  select * from SYSREP.RPS_GROUPS;
LINEID NAME ID DESC$ 
---------- ------------- ----------- ------------
1 REP_GRP_hy2wy 2  主從同步復制
used time: 1.182(ms). Execute id is 56.

開始設置

SQL  SP_RPS_SET_BEGIN( REP_GRP_hy2wy 
DMSQL executed successfully
used time: 0.530(ms). Execute id is 57.

添加復制關系

SQL  SP_RPS_ADD_REPLICATION ( REP_GRP_hy2wy ,  REPhy2wy ,  hy 到 wy 的同步復制 ,  hy ,  wy , NULL,  /dm_home/dmdba/dmdbms/dmreplog 
DMSQL executed successfully
used time: 2.623(ms). Execute id is 58.

添加模式級復制
添加復制映射, 注意這里用戶名和表名要大寫,否則會提示對象不存在

SQL  SP_RPS_ADD_SCH_MAP(REPhy2wy , hy , wy ,0);
SP_RPS_ADD_SCH_MAP(REPhy2wy , hy , wy ,0);
[-8713]:source table is not exists.
used time: 1.738(ms). Execute id is 0.
SQL  SP_RPS_ADD_SCH_MAP(REPhy2wy , HY , WY ,0);
DMSQL executed successfully
used time: 3.126(ms). Execute id is 6.

提交設置

SQL  SP_RPS_SET_APPLY();
DMSQL executed successfully
used time: 00:00:05.041. Execute id is 7.
SQL  select * from SYSREP.RPS_REPLICATIONS;
LINEID REP_NAME GRP_ID REP_ID MINST_ID SINST_ID ARCH_DIR FAULT_TIMEOUT VALID_FLAG FAULT_TIME SYNC_FLAG TIMER_NAME DESC$ 
---------- -------- ----------- ----------- ----------- ----------- ------------------------------ ------------- ----------- --------------------------- ----------- ---------- ----------------
1 REPhy2wy 2 3 5 6 /dm_home/dmdba/dmdbms/dmreplog -1 0 NULL 1 NULL hy 到 wy 的同步復制
used time: 1.362(ms). Execute id is 8.
SQL  select * from SYSREP.RPS_INSTANCES;
LINEID INST_NAME GRP_ID INST_ID FAULT_TIMEOUT VALID_FLAG FAULT_TIME NET_VALID_FLAG NET_FAULT_TIME 
---------- --------- ----------- ----------- ------------- ----------- --------------------------- -------------- ---------------------------
1 hy 2 5 -1 0 NULL 0 NULL
2 wy 2 6 -1 0 NULL 0 NULL
used time: 0.981(ms). Execute id is 9.
SQL  select * from SYSREP.RPS_TABMAPS;
LINEID REP_ID MSCH_NAME MTAB_NAME MSCH_ID MTAB_ID SSCH_NAME STAB_NAME SSCH_ID STAB_ID READONLY_MODE
---------- ----------- --------- --------- ----------- ----------- --------- --------- ----------- ----------- -------------
1 3 HY NULL 150995951 -1 WY NULL 150995951 -1 0
used time: 1.178(ms). Execute id is 10.
SQL

至此,模式級復制配置完成。注意一點,DM 的復制配置必須在開始復制配置之前執行 SP_RPS_SET_BEGIN,配置完成之后執行 SP_RPS_SET_APPLY 提交。

驗證同步
先測試 DML 操作:在主庫 insert 數據:

SQL  insert into t1 values(1, hy1 
affect rows 1
used time: 1.565(ms). Execute id is 6.
SQL  commit;
executed successfully
used time: 1.442(ms). Execute id is 7.
SQL  select * from t1;
LINEID ID USERNAME
---------- -- --------
1 1 hy1
used time: 0.548(ms). Execute id is 8.

從庫查詢,同步成功:

SQL  select * from t1;
LINEID ID USERNAME
---------- -- --------
1 1 hy1
used time: 2.538(ms). Execute id is 5.

在主庫上的 hy 用戶下創建一個測試表 t2

SQL  create table t2 as select * from sysobjects;
executed successfully
used time: 12.763(ms). Execute id is 6.
SQL  select count(*) from t2;
LINEID COUNT(*) 
---------- --------------------
1 1480
used time: 1.266(ms). Execute id is 7.

在從庫上的 wy 用戶查詢這個表 t2

SQL  select count(*) from t2;
LINEID COUNT(*) 
---------- --------------------
1 1480
used time: 0.463(ms). Execute id is 8.

可以看到創建表的 DDL 語句已經同步到 wy 用戶下。

因為我這里的復制從庫是 0 級,就是非只讀的,刪除后重新添加 1 級,即只讀模式在測試:

SQL  SP_RPS_SET_BEGIN( REP_GRP_hy2wy 
DMSQL executed successfully
used time: 0.408(ms). Execute id is 12.
SQL  SP_RPS_DROP_SCH_MAP( REPhy2wy , HY , WY 
DMSQL executed successfully
used time: 1.456(ms). Execute id is 13.
SQL  SP_RPS_ADD_SCH_MAP(REPhy2wy , HY , WY ,1);
DMSQL executed successfully
used time: 2.820(ms). Execute id is 14.
SQL  SP_RPS_SET_APPLY();
DMSQL executed successfully
used time: 00:00:05.039. Execute id is 15.

再測試
從主庫的 hy 用戶中創建表 t3

SQL  create table t3 as select * from sysobjects;
executed successfully
used time: 9.925(ms). Execute id is 9.
SQL  select count(*) from t3;
LINEID COUNT(*) 
---------- --------------------
1 1480
used time: 0.861(ms). Execute id is 10.

在從庫上的 wy 用戶下查詢表 t3 顯示不存在

SQL  select count(*) from t3;
select count(*) from t3;
[-2106]:Error in line: 1
Invalid table or view name [T3].
used time: 0.774(ms). Execute id is 0.

從測試結果可以看到在只讀模式下的模式級復制不能同步 DDL 操作。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注丸趣 TV 行業資訊頻道,感謝您對丸趣 TV 的支持。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-18發表,共計10515字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 滁州市| 洱源县| 洞口县| 海原县| 子长县| 阳春市| 肥西县| 饶阳县| 鹤峰县| 焦作市| 红桥区| 东宁县| 卢龙县| 犍为县| 通辽市| 阆中市| 阜新市| 衡山县| 板桥市| 涿鹿县| 杭锦后旗| 肃北| 山阳县| 怀仁县| 柯坪县| 麻城市| 汽车| 洛川县| 安泽县| 高唐县| 唐河县| 酒泉市| 赤壁市| 买车| 汝州市| 晋城| 库伦旗| 邮箱| 阿图什市| 务川| 讷河市|