91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

DM7數據復制中表級復制是怎樣的

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

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

達夢數據復制(DATA REPLICATION)是一個分擔系統訪問壓力、加快異地訪問響應速度、提高數據可靠性的解決方案。將一個服務器實例上的數據變更復制到另外的服務器實例。可以用于解決大、中型應用中出現的因來自不同地域、不同部門、不同類型的數據訪問請求導致數據庫服務器超負荷運行、網絡阻塞、遠程用戶的數據響應遲緩的問題。

重要概念
1. 數據庫狀態
服務器的狀態,在不同的狀態下,對能夠進行的操作有不同的限制。詳見數據守護部分。
2. 主服務器
發起復制操作的服務器,稱為主服務器。
3. 從服務器
接收主服務器發送的數據并進行復制的服務器,稱為從服務器。
4. 復制節點
涉及到復制的服務器,主服務和從服務的統稱。一個節點既可以是主服務器也可以是從服務器。
5. 復制服務器(RPS)
在數據復制環境中,負責配置復制環境,定義復制關系的服務器。RPS有且僅有一臺,它只負責配置和監控,并不參與到復制過程中。
6. 復制關系
復制關系指明主服務器和從服務器以何種方式進行復制。按照復制的方式,復制關系分為同步復制和異步復制。
7. 同步復制關系
主服務器數據更新立即復制到從服務器。
8. 異步復制關系
主服務器和從服務器在某段時間內數據可能是不同的,主服務器數據更新不會立刻同步到從服務器,而是在經過一段時間后才進行復制。異步復制的同步時機由指定的定時器確定。
9. 邏輯日志
記錄產生數據變化的邏輯操作的日志。記錄的邏輯操作包括INSERT、UPDATE、DELETE、TRUNCATE、ROLLBACK和COMMIT。
10. 復制源對象
主服務器上作為復制數據源的對象,可以是庫、模式或表。在該對象上的操作都會被記錄成邏輯日志,發送給從服務器進行復制操作。

11. 復制目標對象
從服務器上作為復制數據目標的對象。從服務器接收到邏輯日志后,將復制源對象的變化復制到復制目標對象中。

12. 復制對象映射
一對復制源對象和復制目標對象構成一個復制對象映射。構成映射的源對象和目標對象必須是同一類型的對象。根據對象的類型,復制映射分為庫級、模式級和表級三個級別。其中表級要求源表和目標表結構完全一致,庫級和模式級沒有要求。庫級和模式級復制映射會將其DDL也進行復制。復制映射包括只讀模式和非只讀模式。對于只讀模式的映射,映射的目的表禁止用戶更新。
13. 復制組
一組邏輯相關的復制關系可以構造成為復制組。通過復制組,可以構造出一對多復制、多對一復制、級聯復制、對稱復制、循環復制等復雜的邏輯復制環境。

體系構架
數據復制系統由以下部件構成:
1. 復制服務器;
2. 復制節點;
3. 各實例站點間通訊的MAL系統。

除了系統管理員通過復制服務器定義復制和處理異常外,其他部分的處理及主從服務器之間復制操作對于用戶是透明的。整個復制環境的配置境況如下圖所示。
DM7數據復制中表級復制是怎樣的

在整個環境中有且僅有一臺復制服務器(RPS),用戶通過RPS定義復制及復制環境,但RPS并不參與到復制過程中。
DM7中,將復制邏輯日志按照配置歸檔到本站點指定目錄稱為本地歸檔,將日志的發送稱為日志的遠程歸檔。
復制節點上,與復制相關的配置文件有dmtimer.ini、dmllog.ini、dmrep.ini。各個配置文件在復制中的功能如下表所示
DM7數據復制中表級復制是怎樣的
這些文件均是RPS依據用戶配置通過MAL系統自動生成或修改的,管理員不需要手動進行管理。

在數據復制過程中,除了配置文件,其他的重要文件如下表。
DM7數據復制中表級復制是怎樣的

這些文件都是流式文件,主服務器在執行過程中,邏輯日志先記錄到邏輯日志文件中,并根據配置的信息,將邏輯日志分別分發歸檔到不同的邏輯日志歸檔文件中,并在恰當的時機將邏輯日志歸檔文件的內容發送給從服務器。

