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

DM7數(shù)據(jù)復(fù)制中表級復(fù)制是怎樣的

159次閱讀
沒有評論

共計(jì) 21878 個(gè)字符,預(yù)計(jì)需要花費(fèi) 55 分鐘才能閱讀完成。

DM7 數(shù)據(jù)復(fù)制中表級復(fù)制是怎樣的,很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面丸趣 TV 小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

達(dá)夢數(shù)據(jù)復(fù)制(DATA REPLICATION)是一個(gè)分擔(dān)系統(tǒng)訪問壓力、加快異地訪問響應(yīng)速度、提高數(shù)據(jù)可靠性的解決方案。將一個(gè)服務(wù)器實(shí)例上的數(shù)據(jù)變更復(fù)制到另外的服務(wù)器實(shí)例。可以用于解決大、中型應(yīng)用中出現(xiàn)的因來自不同地域、不同部門、不同類型的數(shù)據(jù)訪問請求導(dǎo)致數(shù)據(jù)庫服務(wù)器超負(fù)荷運(yùn)行、網(wǎng)絡(luò)阻塞、遠(yuǎn)程用戶的數(shù)據(jù)響應(yīng)遲緩的問題。

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

11. 復(fù)制目標(biāo)對象
從服務(wù)器上作為復(fù)制數(shù)據(jù)目標(biāo)的對象。從服務(wù)器接收到邏輯日志后,將復(fù)制源對象的變化復(fù)制到復(fù)制目標(biāo)對象中。

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

體系構(gòu)架
數(shù)據(jù)復(fù)制系統(tǒng)由以下部件構(gòu)成:
1. 復(fù)制服務(wù)器;
2. 復(fù)制節(jié)點(diǎn);
3. 各實(shí)例站點(diǎn)間通訊的 MAL 系統(tǒng)。

除了系統(tǒng)管理員通過復(fù)制服務(wù)器定義復(fù)制和處理異常外,其他部分的處理及主從服務(wù)器之間復(fù)制操作對于用戶是透明的。整個(gè)復(fù)制環(huán)境的配置境況如下圖所示。

在整個(gè)環(huán)境中有且僅有一臺(tái)復(fù)制服務(wù)器(RPS),用戶通過 RPS 定義復(fù)制及復(fù)制環(huán)境,但 RPS 并不參與到復(fù)制過程中。
DM7 中,將復(fù)制邏輯日志按照配置歸檔到本站點(diǎn)指定目錄稱為本地歸檔,將日志的發(fā)送稱為日志的遠(yuǎn)程歸檔。
復(fù)制節(jié)點(diǎn)上,與復(fù)制相關(guān)的配置文件有 dmtimer.ini、dmllog.ini、dmrep.ini。各個(gè)配置文件在復(fù)制中的功能如下表所示

這些文件均是 RPS 依據(jù)用戶配置通過 MAL 系統(tǒng)自動(dòng)生成或修改的,管理員不需要手動(dòng)進(jìn)行管理。

在數(shù)據(jù)復(fù)制過程中,除了配置文件,其他的重要文件如下表。

這些文件都是流式文件,主服務(wù)器在執(zhí)行過程中,邏輯日志先記錄到邏輯日志文件中,并根據(jù)配置的信息,將邏輯日志分別分發(fā)歸檔到不同的邏輯日志歸檔文件中,并在恰當(dāng)?shù)臅r(shí)機(jī)將邏輯日志歸檔文件的內(nèi)容發(fā)送給從服務(wù)器。

從服務(wù)器接收到一批數(shù)據(jù)就產(chǎn)生一個(gè)復(fù)制數(shù)據(jù)文件將數(shù)據(jù)存儲(chǔ)其中,防止從服務(wù)器復(fù)制速度低導(dǎo)致復(fù)制數(shù)據(jù)的丟失。
邏輯日志文件大小限制為 32M,兩個(gè)文件交替使用。

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

