一、 達夢數據庫主備簡介... 2
二、 環境準備... 3
三、 主備庫數據同步... 5
四、 主從配置文件參數... 7
4.1 配置dm.ini 7
4.2 配置dmmal.ini 7
4.3 配置本地歸檔和即時歸檔dmarch.ini 8
4.4 配置守護進程dmwatcher.ini 9
五、 修改主備庫OGUID. 11
5.1 修改主庫... 11
5.2 修改備庫... 12
六、 配置監視器(一台即可)... 14
七、 啓動主備庫的實例、守護進程以及監視器... 15
八、 集羣啓動與關閉... 17
8.1 關閉... 17
8.2 啓動... 17
一、 達夢數據庫主備簡介
達夢主備集羣顧名思義就是一主一備(也可以一主多備)是一種集成化的高可靠性解決方案,同時滿足用户對數據安全性和高可用性的要求。解決由於硬件故障、自然災害等原因導致的數據庫服務長時間中斷問題,滿足用户不間斷提供數據庫服務的要求,即實現系統的雙機熱備功能。在使用的過程中,如果是實時同步模式的話,主機和備機的數據保持完全一致。主機產生一條新的記錄時,在記錄寫入數據庫文件之前,會把新產生的redo日誌文件發送到備機,由備機重新執行接收到的redo日誌,來保證主備集羣數據的一致性。
二、 環境準備
數據庫安裝完成
|
主機名 |
端口默認號 |
節點 |
數據庫名 |
實例名 |
|
node1 |
5240 |
192.168.152.11 |
MASTER |
MASTER |
|
node2 |
5240 |
192.168.152.12 |
SLAVE |
SLAVE |
主節點node1:192.168.152.11
實例名: MASTER 端口默認:5240
數據庫初始化
./dminit PATH=/dm8/data PAGE_SIZE=16 CASE_SENSITIVE=1 CHARSET=0 DB_NAME=MASTER INSTANCE_NAME=MASTER PORT_NUM=5240
創建實例
./dm_service_installer.sh -t dmserver -p MASTER -dm_ini /dm8/data/MASTER/dm.ini
從節點node1: 192.168.152.11
實例名: SLAVE 端口默認:5240
數據庫初始化
./dminit PATH=/dm8/data PAGE_SIZE=16 CASE_SENSITIVE=1 CHARSET=0 DB_NAME=SLAVE INSTANCE_NAME=SLAVE PORT_NUM=5240
創建實例
./dm_service_installer.sh -t dmserver -p SLAVE -dm_ini /dm8/data/SLAVE/dm.ini
都先執行初始化
創建文件夾 mkdir backup
然後只啓動主庫,啓動一次之後,然後用disql工具登陸,進行數據庫備份
RMAN> backup database ‘/dm8/data/MASTER/dm.ini’ backupset '/dm8/data/backup';
三、 主備庫數據同步
將主庫的備份文件拷貝到備庫同級目錄下面:(可以用scp)
拷貝文件到從節點的back文件夾(可以利用xftp工具,手動拖包到從節點機器)
[dmdba@localhost~]$
scp -r /dm8/data/backup/back.bak dmdba@192.168.152.140:/dm8/data/backup
[dmdba@localhost ~]$
scp -r /dm8/data/backup/back.meta dmdba@192.168.152.140:/dm8/data/backup
然後從庫利用dmrman工具,冷還原剛才主庫所發送過來的備份文件
restore database'/dm8/data/SLAVE/dm.ini' from backupset '/dm8/data/backup'
recover database'/dm8/data/SLAVE/dm.ini' from backupset '/dm8/data/backup'
recover database '/dm8/data/SLAVE/dm.ini'update db_magic
四、 主從配置文件參數
4.1 配置dm.ini 文件在/dm8/data/MASTER下
修改dm.ini文件的4個參數
ALTER_MODE_STATUS = 0 #不允許手工方式修改實例模式/狀態/OGUID
ENABLE_OFFLINE_TS = 2 #不允許備庫 OFFLINE 表空間
MAL_INI = 1 #打開 MAL系統
ARCH_INI = 1 #打開歸檔配置
4.2 配置dmmal.ini
主備庫的配置必須完全一致(可以使用scp方式傳輸)
MAL_CHECK_INTERVAL = 5 #MAL 鏈路檢測時間間隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 鏈路斷開的時間
[MAL_INST1]
MAL_INST_NAME = MASTER #實例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.152.11 #MAL 系統監聽 TCP 連接的 IP 地址
MAL_PORT = 61141 #MAL 系統監聽 TCP 連接的端口
MAL_INST_HOST = 192.168.152.11 #實例的對外服務 IP 地址
MAL_INST_PORT = 5240 #實例的對外服務端口,和dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #實例對應的守護進程監聽 TCP 連接的端口
MAL_INST_DW_PORT = 33141 #實例監聽守護進程 TCP 連接的端口
[MAL_INST2]
MAL_INST_NAME = SLAVE
MAL_HOST = 192.168.152.12
MAL_PORT = 61142
MAL_INST_HOST = 192.168.152.12
MAL_INST_PORT = 5240
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
4.3 配置本地歸檔和即時歸檔dmarch.ini
先配置主節點master
[ARCHIVE_TIMELY1]
ARCH_TYPE = TIMELY #即時歸檔類型
ARCH_DEST = SLAVE #即時歸檔目標實例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地歸檔類型
ARCH_DEST = /dm8/data/MASTER/arch #本地歸檔文件存放路徑
ARCH_FILE_SIZE = 128 #單位 Mb,本地單個歸檔文件最大值
ARCH_SPACE_LIMIT = 0 #單位 Mb,0 表示無限制,範圍 1024~4294967294M
再配置從節點slave
[ARCHIVE_TIMELY1]
ARCH_TYPE = TIMELY #即時歸檔類型
ARCH_DEST = MASTER #即時歸檔目標實例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地歸檔類型
ARCH_DEST = /dm8/data/SLAVE/arch #本地歸檔文件存放路徑
ARCH_FILE_SIZE = 128 #單位 Mb,本地單個歸檔文件最大值
ARCH_SPACE_LIMIT = 0 #單位 Mb,0 表示無限制,範圍 1024~4294967294M
4.4 配置守護進程dmwatcher.ini
故障自動切換模式下,可以實時處理故障,但對網絡穩定性要求更高,需要確保主備庫之間,主備庫與守護進程、確認監視器之間的網絡穩定可靠,否則可能會誤判主庫故障,備庫自動接管後,出現多個 Open 狀態的主庫,引發腦裂。故障手動切換模式下,備庫不會自動接管,出現節點故障或者網絡故障時,由用户根據各種故障情況,進行人工干預。生產中推薦MANUAL
[dmdba@node1MASTER]$ pwd
/dm8/data/MASTER
[dmdba@node1MASTER]$ vim dmwatcher.ini
主庫配置文件
[GRP1]
DW_TYPE = GLOBAL #全局守護類型
DW_MODE = AUTO #自動切換模式
DW_ERROR_TIME = 10 #遠程守護進程故障認定時間
INST_RECOVER_TIME = 60 #主庫守護進程啓動恢復的間隔時間
INST_ERROR_TIME = 10 #本地實例故障認定時間
INST_OGUID = 453332 #守護系統唯一 OGUID 值
INST_INI = /dm8/data/MASTER/dm.ini #dm.ini配置文件路徑
INST_AUTO_RESTART = 1 #打開實例的自動啓動功能
INST_STARTUP_CMD = /dm8/bin/dmserver #命令行方式啓動
RLOG_SEND_THRESHOLD = 0 #指定主庫發送日誌到備庫的時間閥值,默認關閉
RLOG_APPLY_THRESHOLD = 0 #指定備庫重演日誌的時間閥值,默認關閉
從庫配置文件
[GRP1]
DW_TYPE = GLOBAL #全局守護類型
DW_MODE = AUTO #自動切換模式
DW_ERROR_TIME = 10 #遠程守護進程故障認定時間
INST_RECOVER_TIME = 60 #主庫守護進程啓動恢復的間隔時間
INST_ERROR_TIME = 10 #本地實例故障認定時間
INST_OGUID = 453332 #守護系統唯一 OGUID 值
INST_INI = /dm8/data/SLAVE/dm.ini #dm.ini配置文件路徑
INST_AUTO_RESTART = 1 #打開實例的自動啓動功能
INST_STARTUP_CMD = /dm8/bin/dmserver #命令行方式啓動
RLOG_SEND_THRESHOLD = 0 #指定主庫發送日誌到備庫的時間閥值,默認關閉
RLOG_APPLY_THRESHOLD = 0 #指定備庫重演日誌的時間閥值,默認關閉
五、 修改主備庫OGUID
5.1 修改主庫
以mount 方式啓動主庫
./dmserver/dm8/data/MASTER/dm.ini mount
以disql工具登陸,修改oguid值
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453332);
alter database primary;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
5.2 修改備庫
以mount方式登陸備庫
./dmserver /dm8/data/SLAVE/dm.ini mount
以disql工具登陸備庫修改oguid值
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS', 1);
sp_set_oguid(453332);
alter databasestandby;
SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS', 0);
六、 配置監視器(一台即可)
故障自動切換模式的數據守護系統,必須部署一個確認監視器,否則在出現數據庫故障時,會導致數據庫服務中斷,在主備機器或者同網段第三台新機器上部署即可。
配置監視器,在哪台機器配置都可以,不做限制
[dmdba@node3 MASTER]$ pwd
/dm8/data/MASTER
[dmdba@node3 MASTER]$ vim dmmonitor.ini
MON_DW_Confirm = 1 #確認監視器模式
MON_LOG_PATH = /dm8/data/log #監視器日誌文件存放路徑
MON_LOG_INTERVAL = 60 #每隔 60s 定時記錄系統信息到日誌文件
MON_LOG_FILE_SIZE = 32 #每個日誌文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日誌文件總佔用空間
[GRP1]
MON_INST_OGUID = 453332 #組 GRP1 的唯一 OGUID 值
#以下配置為監視器到組 GRP1 的守護進程的連接信息,以—IP:PORT?的形式配置
#IP 對應 dmmal.ini 中的 MAL_HOST,PORT 對應dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.152.11:52141
MON_DW_IP = 192.168.152.12:52142
七、 啓動主備庫的實例、守護進程以及監視器
啓動順序 :啓動主備庫的實例、守護進程
啓動備庫的實例、守護進程
最後啓動監視器
mount 方式啓動主備庫實例:
./dmserver /dm8/data/MASTER/dm.inimount
./dmserver /dm8/data/SLAVE/dm.inimount
在bin目錄下啓動主庫的守護進程
./dmwatcher /dm8/data/MASTER/dmwatcher.ini
然後再啓動備庫的守護進程
./dmwatcher /dm8/data/SLAVE/dmwatcher.ini
現在關閉node1和node2的防火牆,開啓node3上面的監視器,可輸入show命令查看狀態
./dmmonitor /dm8/data/MASTER/dmmonitor.ini
到了這一步之後,便可以開始建表測試了
主庫進入/dm8/bin
./disql SYSDBA/SYSDBA@localhost:5240
SQL>create table test (id int);
SQL>insert into values (999999);
備庫查找
進入/dm8/bin
./disql SYSDBA/SYSDBA@localhost:5240
SQL>select * from test;
切換主備測試
在守護進程操作
Login
輸入用户名 密碼
如果需要把備庫切換為主庫 switchover GRP1.SLAVE
把主庫切換為備庫 switchover GRP1.MASTER
在主庫正常的情況下,備庫無法操作數據,只能更新來自主庫的數據
八、 集羣啓動與關閉
8.1 關閉
如果啓動了確認監視器,先關閉確認監視器(防止自動接管),關閉備庫守護進程(防止重啓實例),關閉主庫守護進程(防止重啓實例),Shutdown 主庫,Shutdown 備庫。再關閉實例。
8.2 啓動
先啓動主庫實例,在啓動主庫守護進程、然後備庫也一樣,先實例再進程,最後啓動監視器。