從服務器接收到一批數據就產生一個復制數據文件將數據存儲其中,防止從服務器復制速度低導致復制數據的丟失。
邏輯日志文件大小限制為32M,兩個文件交替使用。

歸檔路徑內每個邏輯日志歸檔文件大小限制為32M,文件寫滿后增加新文件來存放新的記錄。在dmllog.ini中有配置歸檔路徑內所有文件總的空間限制,若達到限制的空間,則會刪除之前的文件;若配置為無空間限制,則管理員可根據復制情況進行刪除。

復制數據文件是從服務器一次接收的復制數據的臨時文件,其大小不會超過32K;在其數據復制結束后會被自動刪除。

配置數據復制在RPS上進行,與數據復制相關的過程如下:
1. SP_INIT_REP_SYS*
定義:
SP_INIT_REP_SYS(
CREATE_FLAG INT
);
功能說明:
創建或刪除數據復制所需的系統表
參數說明:
CREATE_FLAG:為1表示創建復制所需系統表;為0表示刪除這些系統表
返回值:

舉例說明:
創建復制所需的系統表
SP_INIT_REP_SYS(1);

2. SP_RPS_ADD_GROUP
定義:
SP_RPS_ADD_GROUP(
GROUP_NAME VARCHAR(128),
GROUP_DESC VARCHAR(1000)
);
功能說明:
創建復制組
參數說明:
GROUP_NAME:創建的復制組名稱
GROUP_DESC:復制組描述
返回值:

備注:
指示RPS創建一個新的復制組。如果已存在同名復制組則報錯。
舉例說明:
創建復制組REP_GRP_B2C
SP_RPS_ADD_GROUP('REP_GRP_B2C','主從同步復制');

3. SP_RPS_DROP_GROUP
定義:
SP_RPS_DROP_GROUP(
GROUP_NAME VARCHAR(128)
);
功能說明:
刪除復制組
參數說明:
GROUP_NAME:復制組名稱
返回值:

舉例說明:
刪除復制組REP_GRP_B2C
SP_RPS_DROP_GROUP ('REP_GRP_B2C');

4. SP_RPS_ADD_REPLICATION
定義:
SP_RPS_ADD_REPLICATION(
GRP_NAME VARCHAR(128),
REP_NAME VARCHAR(128),
REP_DESC VARCHAR(1000),
MINSTANCE VARCHAR(128),
SINSTANCE VARCHAR(128),
REP_TIMER VARCHAR(128),
ARCH_PATH VARCHAR(256)
);
功能說明:
創建復制關系
參數說明:
GRP_NAME:復制組名
REP_NAME:復制名,必須在RPS上唯一
REP_DESC:復制描述
MINSTANCE:主節點實例名,必須在RPS的MAL中已配置
SINSTANCE:從節點實例名,必須在RPS的MAL中已配置
REP_TIMER:復制定時器名。借助定時器,可以設置復制數據的同步時機。如果是同步復制則為NULL
ARCH_PATH:主服務器上邏輯日志的完整歸檔路徑。
返回值:

舉例說明:
創建復制關系
SP_RPS_ADD_REPLICATION ('REP_GRP_B2C', 'REPB2C', 'B到C的同步復制', 'B', 'C', NULL, '{ DEFARCHPATH}\REPB2C');

5. SP_RPS_DROP_REPLICATION
定義:
SP_RPS_DROP_REPLICATION (
REP_NAME VARCHAR(128)
);
功能說明:
刪除復制關系
參數說明:
REP_NAME:復制名稱
返回值:

舉例說明:
刪除復制關系
SP_RPS_DROP_REPLICATION ('REPB2C');

6. SP_RPS_SET_ROUTE_FAULT_TIMEOUT
定義:
SP_RPS_SET_ROUTE_FAULT_TIMEOUT (
REP_NAME VARCHAR(128),
TIMEOUTS INT
);
功能說明:
設置復制路徑故障超時
參數說明:
REP_NAME:復制關系名。
TIMEOUTS:故障超時值,以秒為單位。0為立即超時;-1表示無超時限制返回值:

備注:
該接口用于設置復制路徑故障處理策略。設置后,RPS如檢測到復制路徑產生故障,且故障持續超過設定的超時值后,則需要取消故障的復制關系。
舉例說明:
設置復制路徑故障超時
SP_RPS_SET_ROUTE_FAULT_TIMEOUT ('REPB2C',10);

