DM8 實時主備環境搭建

LEVEL7發表於2020-08-20

DM8  實時主備環境搭建

1.     環境說明

本示例中組名為GRP1,配置為實時主備,主庫命名為MEVI1,備庫命名為MEVI2。

配置環境說明:

機器名

IP 地址

例項名

作業系統

DW1

192.168.18.211 (外部服務)

192.168.10.211 (內部通訊)

MEVI1

CentOS Linux release 7.8.2003

DW2

192.168.18.212 (外部服務)

192.168.10.212 (內部通訊)

MEVI2

CentOS Linux release 7.8.2003

埠規劃:

例項名

PORT_NUM

MAL_INST_DW_PORT

MAL_HOST

MAL_PORT

MAL_DW_PORT

MEVI1

5236

5237

192.168.10.211

5238

5239

MEVI2

5236

5237

192.168.10.212

5238

5239

1)     PORT_NUM

伺服器監聽通訊埠號,伺服器配置此引數,有效值範圍(1024~65534),發起連線端的埠在(1024~65535)之間隨機分配。此引數配置應與dmmal.ini中的MAL_INST_PORT對應

2)     MAL_INST_DW_PORT

節點例項監聽守護程式的埠,同一個庫上的各例項的守護程式使用MAL_HOST+MAL_INST_DW_PORT和各例項建立TCP連線,例項伺服器配置此引數有效值範圍(1024~65534),發起連線端的埠在(1024~65535)之間隨機分配

3)     MAL_HOST

MAL IP 地址,使用MAL_HOST+MAL_PORT建立MAL鏈路

4)     MAL_PORT

MAL 監聽埠用於資料守護、DSC、MPP等環境中各節點例項之間MAL鏈路配置監聽端埠配置此引數,範圍(1024~65534)發起連線端的埠在(1024~65535)之間隨機分配

5)     MAL_DW_PORT

MAL_INST_NAME 例項守護程式的監聽埠,其他守護程式或監視器使用MAL_HOST+MAL_DW_PORT建立與該例項守護程式的TCP連線,監聽端配置此引數有效值範圍1024~65534),發起連線端的埠在(1024~65535)之間隨機分配

2.     資料準備

1)     建立主庫

dminit PATH=/dmdata PAGE_SIZE=16 DB_NAME=MEVI INSTANCE_NAME=MEVI1

使用dmserver 啟動資料庫,在DM 資料庫第一次必須正常啟動,完成初始化的動作:

dmserver /dmdata/MEVI/dm.ini

2)     主庫啟動歸檔

SQL> alter database mount;

SQL> alter database add archivelog 'type=local,dest=/dmarch,file_size=128,space_limit=0';

SQL> alter database archivelog;

SQL> alter database open;

3)     建立備庫

dminit PATH=/dmdata PAGE_SIZE=16 DB_NAME=MEVI INSTANCE_NAME=MEVI2

使用dmserver 啟動資料庫,在DM 資料庫第一次必須正常啟動,完成初始化的動作:

dmserver /dmdata/MEVI/dm.ini

4)     備庫啟動歸檔

SQL> alter database mount;

SQL> alter database add archivelog 'type=local,dest=/dmarch,file_size=128,space_limit=0';

SQL> alter database archivelog;

SQL> alter database open;

5)     備份主庫

使用DMRMAN 離線備份

RMAN> backup database '/dmdata/MEVI/dm.ini' backupset '/dmbak/200820';

6)     恢復備庫

將主庫的備份複製到備庫

scp -r 192.168.18.211:/dmbak/200820 /dmbak

使用DMRMAN 恢復備庫

RMAN> restore database '/dmdata/MEVI/dm.ini' from backupset '/dmbak/200820';

RMAN> recover database '/dmdata/MEVI/dm.ini' update db_magic;

7)     註冊服務並啟動例項

設定服務為非自動啟動

設定伺服器啟動模式為mount

註冊主庫服務

./dm_service_installer.sh -t dmserver -p MEVI1 -dm_ini /dmdata/MEVI/dm.ini -auto false -m mount

註冊備庫服務

./dm_service_installer.sh -t dmserver -p MEVI2 -dm_ini /dmdata/MEVI/dm.ini -auto false -m mount

3.     配置主庫

1)     配置dm.ini

在DW1機器上配置主庫的例項名為MEVI1,dm.ini引數修改如下:

INSTANCE_NAME = MEVI1

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

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

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

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

MAL_INI = 1  # 開啟MAL系統

ARCH_INI = 1  # 開啟歸檔配置

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

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 = MEVI1  # 例項名,和dm.ini中的INSTANCE_NAME一致

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

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

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

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

MAL_DW_PORT = 5239  # 例項本地的守護程式監聽TCP連線的埠

MAL_INST_DW_PORT = 5237  # 例項監聽守護程式TCP連線的埠

[MAL_INST2]

MAL_INST_NAME = MEVI2

MAL_HOST = 192.168.10.212

MAL_PORT = 5238

MAL_INST_HOST = 192.168.18.212

MAL_INST_PORT = 5236

MAL_DW_PORT = 5239

MAL_INST_DW_PORT = 5237

3)     配置dmarch.ini

修改dmarch.ini,配置本地歸檔和實時歸檔。

