達夢DM7 資料庫之資料守護DG搭建

drongon99發表於2020-09-07

達夢DM7 資料庫之資料守護DG搭建

1.環境說明

主庫地址:192.168.0.11 

服務埠=5236  DW_PORT = 33141  MAL_PORT = 61141 MAL_DW_PORT = 52141

 

備庫地址 :192.168.0.12

服務埠=5237  DW_PORT = 33142  MAL_PORT = 61142 MAL_DW_PORT = 52142

 

監控地址:192.168.0.13

服務埠 = 5238

 

資料庫分別為

主庫:DM01 備庫:DM02 監視器:DM03

 

資料庫服務名分別為

主庫:DMSVR01 備庫:DMSVR02 監視器:DMSVR03

 

 

 

2.資料準備

使用DMRMAN 備份進行資料同步。

2.1 建立主庫例項

在主庫使用dminit 建立DMSVR01例項:

cd /dm7/bin

$ ./dminit PATH=/dm7/data DB_NAME= DM01 INSTANCE_NAME= DMSVR01

路徑/dm7/data 庫名DM01 例項名DMSVR01埠 5236 密碼DM01SYSDBA

# 註冊服務:

# /dm7/script/root/dm_service_installer.sh -t dmserver -i /dm7/data/DM01/dm.ini -p DMSVR01

# 啟動DB:

# service DmServiceDMSVR01 start

# 啟動歸檔模式:

 $ cd /dm7/bin

 $ ./disql SYSDBA/DM01SYSDBA@LOCALHOST:5236

SQL> alter database mount;

SQL>alterdatabaseaddarchivelog'DEST=/dm7/dmarch,TYPE=local,FILE_SIZE=128,space_limit=0';

SQL> alter database archivelog;

SQL> alter database open;

2.2 使用DMRMAN備份主庫我們這裡採用離線備份:

$ service DmServiceDMSVR01 stop

$ cd /dm7/bin

$ ./dmrman

RMAN> backup database '/dm7/data/DM01/dm.ini' full backupset '/dm7/rww_bak/db_full_bak_01';

# 將2備份分發到備庫:

$ cd /dm7/rww_bak/

$ ls

$mkdir /dm7/rww_bak/