7. SP_RPS_SET_INST_FAULT_TIMEOUT
定義:
SP_RPS_SET_INST_FAULT_TIMEOUT (
INST_NAME VARCHAR(128),
TIMEOUTS INT
);
功能說明:
設置復制節點故障超時
參數說明:
INST_NAME:復制節點實例名
TIMEOUTS:故障超時值,以秒為單位。0為立即超時;-1表示無超時限制
返回值:

舉例說明:
設置復制節點故障超時
SP_RPS_SET_INST_FAULT_TIMEOUT ('B',10);

8. SP_RPS_ADD_TIMER
定義:
SP_RPS_ADD_TIMER(
TIMER_NAME VARCHAR(128),
TIMER_DESC VARCHAR(1000),
TYPE$ INT,
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 INT
);
功能說明:
設置復制關系的定時器
參數說明:
TIMER_NAME:定時器名
TIMER_DESC:定時器描述
TYPE$:定時器類型,取值如下:
1:執行一次
2:每日執行
3:每周執行
4:按月執行的第幾天
5:按月執行的第一周
6:按月執行的第二周
7:按月執行的第三周
8:按月執行的第四周
9:按月執行的最后一周
FREQ_INTERVAL:間隔的月/周(調度類型決定)數
FREQ_SUB_INTERVAL: 間隔天數
FREQ_MINUTE_INTERVAL:間隔的分鐘數
START_TIME:開始時間
END_TIME:結束時間
DURING_START_DATE:有效日期時間段的開始日期時間
DURING_END_DATE:有效日期時間段結束日期時間
NO_END_DATA_FLAG:結束日期是否無效標識,0表示結束日期有效,1表示無效
本過程的TYPE$、FERQ_INTERVAL、FREQ_SUB_INTERVAL、FREQ_MINUTE_INTERVAL、START_TIME、END_TIME、DURING_START_DATE、DURING_END_DATE和NO_END_DATA_FLAG分別與過程SP_ADD_TIMER的參數TYPE、FREQ_MONTH_WEEK_INTERVAL、FREQ_SUB_INTERVAL、FREQ_MINUTE_INTERVAL、START_TIME、END_TIME、DURING_START_DATE、DURING_END_DATE和NO_END_DATE_FLAG對應,其具體說明可參考過程SP_ADD_TIMER的說明。
返回值:

舉例說明:
設置復制關系的定時器
SP_RPS_ADD_TIMER ('TIMER1','按天計算', 1, 1, 0, 1, CURTIME, '23:59:59', NOW, NULL, 1);

9. SP_RPS_REP_RESET_TIMER
定義:
SP_RPS_REP_RESET_TIMER(
REP_NAME VARCHAR(128),
TIMER_NAME VARCHAR(128)
);
功能說明:
重新設置復制關系的定時器
參數說明:
REP_NAME:復制名
TIMER_NAME:新的定時器名
返回值:

舉例說明:
重新設置復制關系的定時器
SP_RPS_REP_RESET_TIMER ('REPB2C', 'TIMER1');

10. SP_RPS_ADD_TAB_MAP
定義:
SP_RPS_ADD_TAB_MAP(
REP_NAME VARCHAR(128),
MTAB_SCHEMA VARCHAR(128),
MTAB_NAME VARCHAR(128),
STAB_SCHEMA VARCHAR(128),
STAB_NAME VARCHAR(128),
READ_ONLY_MODE INT
);
功能說明:
添加表級復制映射
參數說明:
REP_NAME:復制關系名
MTAB_SCHEMA:主表模式名
MTAB_NAME:主表名
STAB_SCHEMA:從表模式名
STAB_NAME:從表名
READ_ONLY_MODE:只讀復制模式,1表示只讀模式,從表只接受復制更新,0表示非只讀模式
返回值:

舉例說明:
添加復制映射
SP_RPS_ADD_TAB_MAP('REPB2C', 'USER1', 'T1', 'USER2', 'T2', 0);

