DM8 實時主備環境搭建
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DM8 MPP主備環境搭建
- DM8 資料守護實時主備搭建
- DM8 配置DMDSC主備環境(rac到單節點 )
- DM8配置MPP主備
- 冬季實戰營動手實戰-上雲必備環境準備,動手實操快速搭建LAMP環境LAMP
- 在容器環境搭建mysql備庫MySql
- DM8 Linux環境下配置ODBCLinux
- 搭建Ansible實驗環境
- 主備庫記憶體不一致的Data Guard環境搭建記憶體
- Redis多例項及主從複製環境搭建Redis
- 環境搭建
- MySQL Xtrabackup真實生產環境搭建主從複製全過程MySql
- Redis叢集環境搭建實踐Redis
- Vagrant 搭建開發環境實踐開發環境
- 達夢資料庫主備實時叢集搭建和維護資料庫
- 基於docker環境下搭建redis主從叢集DockerRedis
- 歷時三天,成功搭建Laravel Sail環境LaravelAI
- 搭建lnmp環境LNMP
- 搭建gym環境
- Linuxg環境搭建Linux
- JDK環境搭建JDK
- Angular環境搭建Angular
- anaconda 環境搭建
- ReactNative環境搭建React
- swoft 環境搭建
- Flutter環境搭建Flutter
- 搭建Java環境Java
- Supervisor 環境搭建
- react環境搭建React
- FNA環境搭建
- FNA 環境搭建
- Maven 環境搭建Maven
- Dubbo環境搭建
- Vagrant 環境搭建
- LNMP 環境搭建LNMP
- OpenGL 環境搭建
- App環境搭建APP
- gogs環境搭建Go