復(fù)制數(shù)據(jù)文件是從服務(wù)器一次接收的復(fù)制數(shù)據(jù)的臨時(shí)文件,其大小不會(huì)超過 32K;在其數(shù)據(jù)復(fù)制結(jié)束后會(huì)被自動(dòng)刪除。

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

舉例說明:
創(chuàng)建復(fù)制所需的系統(tǒng)表
SP_INIT_REP_SYS(1);

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

備注:
指示 RPS 創(chuàng)建一個(gè)新的復(fù)制組。如果已存在同名復(fù)制組則報(bào)錯(cuò)。
舉例說明:
創(chuàng)建復(fù)制組 REP_GRP_B2C
SP_RPS_ADD_GROUP(REP_GRP_B2C , 主從同步復(fù)制

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

舉例說明:
刪除復(fù)制組 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)
);
功能說明:
創(chuàng)建復(fù)制關(guān)系
參數(shù)說明:
GRP_NAME:復(fù)制組名
REP_NAME:復(fù)制名,必須在 RPS 上唯一
REP_DESC:復(fù)制描述
MINSTANCE:主節(jié)點(diǎn)實(shí)例名,必須在 RPS 的 MAL 中已配置
SINSTANCE:從節(jié)點(diǎn)實(shí)例名,必須在 RPS 的 MAL 中已配置
REP_TIMER:復(fù)制定時(shí)器名。借助定時(shí)器,可以設(shè)置復(fù)制數(shù)據(jù)的同步時(shí)機(jī)。如果是同步復(fù)制則為 NULL
ARCH_PATH:主服務(wù)器上邏輯日志的完整歸檔路徑。
返回值:

舉例說明:
創(chuàng)建復(fù)制關(guān)系
SP_RPS_ADD_REPLICATION (REP_GRP_B2C , REPB2C , B 到 C 的同步復(fù)制 , B , C , NULL, { DEFARCHPATH}\REPB2C

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

舉例說明:
刪除復(fù)制關(guān)系
SP_RPS_DROP_REPLICATION (REPB2C

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

備注:
該接口用于設(shè)置復(fù)制路徑故障處理策略。設(shè)置后,RPS 如檢測到復(fù)制路徑產(chǎn)生故障,且故障持續(xù)超過設(shè)定的超時(shí)值后,則需要取消故障的復(fù)制關(guān)系。
舉例說明:
設(shè)置復(fù)制路徑故障超時(shí)
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
);
功能說明:
設(shè)置復(fù)制節(jié)點(diǎn)故障超時(shí)
參數(shù)說明:
INST_NAME:復(fù)制節(jié)點(diǎn)實(shí)例名
TIMEOUTS:故障超時(shí)值,以秒為單位。0 為立即超時(shí);- 1 表示無超時(shí)限制
返回值:

舉例說明:
設(shè)置復(fù)制節(jié)點(diǎn)故障超時(shí)
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
);
功能說明:
設(shè)置復(fù)制關(guān)系的定時(shí)器
參數(shù)說明:
TIMER_NAME:定時(shí)器名
TIMER_DESC:定時(shí)器描述
TYPE$:定時(shí)器類型,取值如下:
1:執(zhí)行一次
2:每日執(zhí)行
3:每周執(zhí)行
4:按月執(zhí)行的第幾天
5:按月執(zhí)行的第一周
6:按月執(zhí)行的第二周
7:按月執(zhí)行的第三周
8:按月執(zhí)行的第四周
9:按月執(zhí)行的最后一周
FREQ_INTERVAL:間隔的月 / 周(調(diào)度類型決定)數(shù)
FREQ_SUB_INTERVAL:間隔天數(shù)
FREQ_MINUTE_INTERVAL:間隔的分鐘數(shù)
START_TIME:開始時(shí)間
END_TIME:結(jié)束時(shí)間
DURING_START_DATE:有效日期時(shí)間段的開始日期時(shí)間
DURING_END_DATE:有效日期時(shí)間段結(jié)束日期時(shí)間
NO_END_DATA_FLAG:結(jié)束日期是否無效標(biāo)識,0 表示結(jié)束日期有效,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 的參數(shù) 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 對應(yīng),其具體說明可參考過程 SP_ADD_TIMER 的說明。
返回值:

舉例說明:
設(shè)置復(fù)制關(guān)系的定時(shí)器
SP_RPS_ADD_TIMER (TIMER1 , 按天計(jì)算 , 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)
);
功能說明:
重新設(shè)置復(fù)制關(guān)系的定時(shí)器
參數(shù)說明:
REP_NAME:復(fù)制名
TIMER_NAME:新的定時(shí)器名
返回值:

舉例說明:
重新設(shè)置復(fù)制關(guān)系的定時(shí)器
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
);
功能說明:
添加表級復(fù)制映射
參數(shù)說明:
REP_NAME:復(fù)制關(guān)系名
MTAB_SCHEMA:主表模式名
MTAB_NAME:主表名
STAB_SCHEMA:從表模式名
STAB_NAME:從表名
READ_ONLY_MODE:只讀復(fù)制模式,1 表示只讀模式,從表只接受復(fù)制更新,0 表示非只讀模式
返回值:

舉例說明:
添加復(fù)制映射
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),
);
功能說明:
刪除表級復(fù)制映射
參數(shù)說明:
REP_NAME:復(fù)制關(guān)系名
MTAB_SCHEMA:主表模式名
MTAB_NAME:主表名
STAB_SCHEMA:從表模式名
STAB_NAME:從表名
返回值:

舉例說明:
刪除表級復(fù)制映射
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
);
功能說明:
添加模式級復(fù)制映射
參數(shù)說明:
REP_NAME:復(fù)制關(guān)系名
MSCH:主模式名
SSCH:從表模式名
READ_ONLY_MODE:只讀復(fù)制模式,1 表示只讀模式,從表只接受復(fù)制更新,0 表示非只讀模式
返回值:

舉例說明:
添加復(fù)制映射
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)
);
功能說明:
刪除模式級復(fù)制映射
參數(shù)說明:
REP_NAME:復(fù)制關(guān)系名
MSCH:主模式名
SSCH:從模式名
返回值:

舉例說明:
刪除模式級復(fù)制映射
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
);
功能說明:
添加庫級復(fù)制映射
參數(shù)說明:
REP_NAME:復(fù)制關(guān)系名
READ_ONLY_MODE:只讀復(fù)制模式,1 表示只讀模式,從表只接受復(fù)制更新,0 表示非只讀模式
返回值:

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

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

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

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

備注:
開始對指定復(fù)制組進(jìn)行屬性設(shè)置。創(chuàng)建 / 刪除復(fù)制關(guān)系與創(chuàng)建 / 刪除復(fù)制映射等接口都必須在此接口調(diào)用后執(zhí)行,否則會(huì)報(bào)錯(cuò)“錯(cuò)誤的復(fù)制設(shè)置序列”。同一會(huì)話中也不能同時(shí)開始多個(gè)復(fù)制設(shè)置。
舉例說明:
復(fù)制組 REPB2C 開始復(fù)制
SP_RPS_SET_BEGIN(REP_GRP_B2C

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

返回值:

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

返回值:

舉例說明:
放棄復(fù)制設(shè)置
SP_RPS_SET_CANCEL();

DM 的數(shù)據(jù)復(fù)制可以在表級,模式級和庫級進(jìn)行配置,本篇我們看下表級數(shù)據(jù)復(fù)制的配置過程。
下面舉一個(gè)簡單的例子來說明數(shù)據(jù)復(fù)制的配置。
1. 準(zhǔn)備工作
參與復(fù)制的復(fù)制實(shí)例的信息如下表所示。
數(shù)據(jù)庫 實(shí)例名 IP 地址 數(shù)據(jù)庫端口號 MAL 端口號 文件目錄
復(fù)制數(shù)據(jù)庫 jydm 10.10.10.180 5236 5241 /dm_home/dmdba/dmdbms/data/
主數(shù)據(jù)庫 hy 10.10.10.184 5236 5242 /dm_home/dmdba/dmdbms/data/
從數(shù)據(jù)庫 wy 10.10.10.185 5236 5243 /dm_home/dmdba/dmdbms/data/

假設(shè)主數(shù)據(jù)庫上存在 hy.t1 表,從數(shù)據(jù)庫上存在與主數(shù)據(jù)庫 hy.t1 表結(jié)構(gòu)完全相同的 wy.t1 表,現(xiàn)需要?jiǎng)?chuàng)建一個(gè)主數(shù)據(jù)庫上 hy.t1 表到從數(shù)據(jù)庫上 wy.t1 表的同步復(fù)制關(guān)系,其名稱為 REPHY2WY。