11. SP_RPS_DROP_TAB_MAP
定義:
SP_RPS_DROP_TAB_MAP(
REP_NAME VARCHAR(128),
MTAB_SCHEMA VARCHAR(128),
MTAB_NAME VARCHAR(128),
STAB_SCHEMA VARCHAR(128),
STAB_NAME VARCHAR(128),
);
功能說明:
刪除表級復制映射
參數說明:
REP_NAME:復制關系名
MTAB_SCHEMA:主表模式名
MTAB_NAME:主表名
STAB_SCHEMA:從表模式名
STAB_NAME:從表名
返回值:

舉例說明:
刪除表級復制映射
SP_RPS_DROP_TAB_MAP('REPB2C', 'USER1', 'T1', 'USER2', 'T2');

12. SP_RPS_ADD_SCH_MAP
定義:
SP_RPS_ADD_SCH_MAP(
REP_NAME VARCHAR(128),
MSCH VARCHAR(128),
SSCH VARCHAR(128),
READ_ONLY_MODE INT
);
功能說明:
添加模式級復制映射
參數說明:
REP_NAME:復制關系名
MSCH:主模式名
SSCH: 從表模式名
READ_ONLY_MODE:只讀復制模式,1表示只讀模式,從表只接受復制更新,0表示非只讀模式
返回值:

舉例說明:
添加復制映射
SP_RPS_ADD_SCH_MAP('REPB2C', 'USER1', 'USER2', 0);

13. SP_RPS_DROP_SCH_MAP
定義:
SP_RPS_DROP_SCH_MAP(
REP_NAME VARCHAR(128),
MSCH VARCHAR(128),
SSCH VARCHAR(128)
);
功能說明:
刪除模式級復制映射
參數說明:
REP_NAME:復制關系名
MSCH:主模式名
SSCH:從模式名
返回值:

舉例說明:
刪除模式級復制映射
SP_RPS_DROP_SCH_MAP('REPB2C', 'USER1', 'USER2');

14. SP_RPS_ADD_DB_MAP
定義:
SP_RPS_ADD_DB_MAP(
REP_NAME VARCHAR(128),
READ_ONLY_MODE INT
);
功能說明:
添加庫級復制映射
參數說明:
REP_NAME:復制關系名
READ_ONLY_MODE:只讀復制模式,1表示只讀模式,從表只接受復制更新,0表示非只讀模式
返回值:

舉例說明:
添加庫級復制映射
SP_RPS_ADD_DB_MAP('REPB2C', 0);

15. SP_RPS_DROP_DB_MAP
定義:
SP_RPS_DROP_DB_MAP(
REP_NAME VARCHAR(128)
);
功能說明:
刪除庫級復制映射
參數說明:
REP_NAME:復制關系名
返回值:

舉例說明:
刪除庫級復制映射
SP_RPS_DROP_DB_MAP('REPB2C');

16. SP_RPS_SET_BEGIN
定義:
SP_RPS_SET_BEGIN(
GRP_NAME VARCHAR(128),
);
功能說明:
開始復制設置
參數說明:
GRP_NAME:復制組名
返回值:

備注:
開始對指定復制組進行屬性設置。創建/刪除復制關系與創建/刪除復制映射等接口都必須在此接口調用后執行,否則會報錯“錯誤的復制設置序列”。同一會話中也不能同時開始多個復制設置。
舉例說明:
復制組REPB2C開始復制
SP_RPS_SET_BEGIN(' REP_GRP_B2C');

17. SP_RPS_SET_APPLY
定義:
SP_RPS_SET_APPLY ();
功能說明:
提交復制設置,保存并提交本次設置的所有操作。如果需要繼續設置,則必須重新調用SP_RPS_SET_BEGIN
參數說明:

返回值:

舉例說明:
提交復制設置
SP_RPS_SET_APPLY ();
18. SP_RPS_SET_CANCEL
定義:
SP_RPS_SET_CANCEL ();
功能說明:
放棄復制設置,放棄本次設置的所有操作。如果需要重新設置,則必須再次調用SP_RPS_SET_BEGIN
參數說明:

返回值:

舉例說明:
放棄復制設置
SP_RPS_SET_CANCEL();