除了本地歸檔外,其他歸檔配置項中的ARCH_DEST表示例項是Primary模式時,需要同步歸檔資料的目標例項名。

當前例項MEVI1是主庫,需要向MEVI2(實時備庫)同步資料,因此實時歸檔的ARCH_DEST配置為MEVI2。

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME  # 實時歸檔型別

ARCH_DEST = MEVI2  # 實時歸檔目標例項名

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL  # 本地歸檔型別

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

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

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

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 = 666666  # 守護系統唯一OGUID值

INST_INI = /dmdata/MEVI/dm.ini  #dm.ini 配置檔案路徑

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

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

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

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

5)     啟動主庫

以Mount方式啟動主庫

DmServiceMEVI1 start

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

6)     設定OGUID

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

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

SQL> sp_set_oguid(666666);

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

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

7)     修改資料庫模式

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

SQL> alter database primary;

4.     配置備庫

1)     配置dm.ini

在DW2機器上配置備庫的例項名為MEVI2,dm.ini引數修改如下:

INSTANCE_NAME = MEVI2

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

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

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

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

MAL_INI = 1  # 開啟MAL系統

ARCH_INI = 1  # 開啟歸檔配置

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

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 = MEVI1  # 例項名,和dm.ini中的INSTANCE_NAME一致

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

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

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

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

MAL_DW_PORT = 5239  # 例項本地的守護程式監聽TCP連線的埠

MAL_INST_DW_PORT = 5237  # 例項監聽守護程式TCP連線的埠

[MAL_INST2]

MAL_INST_NAME = MEVI2

MAL_HOST = 192.168.10.212

MAL_PORT = 5238

MAL_INST_HOST = 192.168.18.212

MAL_INST_PORT = 5236

MAL_DW_PORT = 5239

MAL_INST_DW_PORT = 5237

3)     配置dmarch.ini

修改dmarch.ini,配置本地歸檔和實時歸檔。

除了本地歸檔外,其他歸檔配置項中的ARCH_DEST表示例項是Primary模式時,需要同步歸檔資料的目標例項名。

當前例項MEVI2是備庫,守護系統配置完成後,可能在各種故障處理中,MEVI2切換為新的主庫,正常情況下,MEVI1會切換為新的備庫,需要向MEVI1同步資料,因此實時歸檔的ARCH_DEST配置為MEVI1。

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME  # 實時歸檔型別

ARCH_DEST = MEVI1  # 實時歸檔目標例項名

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL  # 本地歸檔型別

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

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

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

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 = 666666  # 守護系統唯一OGUID值

INST_INI = /dmdata/MEVI/dm.ini  #dm.ini 配置檔案路徑

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

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

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

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

5)     啟動備庫

以Mount方式啟動備庫

DmServiceMEVI2 start

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

6)     設定OGUID

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

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

SQL> sp_set_oguid(666666);

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

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

7)     修改資料庫模式

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

SQL> alter database standby;

5.     配置監視器

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

故障自動切換模式下,必須配置確認監視器,且確認監視器最多隻能配置一個。

修改dmmonitor.ini配置確認監視器,其中MON_DW_IP中的IP和PORT和dmmal.ini中的MAL_HOST和MAL_DW_PORT配置項保持一致。

MON_DW_CONFIRM = 1  # 確認監視器模式

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

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

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

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

[GRP1]

MON_INST_OGUID = 666666  # 組GRP1的唯一OGUID值

# 以下配置為監視器到組GRP1的守護程式的連線資訊,以"IP:PORT"的形式配置

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

MON_DW_IP = 192.168.10.211:5239

MON_DW_IP = 192.168.10.212:5239

6.     啟動守護程式

註冊主庫守護程式服務並啟動

./dm_service_installer.sh -t dmwatcher -p MEVI1 -watcher_ini /dmdata/MEVI/dmwatcher.ini

DmWatcherServiceMEVI1 start

註冊備庫守護程式服務並啟動

./dm_service_installer.sh -t dmwatcher -p MEVI2 -watcher_ini /dmdata/MEVI/dmwatcher.ini

DmWatcherServiceMEVI2 start

7.     啟動監視器

dmmonitor dmmonitor.ini

至此一主一備的實時資料守護系統搭建完畢

8.     主備同步測試

主庫:

[dmdba@dw1 MEVI]$ disql SYSDBA/SYSDBA

notBefore.

notAfter error.

notAfter error.

 

Server[LOCALHOST:5236]:mode is primary, state is open

login used time      :8.180(ms)

last login ip        : ::1

last login time      : 2020-08-20 22:32:23

login failed times   : 0

Whether password is expired : Not expired

 

disql V8

SQL> create table mevi as select * from sysobjects;

executed successfully

used time: 17.786(ms). Execute id is 5.

備庫:

[dmdba@dw2 ~]$ disql SYSDBA/SYSDBA

notBefore.

notAfter error.

notAfter error.

 

Server[LOCALHOST:5236]:mode is standby, state is open

login used time      :10.030(ms)

last login ip        : ::1

last login time      : 2020-08-20 22:34:07

login failed times   : 0

Whether password is expired : Not expired

 

disql V8

SQL> select count(*) from mevi;

 

LINEID     COUNT(*)           

---------- --------------------

1          1327

 

used time: 3.303(ms). Execute id is 5.

 

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

相關文章