中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-11-30 14:32:15 來源:億速云 閱讀:108 作者:柒染 欄目:數據庫

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

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操作。

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

dm7
AI

塘沽区| 上栗县| 南宫市| 揭西县| 肇州县| 隆德县| 华蓥市| 商河县| 南投市| 临泉县| 丁青县| 敦化市| 红桥区| 锡林浩特市| 吉水县| 惠东县| 格尔木市| 余干县| 永修县| 湘乡市| 深圳市| 织金县| 鹤庆县| 祁阳县| 高青县| 石狮市| 新绛县| 通江县| 绥宁县| 崇礼县| 平塘县| 永泰县| 腾冲县| 丰顺县| 平邑县| 和田县| 安义县| 万州区| 大连市| 鄄城县| 湘潭市|