DM 的數據復制可以在表級,模式級和庫級進行配置,本篇我們看下表級數據復制的配置過程。
下面舉一個簡單的例子來說明數據復制的配置。
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.t1表,從數據庫上存在與主數據庫hy.t1表結構完全相同的wy.t1表,現需要創建一個主數據庫上hy.t1表到從數據庫上wy.t1表的同步復制關系,其名稱為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: 16.792(ms). Execute id is 3.
SQL> select * from SYSREP.RPS_GROUPS;
LINEID     NAME          ID          DESC$       
---------- ------------- ----------- ------------
1          REP_GRP_hy2wy 1           主從同步復制
used time: 1.599(ms). Execute id is 4.

開始設置

SQL> SP_RPS_SET_BEGIN('REP_GRP_hy2wy');
DMSQL executed successfully
used time: 1.081(ms). Execute id is 6.

添加復制關系

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

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

SQL> SP_RPS_ADD_TAB_MAP('REPhy2wy', 'HY', 'T1', 'WY', 'T1', 0);
DMSQL executed successfully
used time: 4.495(ms). Execute id is 10.

提交設置

SQL> SP_RPS_SET_APPLY();
DMSQL executed successfully
used time: 00:00:05.038. Execute id is 12.
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 1           1           1           2           /dm_home/dmdba/dmdbms/dmreplog -1            0           NULL                        1           NULL       hy到wy的同步復制
used time: 0.534(ms). Execute id is 13.
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        1           1           -1            0           NULL                        0              NULL
2          wy        1           2           -1            0           NULL                        0              NULL
used time: 0.499(ms). Execute id is 14.
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          1           HY        T1        150995951   1297        WY        T1        150995951   1296        0
used time: 0.523(ms). Execute id is 15.
SQL> select * from SYSREP.RPS_FAULT_HISTORY;
no rows
used time: 1.136(ms). Execute id is 16.
SQL> select * from SYSREP.RPS_CONFLICTS;
no rows
used time: 1.336(ms). Execute id is 17.
SQL> select * from SYSREP.RPS_TIMERS;
no rows
used time: 0.987(ms). Execute id is 18.

至此,表復制完成。注意一點,DM的復制配置必須在開始復制配置之前執行SP_RPS_SET_BEGIN,配置完成之后執行SP_RPS_SET_APPLY提交。
驗證同步
主庫的邏輯日志:

[root@jydm2 dmreplog]# ls -lrt
總用量 4
-rw-r--r-- 1 dmdba dinstall 48 10月 21 08:24 llog_arch_file_20141021082409.log

主庫對T1表插入數據:

[dmdba@jydm2 bin]$ ./disql hy/hy
Server[LOCALHOST:5236]:mode is normal, state is open
login used time: 6.047(ms)
disql V7.1.6.46-Build(2018.02.08-89107)ENT 
Connected to: DM 7.1.6.46
SQL> select * from t1;
no rows
used time: 0.998(ms). Execute id is 4.
S SQL> insert into t1 values(2,'hy2');
affect rows 1
used time: 0.777(ms). Execute id is 8.
SQL> commit;
executed successfully
used time: 1.141(ms). Execute id is 9.
SQL> select * from t1;
LINEID     ID USERNAME
---------- -- --------
1          1  hy
2          2  hy2
used time: 0.403(ms). Execute id is 10.

從庫查詢: 同步成功,主庫之前的數據無法同步過來,只對后來操作的數據有效

[dmdba@jydm3 bin]$ ./disql wy/wy
Server[LOCALHOST:5236]:mode is normal, state is open
login used time: 5.844(ms)
disql V7.1.6.46-Build(2018.02.08-89107)ENT 
Connected to: DM 7.1.6.46
SQL> select * from t1;     
LINEID     ID USERNAME
---------- -- --------
1          1  hy
2          2  hy2
used time: 0.618(ms). Execute id is 9.

在主庫中更新記錄

SQL> update t1 set username='hy1' where id=1;
affect rows 1
used time: 1.427(ms). Execute id is 11.
SQL> commit;
executed successfully
used time: 0.869(ms). Execute id is 12.
SQL> select * from t1;
LINEID     ID USERNAME
---------- -- --------
1          1  hy1
2          2  hy2
used time: 0.339(ms). Execute id is 13.

查看從庫記錄

SQL> select * from t1; 
LINEID     ID USERNAME
---------- -- --------
1          1  hy1
2          2  hy2
used time: 1.272(ms). Execute id is 12.

主庫刪除T1表的所有數據:

SQL> truncate table t1;
executed successfully
used time: 3.283(ms). Execute id is 14.