2. 參數(shù)設(shè)置
修改 3 臺(tái) DM 數(shù)據(jù)庫的 dm.ini 文件,添加如下內(nèi)容:
數(shù)據(jù)庫 dm.ini 設(shè)置
復(fù)制數(shù)據(jù)庫 INSTANCE_NAME = jydm
PORT_NUM = 5236
MAL_INI = 1
主數(shù)據(jù)庫 INSTANCE_NAME = hy
PORT_NUM = 5236
MAL_INI = 1
從數(shù)據(jù)庫 INSTANCE_NAME = wy
PORT_NUM = 5236
MAL_INI = 1

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

[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

在每個(gè)數(shù)據(jù)庫服務(wù)器上創(chuàng)建一個(gè) dmmal.ini 文件,每個(gè) 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 個(gè)數(shù)據(jù)庫都要啟用 mal_ini 參數(shù)

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

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

開始初始化:

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.

創(chuàng)建的 7 張復(fù)制系統(tǒng)表如下:
1) 復(fù)制組表
CREATE TABLE SYSREP.RPS_GROUPS (
NAME VARCHAR(128), // 復(fù)制組名
ID INT, // 復(fù)制組 ID
DESC$ VARCHAR(1000), // 描述
CLUSTER PRIMARY (NAME)
);
2) 復(fù)制節(jié)點(diǎn)實(shí)例表
CREATE TABLE SYSREP.RPS_INSTANCES(
INST_NAME VARCHAR(128), // 復(fù)制節(jié)點(diǎn)實(shí)例名
GRP_ID INT, // 復(fù)制組 ID
INST_ID INT, // 實(shí)例在復(fù)制組中編號
FAULT_TIMEOUT INT, // 故障超時(shí)處理值,以秒為單位,0 為立即超時(shí)
VALID_FLAG CHAR(1), // 節(jié)點(diǎn)系統(tǒng)狀態(tài)
FAULT_TIME DATETIME, // 節(jié)點(diǎn)故障開始時(shí)間
NET_VALID_FLAG CHAR(1), // 網(wǎng)絡(luò)狀態(tài)
NET_FAULT_TIME DATETIME, // 網(wǎng)絡(luò)故障開始時(shí)間
CLUSTER PRIMAY KEY(GRP_ID, INST_NAME)
);
3) 復(fù)制關(guān)系表
CREATE TABLE SYSREP.RPS_REPLICATIONS(
REP_NAME VARCHAR(128), // 復(fù)制名
GRP_ID INT, // 復(fù)制組 ID
REP_ID INT, // 復(fù)制 ID,全局唯一
MINST_ID INT, // 主節(jié)點(diǎn)實(shí)例編號
SINST_ID INT, // 從節(jié)點(diǎn)實(shí)例編號
ARCH_DIR VARCHAR(256), // 主節(jié)點(diǎn)歸檔日志路徑
FAULT_TIMEOUT INT, // 故障超時(shí)處理值,以秒為單位,0 為立即超時(shí)
VALID_FLAG CHAR(1), // 復(fù)制關(guān)系狀態(tài)
FAULT_TIME DATETIME, // 故障開始時(shí)間
SYNC_FLAG INTEGER // 指定同步或異步復(fù)制
TIMER_NAME VARCHAR(128) // 指定異步復(fù)制的定時(shí)器(同步復(fù)制沒有此項(xiàng))
DESC$ VARCHAR(1000), // 復(fù)制描述
CLUSTER PRIMARY KEY(GRP_ID, REP_NAME)
);
4) 復(fù)制映射表
CREATE TABLE SYSREP.RPS_TABMAPS(
REP_ID INT, // 復(fù)制 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) 復(fù)制故障歷史表
CREATE TABLE SYSREP.REP_FAULT_HISTORY(
GRP_NAME VARCHAR(128), // 復(fù)制組
OBJ_NAME VARCHAR(128), // 故障節(jié)點(diǎn)或關(guān)系
FAULT_TYPE VARCHAR(128), // 故障類型描述
START_TIME DATETIME, // 故障開始時(shí)間
END_TIME DATETIME // 故障結(jié)束時(shí)間
);
6) 復(fù)制沖突歷史表
CREATE TABLE SYSREP.RPS_CONFLICTS
(
SEQ_NO BIGINT // 沖突序號
REP_ID INT, // 對應(yīng)復(fù)制號
INST_ID INT, // 產(chǎn)生沖突的節(jié)點(diǎn)編號
TABLE_ID INT, // 沖突表 ID
TYPE TINYINT // 操作類型
OCC_TIME DATETIME, // 沖突產(chǎn)生時(shí)間
KEY_DATA VARCHAR(8000), // 沖突數(shù)據(jù)的 PK 值,如包含多個(gè) KEY 值,則以逗號分隔。如鍵值超長則截?cái)?br />);
7) 復(fù)制定時(shí)器表
CREATE TABLE SYSREP.RPS_TIMERS (
NAME VARCHAR(128), // 定時(shí)器名稱
TYPE$ INT, // 定時(shí)類型,取值可參見 SP_RPS_CREATE_TIMER
FERQ_INTERVAL INT, // 間隔天數(shù)
FREQ_SUB_INTERVAL INT, // 間隔的月 / 周(調(diào)度類型決定)數(shù)
FREQ_MINUTE_INTERVAL INT, // 間隔的分鐘數(shù)
START_TIME TIME, // 開始時(shí)間
END_TIME TIME, // 結(jié)束時(shí)間
DURING_START_DATE DATETIME // 開始時(shí)間點(diǎn)
DURING_END_DATE DATETIME, // 結(jié)束時(shí)間點(diǎn)
NO_END_DATA_FLAG INTEGER // 是否有結(jié)束日期(0:有結(jié)束日期;1:沒有結(jié)束日期)
DESC$ VARCHAR(1000), // 定時(shí)器描述
CLUSTER PRIMARY KEY(REP_NAME)
);
配置表級復(fù)制