$scp -r 192.168.0.11:/dm7/rww_bak/*  /dm7/rww_bak/

 

2.3 初始化備庫並恢復資料

$ cd /dm7/bin

# 初始化例項:

路徑/dm7/data 庫名DM02 例項名DMSVR02埠 5237 密碼DM01SYSDBA

$ ./dminit PATH=/dm7/dmdbms/data DB_NAME=DM02 INSTANCE_NAME= DMSVR02

# 註冊服務:

# /dm7/script/root/dm_service_installer.sh -t dmserver -i /dm7/data/DM02/dm.ini -p DMSVR02

service DmServiceDMSVR02 stop

# 還原資料庫

$ ./dmrman CTLSTMT="RESTORE DATABASE '/dm7/data/DM02/dm.ini' FROM BACKUPSET '/dm7/rww_bak/db_full_bak_01'"

# 恢復資料庫:

$ ./dmrman CTLSTMT="RECOVER DATABASE '/dm7/data/DM02/dm.ini' FROM BACKUPSET '/dm7/rww_bak/db_full_bak_01'"

 

3 配置主庫 DM01

3.1 配置 dm.ini

$ vi /dm7/data/DM01/dm.ini

配置主庫的例項名為 DMSVR01,dm.ini 引數修改如下:

# 例項名,建議使用“組名_守護環境_序號”的命名方式,總長度不能超過 16

INSTANCE_NAME = DMSVR01

PORT_NUM = 5236  # 資料庫例項監聽埠

DW_PORT = 33141  # 守護環境下,監聽守護程式連線埠

DW_ERROR_TIME = 60 # 接收守護程式訊息超時時間

ALTER_MODE_STATUS = 0 # 不允許手工方式修改例項模式/狀態

ENABLE_OFFLINE_TS = 2 # 不允許備庫 OFFLINE 表空間

MAL_INI = 1 # 開啟 MAL 系統

ARCH_INI = 1 # 開啟歸檔配置

HA_INST_CHECK_FLAG = 1 # 檢測是否多個例項程式同時啟動

RLOG_SEND_APPLY_MON = 64 # 統計最近 64 次的日誌傳送資訊

3.2 配置 dmmal.ini 新建

配置 MAL 系統,各主備庫的 dmmal.ini 配置必須完全一致,MAL_HOST 使用內部網路 IP,MAL_PORT 與 dm.ini 中 PORT_NUM 使用不同的埠值,MAL_DW_PORT 是各例項對應的守護程式之間,以及守護程式和監視器之間的通訊埠,配置如下:

MAL_CHECK_INTERVAL = 5 #MAL 鏈路檢測時間間隔

MAL_CONN_FAIL_INTERVAL = 5 # 判定 MAL 鏈路斷開的時間

[MAL_INST1]

MAL_INST_NAME = DMSVR01 # 例項名,和 dm.ini 中的 INSTANCE_NAME 一致

MAL_HOST = 192.168.0.11 #MAL 系統監聽 TCP 連線的 IP 地址

MAL_PORT = 61141  #MAL 系統監聽 TCP 連線的埠

MAL_INST_HOST = 192.168.0.11 # 例項的對外服務 IP 地址

MAL_INST_PORT = 5236  # 例項的對外服務埠,和 dm.ini 中的 PORT_NUM 一致

MAL_DW_PORT = 52141 # 例項對應的守護程式監聽 TCP 連線的埠

[MAL_INST2]

MAL_INST_NAME = DMSVR02

MAL_HOST = 192.168.0.12

MAL_PORT = 61142

MAL_INST_HOST = 192.168.0.12

MAL_INST_PORT = 5237

MAL_DW_PORT = 52142

3.3 配置 dmarch.ini

修改 dmarch.ini,配置本地歸檔和即時歸檔。除了本地歸檔外,其他歸檔配置項中的 ARCH_DEST 表示例項是 Primary 模式時,需要同步歸檔資料的目標例項名。 當前例項 DMSVR01 是主庫,需要向即時備庫 DMSVR02同步資料,因此即時歸檔的 ARCH_DEST 分別配置為 DMSVR02。

[ARCHIVE_TIMELY1] # REALTIME- 實時歸檔

ARCH_TYPE = TIMELY # 即時歸檔型別,REALTIME-實時歸檔

ARCH_DEST = DMSVR02 # 即時歸檔目標例項名

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL # 本地歸檔型別

ARCH_DEST = /dm7/dmarch # 本地歸檔檔案存放路徑

ARCH_FILE_SIZE = 128 # 單位 Mb,本地單個歸檔檔案最大值

ARCH_SPACE_LIMIT = 0 # 單位 Mb,0 表示無限制,範圍 1024~4294967294M

3.4 配置 dmwatcher.ini 新建

修改 dmwatcher.ini 配置守護程式,配置為全域性守護型別,使用自動切換模式。

[GRP1]

DW_TYPE = GLOBAL # 全域性守護型別

DW_MODE = AUTO # 自動切換模式

DW_ERROR_TIME = 10 # 遠端守護程式故障認定時間

INST_RECOVER_TIME = 60 # 主庫守護程式啟動恢復的間隔時間

INST_ERROR_TIME = 10 # 本地例項故障認定時間

INST_OGUID = 453331 # 守護系統唯一 OGUID 值

INST_INI = /dm7/data/DM01/dm.ini  #dm.ini 配置檔案路徑

INST_AUTO_RESTART = 1 # 開啟例項的自動啟動功能

INST_STARTUP_CMD = /dm7/bin/dmserver # 命令列方式啟動

RLOG_SEND_THRESHOLD = 0 # 指定主庫傳送日誌到備庫的時間閥值,預設關閉

RLOG_APPLY_THRESHOLD = 0 # 指定備庫重演日誌的時間閥值,預設關閉

3.5 配置 dmwatcher.ctl

同一個守護程式組,必須使用同一份 dmwatcher.ctl。因此,只需要使用 dmctlcvt工具生成一份 dmwatcher.ctl 檔案,然後分別拷貝到各個資料庫目錄下即可。 在配置完成 dmwatcher.ini 後,使用 dmctlcvt 工具生成 dmwatcher.ctl:

$ cd /dm7/bin

$./dmctlcvtTYPE=3 SRC=/dm7/data/DM01/dmwatcher.ini DEST=/dm7/data/DM01

# 預設生成控制檔案有個子目錄,需要移動到父目錄中:

# 拷貝生成的 dmwatcher.ctl 檔案到資料檔案目錄/dm7/data/DM01。

$ cd GRP1/

$ mv dmwatcher.ctl ../

$ ll dmwatcher.ctl

3.6 啟動主庫

以 mount 方式啟動主庫

$ cd /dm7/bin

$ ./dmserver /dm7/data/DM01/dm.ini mount

狀態

version info: enterprise

Use normal os_malloc instead of HugeTLB

Use normal os_malloc instead of HugeTLB

DM Database Server x64 V7.6.0.142-Build(2019.03.12-103811)ENT  startup...

License will expire on 2020-09-10

ckpt lsn: 39931

ndct db load finished

ndct fill fast pool finished

nsvr_startup end.

aud sys init success.

aud rt sys init success.

systables desc init success.

ndct_db_load_info success.

SYSTEM IS READY.

到這個狀態,資料庫已經可以登入了,但是必須得另外開啟一個視窗去用disql登入

一定要以 mount 方式啟動資料庫例項,否則系統啟動時會重構回滾表空間,生成 Redo 日誌;並且,啟動後應用可能連線到資料庫例項進行操作,破壞主備庫的資料一致性。資料守護配置結束後,守護程式會自動 Open 資料庫。

3.7 設定 OGUID

啟動命令列工具 DIsql,登入主庫設定 OGUID 值。

#cd /dm7/bin

#./disql SYSDBA/DM01SYSDBA@LOCALHOST:5236

SQL>sp_set_oguid(453331);

系統通過 OGUID 值確定一個守護程式組,由使用者保證 OGUID 值的唯一性,並確保資料守護系統中,資料庫、守護程式和監視器配置相同的 OGUID 值。

3.8 修改資料庫模式

啟動命令列工具 DIsql,登入主庫修改資料庫為 Primary 模式

SQL>alter database primary;

4.配置備庫 DM02

4.1配置 dm.ini

配置備庫的例項名為 DMSVR02,dm.ini 引數修改如下:

# 例項名,建議使用“組名_守護環境_序號”的命名方式,總長度不能超過 16

INSTANCE_NAME = DMSVR02

PORT_NUM = 5237 # 資料庫例項監聽埠

DW_PORT = 33142 # 守護環境下,監聽守護程式連線埠

DW_ERROR_TIME = 60 # 接收守護程式訊息超時時間

ALTER_MODE_STATUS = 0 # 不允許手工方式修改例項模式/狀態

ENABLE_OFFLINE_TS = 2 # 不允許備庫 OFFLINE 表空間

MAL_INI = 1 # 開啟 MAL 系統

ARCH_INI = 1 # 開啟歸檔配置

HA_INST_CHECK_FLAG = 1 # 檢測是否多個例項程式同時啟動

RLOG_SEND_APPLY_MON = 64 # 統計最近 64 次的日誌重演資訊

4.2 配置 dmmal.ini

配置 MAL 系統,各主備庫的 dmmal.ini 配置必須完全一致,MAL_HOST 使用內部網路 IP,MAL_PORT 與 dm.ini 中 PORT_NUM 使用不同的埠值,MAL_DW_PORT 是各例項對應的守護程式之間,以及守護程式和監視器之間的通訊埠,配置如下:

MAL_CHECK_INTERVAL = 5 #MAL 鏈路檢測時間間隔

MAL_CONN_FAIL_INTERVAL = 5 # 判定 MAL 鏈路斷開的時間

[MAL_INST1]

MAL_INST_NAME = DMSVR01 # 例項名,和 dm.ini 中的 INSTANCE_NAME 一致

MAL_HOST = 192.168.0.11 #MAL 系統監聽 TCP 連線的 IP 地址

MAL_PORT = 61141 #MAL 系統監聽 TCP 連線的埠

MAL_INST_HOST = 192.168.0.11 # 例項的對外服務 IP 地址

MAL_INST_PORT = 5236 # 例項的對外服務埠,和 dm.ini 中的 PORT_NUM 一致

MAL_DW_PORT = 52141 # 例項對應的守護程式監聽 TCP 連線的埠

[MAL_INST2]

MAL_INST_NAME = DMSVR02

MAL_HOST = 192.168.0.12

MAL_PORT = 61142

MAL_INST_HOST = 192.168.0.12

MAL_INST_PORT = 5237

MAL_DW_PORT = 52142

4.3 配置 dmarch.ini

修改 dmarch.ini,配置本地歸檔和即時歸檔。除了本地歸檔外,其他歸檔配置項中的 ARCH_DEST 表示例項是 Primary 模式時,需要同步歸檔資料的目標例項名。 當前例項 dm2 是備庫,守護系統配置完成後,可能在各種故障處理中,dm2 切換為新的主庫,正常情況下,dm1 會切換為新的備庫,需要向dm1 同步資料,因此即時歸檔的 ARCH_DEST 分別配置為dm1 。

[ARCHIVE_TIMELY1] # REALTIME- 實時歸檔

ARCH_TYPE = TIMELY # 即時歸檔型別,REALTIME-實時歸檔

ARCH_DEST = DMSVR01 # 即時歸檔目標例項名

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL # 本地歸檔型別

ARCH_DEST = /dm7/dmarch # 本地歸檔檔案存放路徑

ARCH_FILE_SIZE = 128 # 單位 Mb,本地單個歸檔檔案最大值

ARCH_SPACE_LIMIT = 0 # 單位 Mb,0 表示無限制,範圍 1024~4294967294M

 

4.4 配置 dmwatcher.ini

修改 dmwatcher.ini 配置守護程式,配置為全域性守護型別,使用自動切換模式。

$vi dmwatcher.ini

[GRP1]

DW_TYPE = GLOBAL # 全域性守護型別

DW_MODE = AUTO # 自動切換模式

DW_ERROR_TIME = 10 # 遠端守護程式故障認定時間

INST_RECOVER_TIME = 60 # 主庫守護程式啟動恢復的間隔時間

INST_ERROR_TIME = 10 # 本地例項故障認定時間

INST_OGUID = 453331 # 守護系統唯一 OGUID 值

INST_INI = /dm7/data/DM02/dm.ini  #dm.ini 配置檔案路徑

INST_AUTO_RESTART = 1 # 開啟例項的自動啟動功能

INST_STARTUP_CMD = /dm7/bin/dmserver # 命令列方式啟動

RLOG_SEND_THRESHOLD = 0 # 指定主庫傳送日誌到備庫的時間閥值,預設關閉

RLOG_APPLY_THRESHOLD = 0 # 指定備庫重演日誌的時間閥值,預設關閉

4.5 配置 dmwatcher.ctl

同一個守護程式組,必須使用同一份 dmwatcher.ctl 檔案,這裡直接拷貝配置主庫時已經生成的 dmwatcher.ctl 到本地資料檔案目錄。

$ cd /dm7/bin

$./dmctlcvtTYPE=3 SRC=/dm7/data/DM02/dmwatcher.ini DEST=/dm7/data/DM02

$ cd GRP1/

$ mv dmwatcher.ctl ../

$ ll dmwatcher.ctl

4.6 啟動備庫

以 mount 方式啟動備庫。

$ cd /dm7/bin

$ ./dmserver /dm7/data/DM02/dm.ini mount

一定要以 mount 方式啟動資料庫例項,否則系統啟動時會重構回滾表空間,生成 Redo 日誌;並且,啟動後應用可能連線到資料庫例項進行操作,破壞主備庫的資料一致性。資料守護配置結束後,守護程式會自動 Open 資料庫。

4.7 設定 OGUID

啟動命令列工具 DIsql,登入備庫設定 OGUID 值。

$ cd /dm7/bin

$ $./disql SYSDBA/DM01SYSDBA@LOCALHOST:5237

SQL> sp_set_oguid(453331);

SQL> alter database add archivelog 'DEST=/dm7/dmarch,TYPE=local,FILE_SIZE=128,space_limit=0';

SQL>  alter database archivelog;

 

系統通過 OGUID 值確定一個守護程式組,由使用者保證 OGUID 值的唯一性,並確保資料守護系統中,資料庫、守護程式和監視器配置相同的 OGUID 值。

4.8 修改資料庫模式

啟動命令列工具 DIsql,登入備庫修改資料庫為 Standby 模式。如果當前資料庫不是 normal 模式,需要先修改 dm.ini 中 ALTER_MODE_STATUS 值 為 1,允許修改資料庫模式,修改 Standby 模式成功後再改回為 0。如果是 normal 模式,請忽略下面的第 1 步和第 3 步。

SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

SQL> alter database standby;

SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

4.9 註冊服務

$/dm7/script/root/dm_service_installer.sh -t dmserver -i /dm7/data/DM02/dm.ini -p DMSVR02

 

5.配置監視器DM03

5.1 配置監控檔案引數

cd /dm7/bin

$ ./dminit PATH=/dm7/data DB_NAME=DM03 INSTANCE_NAME= DMSVR03

路徑/dm7/data 庫名DM03例項名DMSVR03埠 5239 密碼DM01SYSDBA

cd /dm7/bin

$ /dm7/script/root/dm_service_installer.sh -t dmmonitor -i /dm7/data/dmmonitor.ini -p DMSVR03

由於主庫和即時備庫的守護程式配置為自動切換模式,因此這裡選擇配置DMSVR03。 和普通監視器相比,DMSVR03除了相同的命令支援外,在主庫發生故障時,能夠自動通知即時備庫接管為新的主庫,具有自動故障處理的功能。 故障自動切換模式下,必須配置DMSVR03,且DMSVR03最多隻能配置一個。

在監控節點的cd /dm7/data/DM03/目錄下建立並修改 dmmonitor.ini 配置dm3,,其中 MON_DW_IP 中的 IP 和 PORT 和dmmal.ini 中的 MAL_HOST 和 MAL_DW_PORT 配置項保持一致。

cd /dm7/data/DM03/

mkdir /dm7/data/log

vi dmmonitor.ini

 

MON_DW_Confirm = 1 #DM03 模式

MON_LOG_PATH = /dm7/data/log # 監視器日誌檔案存放路徑

MON_LOG_INTERVAL = 60 # 每隔 60s 定時記錄系統資訊到日誌檔案

MON_LOG_FILE_SIZE = 32 # 每個日誌檔案最大 32M

MON_LOG_SPACE_LIMIT = 0 # 不限定日誌檔案總佔用空間

[GRP1]

MON_INST_OGUID = 453331 # 組 GRP1 的唯一 OGUID 值 #以下配置為監視器到組 GRP1 的守護程式的連線資訊,以“IP:PORT”的形式配置

#IP 對應 dmmal.ini 中的 MAL_HOST,PORT 對應 dmmal.ini 中的 MAL_DW_PORT

MON_DW_IP = 192.168.0.11:52141

MON_DW_IP = 192.168.0.12:52142

5.2 主備節點註冊服務

/dm7/script/root/dm_service_installer.sh -t dmwatcher -i /dm7/data/DM01/dmwatcher.ini -p DMSVR01

service DmWatcherServiceDMSVR01 start

ps -ef| grep dmwatcher

/dm7/script/root/dm_service_installer.sh -t dmwatcher -i /dm7/data/DM02/dmwatcher.ini -p DMSVR02

ps -ef| grep dmwatcher

在監視節點用root使用者執行

/dm7/script/root/dm_service_installer.sh -t dmmonitor -i /dm7/data/DM03/dmmonitor.ini -p DMSVR03

5.3 啟動監視器

$ ps -ef | grep monitor

啟動各個主備庫上的守護程式

$cd /dm7/bin

$./dmwatcher /dm7/data/DM01/dmwatcher.ini

$cd /dm7/bin

$./dmwatcher /dm7/data/DM02/dmwatcher.ini

啟動監視器

$cd /dm7/bin

./dmmonitor /dm7/data/DM03/dmmonitor.ini

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31527457/viewspace-2717579/,如需轉載,請註明出處,否則將追究法律責任。

相關文章