從庫的所有數據也刪除了

SQL> select * from t1;
no rows
used time: 0.793(ms). Execute id is 15.

整個復制的環境中,邏輯日志僅存在主庫中。
我們配置的是同步的復制,如果想改成異步同步可以添加個計時器,比如:
SP_RPS_ADD_TIMER('hy2wy_TIMER','從hy到wy定時復制',1,0,0,0,'23:18:33',NULL,'2019-12-18 23:18:33',NULL,1);
SP_RPS_REP_RESET_TIMER('REPhy2wy','hy2wy_TIMER');

若需要刪除復制組,則該復制組不能處于配置階段,即該組的配置已經提交或取消。
監控數據復制
配置完成后復制服務器RPS雖然不參與復制的具體執行,但是在復制過程中,還是建議保持RPS的運行來對復制進行監控。
復制系統內,狀態分為復制節點的狀態和復制關系的狀態。具體內容見下表。

復制節點的系統狀態在SYSREP.RPS_INSTANCES中的VALID_FLAG字段表示;網絡狀態在SYSREP.RPS_INSTANCES表中NET_VALID_FLAG的字段表示。
復制關系的狀態在SYSREP.RPS_REPLICATIONS中的VALID_FLAG字段表示。

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 1           1           1           2           /dm_home/dmdba/dmdbms/dmreplog -1            0           NULL                        1           NULL       hy到wy的同步復制
used time: 1.339(ms). Execute id is 23.
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        1           1           -1            0           NULL                        0              NULL
2          wy        1           2           -1            0           NULL                        0              NULL
used time: 0.574(ms). Execute id is 24.

復制系統的配置信息可以通過在復制RPS上查詢系統表來實現。在RPS上,復制相關的信息都在SYSREP模式中。
復制的監視按復制組為單位進行,RPS每隔1分鐘輪詢探查所有的復制組,在每個復制組內,依次探測各個復制節點,要求其返回復制節點本身的狀態和其所涉及的復制的狀態。
這里需要特別說明的是節點的系統異常狀態是指該節點在復制環境中的狀態,是一個推測值。當RPS無法得到節點的返回消息,其他節點的返回消息中所有涉及到該節點的復制關系都是異常時,RPS就認為該節點系統異常。
若復制結點或復制關系發生異常,這些異常都會記錄在SYSREP.RPS_FAULT_HISTORY表中。若其END_TIME字段為NULL,表示該故障還沒有結束,管理員需盡快檢查復制節點的狀態及其網絡連接。

SQL> select * from SYSREP.RPS_CONFLICTS;
no rows
used time: 1.336(ms). Execute id is 17.

DM7并沒有特意設置對錯誤歷史的管理接口,管理員可以通過對SYSREP.RPS_FAULT_HISTORY表的刪除和查詢來實現錯誤記錄的管理。
至此,復制環境配置完成。以上的例子只是一個最簡單的復制環境。復制的配置靈活,在同一個復制組內,一個主服務器可以有多個從服務器,一個復制節點可以既是主服務器又是從服務器。管理員可以根據實際需要,配置出對稱、一對多、多對一、級聯、循環的復制環境。
在配置過程中或配置完成后,可以對復制的配置進行修改。修改包括復制組、復制關系、復制對象的刪除和復制關系屬性的修改。這些修改操作都必須在開始復制SP_RPS_SET_BEGIN和提交復制SP_RPS_SET_APPLY之間進行。若需要刪除復制組,則該復制組不能處于配置階段,即該組的配置已經提交或取消。
添加一個定時器,將同步復制修改為異步復制

SQL> SP_RPS_ADD_TIMER('hy2wy_TIMER','從hy到wy定時復制',1,0,0,0,'23:18:33',NULL,'2019-12-18 23:18:33',NULL,1);
SP_RPS_ADD_TIMER('hy2wy_TIMER','從hy到wy定時復制',1,0,0,0,'23:18:33',NULL,'2019-12-18 23:18:33',NULL,1);
[-8702]:group not set begin.
used time: 33.874(ms). Execute id is 0.

提示復制組設置沒有開始所以不能進行修改

SQL> SP_RPS_SET_BEGIN('REP_GRP_hy2wy');
DMSQL executed successfully
used time: 0.481(ms). Execute id is 26.