啟動(dòng) 3 臺(tái)服務(wù)器,啟動(dòng)的順序不分先后。

[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

登錄復(fù)制數(shù)據(jù)庫(RPS jydm),保證服務(wù)器狀態(tài)為 OPEN,開始復(fù)制配置。

[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

創(chuàng)建復(fù)制組 REP_GRP_hy2wy

SQL  SP_RPS_ADD_GROUP( REP_GRP_hy2wy ,  主從同步復(fù)制 
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  主從同步復(fù)制
used time: 1.599(ms). Execute id is 4.

開始設(shè)置

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

添加復(fù)制關(guān)系

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

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

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

提交設(shè)置

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 的同步復(fù)制
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.

至此,表復(fù)制完成。注意一點(diǎn),DM 的復(fù)制配置必須在開始復(fù)制配置之前執(zhí)行 SP_RPS_SET_BEGIN,配置完成之后執(zhí)行 SP_RPS_SET_APPLY 提交。
驗(yàn)證同步
主庫的邏輯日志:

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

主庫對 T1 表插入數(shù)據(jù):

[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.

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

[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 表的所有數(shù)據(jù):

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

從庫的所有數(shù)據(jù)也刪除了

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

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

若需要?jiǎng)h除復(fù)制組,則該復(fù)制組不能處于配置階段,即該組的配置已經(jīng)提交或取消。
監(jiān)控?cái)?shù)據(jù)復(fù)制
配置完成后復(fù)制服務(wù)器 RPS 雖然不參與復(fù)制的具體執(zhí)行,但是在復(fù)制過程中,還是建議保持 RPS 的運(yùn)行來對復(fù)制進(jìn)行監(jiān)控。
復(fù)制系統(tǒng)內(nèi),狀態(tài)分為復(fù)制節(jié)點(diǎn)的狀態(tài)和復(fù)制關(guān)系的狀態(tài)。具體內(nèi)容見下表。

復(fù)制節(jié)點(diǎn)的系統(tǒng)狀態(tài)在 SYSREP.RPS_INSTANCES 中的 VALID_FLAG 字段表示;網(wǎng)絡(luò)狀態(tài)在 SYSREP.RPS_INSTANCES 表中 NET_VALID_FLAG 的字段表示。
復(fù)制關(guān)系的狀態(tài)在 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 的同步復(fù)制
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.

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

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

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

SQL  SP_RPS_ADD_TIMER(hy2wy_TIMER , 從 hy 到 wy 定時(shí)復(fù)制 ,1,0,0,0, 23:18:33 ,NULL, 2019-12-18 23:18:33 ,NULL,1);
SP_RPS_ADD_TIMER(hy2wy_TIMER , 從 hy 到 wy 定時(shí)復(fù)制 ,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.

提示復(fù)制組設(shè)置沒有開始所以不能進(jìn)行修改

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

設(shè)置時(shí)間開始時(shí)間為 2019-12-18 23:38:33

SQL  SP_RPS_ADD_TIMER(hy2wy_TIMER , 從 hy 到 wy 定時(shí)復(fù)制 ,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.

現(xiàn)在在主庫中插入數(shù)據(jù)

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.

可以看到在時(shí)間 2019-12-18 23:38:37.570259 時(shí)間點(diǎn)表數(shù)據(jù)還沒有同步到從庫

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.

可以看到在時(shí)間 2019-12-18 2019-12-18 23:39:05.629576 時(shí)間點(diǎn)表數(shù)據(jù)已經(jīng)同步到從庫

刪除復(fù)制映射

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

修改復(fù)制的錯(cuò)誤超時(shí)時(shí)間,超時(shí)的時(shí)間單位是秒

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

刪除復(fù)制關(guān)系

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

刪除整個(gè)復(fù)制組

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

刪除數(shù)據(jù)復(fù)制所使用的用戶和系統(tǒng)表

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.

另外,在配置或修改配置時(shí)想要取消操作,可以使用如下系統(tǒng)過程結(jié)束配置。

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

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

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-17發(fā)表,共計(jì)21878字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 梅州市| 东明县| 洛宁县| 务川| 榆树市| 宣威市| 哈巴河县| 濉溪县| 赤壁市| 开江县| 莱西市| 扎赉特旗| 新疆| 育儿| 贵港市| 仙居县| 精河县| 大丰市| 景洪市| 黄冈市| 米脂县| 江西省| 大兴区| 南康市| 秭归县| 建水县| 大方县| 西城区| 襄垣县| 浮梁县| 鸡东县| 永安市| 勃利县| 崇文区| 千阳县| 饶平县| 长兴县| 沈阳市| 秦安县| 谷城县| 武山县|