達夢DM7 資料庫之資料守護DG搭建
達夢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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DM7搭建資料守護
- 資料庫國產化實戰之達夢資料庫資料庫
- 達夢資料庫主備實時叢集搭建和維護資料庫
- 國產資料庫達夢資料庫(DM7)例項初始化引數淺析資料庫
- Oracle Linux 7.1中安裝達夢資料庫DM7OracleLinux資料庫
- 達夢資料守護系統(主備架構)如何正確重啟備庫架構
- 達夢遷移工具之MySQL資料庫遷移到達夢MySql資料庫
- 達夢資料庫開發資料庫
- 初識達夢資料庫資料庫
- 達夢資料庫學習資料庫
- 達夢資料庫安裝資料庫
- DataX將Oracle資料庫資料同步到達夢資料庫Oracle資料庫
- 達夢資料庫基礎知識(三)達夢資料庫記憶體結構資料庫記憶體
- 達夢資料庫基礎---表資料庫
- 達夢資料庫日常運維資料庫運維
- 達夢資料庫學習心得資料庫
- 國產資料庫oceanBbase,達夢,金倉與mysql資料庫的效能對比 八、python讀達夢資料庫資料庫MySqlPython
- DM7資料複製之資料庫級複製資料庫
- 【達夢】Docker安裝達夢資料庫 dm8Docker資料庫
- 織夢資料庫_織夢還原資料庫_織夢資料庫很卡資料庫
- 【DATAGUARD】DG系列之RACtoONE快照備用資料庫的搭建資料庫
- 達夢資料庫資料檔案遷移過程資料庫
- 國產資料庫:達夢資料庫的幾個版本介紹資料庫
- 達夢7資料庫初始化資料庫
- 達夢資料庫備份恢復資料庫
- 達夢資料庫之初步測試資料庫
- 達夢資料庫DCP培訓心得資料庫
- 達夢資料庫學習筆記資料庫筆記
- 達夢6.0試用之資料庫物件資料庫物件
- DM8 資料守護實時主備搭建
- 國產資料庫oceanBbase,達夢,金倉與mysql資料庫的效能對比 四、python讀mysql寫入達夢資料庫資料庫MySqlPython
- 配置ORACLE資料庫到達夢資料庫的異構DBLINKOracle資料庫
- 分散式資料庫強勢崛起,達夢資料庫如何破局?分散式資料庫
- 達夢(DM)資料庫的表空間建立和遷移維護資料庫
- 達夢資料庫DM8之資料快速載入工具dmfldr使用方法資料庫
- 達夢資料庫圖形化作業管理資料庫
- 達夢資料庫統計資訊詳解資料庫
- 達夢資料庫引數調整方法資料庫