設置時間開始時間為2019-12-18 23:38:33

SQL> SP_RPS_ADD_TIMER('hy2wy_TIMER','從hy到wy定時復制',1,0,0,0,'23:38:33',NULL,'2019-12-18 23:38:33',NULL,1);
DMSQL executed successfully
used time: 13.217(ms). Execute id is 29.
SQL> SP_RPS_REP_RESET_TIMER('REPhy2wy','hy2wy_TIMER');
DMSQL executed successfully
used time: 0.790(ms). Execute id is 30.
SQL> SP_RPS_SET_APPLY();
DMSQL executed successfully
used time: 24.494(ms). Execute id is 31.

現在在主庫中插入數據

SQL> select * from t1;
LINEID     ID USERNAME
---------- -- --------
1          1  hy
used time: 2.296(ms). Execute id is 4.
SQL> insert into t1 values(2,'hy2');
affect rows 1
used time: 1.519(ms). Execute id is 5.
SQL> commit;
executed successfully
used time: 1.430(ms). Execute id is 6.
SQL> select * from t1;
LINEID     ID USERNAME
---------- -- --------
1          1  hy
2          2  hy2
used time: 0.512(ms). Execute id is 8.

在從庫中查詢記錄

SQL> select * from t1;
LINEID     ID USERNAME
---------- -- --------
1          1  hy
used time: 0.337(ms). Execute id is 8.
SQL> select sysdate;
LINEID     SYSDATE                    
---------- ---------------------------
1          2019-12-18 23:38:37.570259
used time: 0.263(ms). Execute id is 9.

可以看到在時間2019-12-18 23:38:37.570259時間點表數據還沒有同步到從庫

SQL> select sysdate;
LINEID     SYSDATE                    
---------- ---------------------------
1          2019-12-18 23:39:05.629576
used time: 0.432(ms). Execute id is 12.
SQL> select * from t1;
LINEID     ID USERNAME
---------- -- --------
1          1  hy
2          2  hy2
used time: 0.458(ms). Execute id is 13.

可以看到在時間2019-12-18 2019-12-18 23:39:05.629576時間點表數據已經同步到從庫

刪除復制映射

SQL> SP_RPS_DROP_TAB_MAP('REPhy2wy', 'HY', 'T1', 'WY', 'T1');
DMSQL executed successfully
used time: 1.485(ms). Execute id is 36.

修改復制的錯誤超時時間,超時的時間單位是秒

SQL> SP_RPS_SET_ROUTE_FAULT_TIMEOUT('REPhy2wy', 60);
DMSQL executed successfully
used time: 0.791(ms). Execute id is 37.

刪除復制關系

SQL> SP_RPS_DROP_REPLICATION('REPhy2wy');
DMSQL executed successfully
used time: 1.807(ms). Execute id is 38.

刪除整個復制組

SQL> SP_RPS_DROP_GROUP('REP_GRP_hy2wy');
DMSQL executed successfully
used time: 1.807(ms). Execute id is 39.

刪除數據復制所使用的用戶和系統表

SQL> SP_INIT_REP_SYS(0);
DMSQL executed successfully
used time: 160.803(ms). Execute id is 51.
SQL> select * from SYSREP.RPS_INSTANCES;
select * from SYSREP.RPS_INSTANCES;
[-2103]:Error in line: 1
Invalid schema name [SYSREP].
used time: 0.735(ms). Execute id is 0.

另外,在配置或修改配置時想要取消操作,可以使用如下系統過程結束配置。

SQL> SP_RPS_SET_CANCEL();
DMSQL executed successfully
used time: 0.749(ms). Execute id is 40.

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

向AI問一下細節

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

dm7
AI

海伦市| 柯坪县| 栾城县| 甘德县| 清河县| 深水埗区| 凤阳县| 大宁县| 满洲里市| 阿克陶县| 乐业县| 磐安县| 镇原县| 乳山市| 务川| 福建省| 莫力| 丹东市| 开平市| 唐山市| 庆云县| 宣恩县| 会理县| 高台县| 通道| 育儿| 赤城县| 海晏县| 习水县| 白玉县| 利川市| 宿松县| 通辽市| 达孜县| 临颍县| 江北区| 崇仁县| 湘西| 台江县| 浦江县| 桃园县|