博客 / 詳情

返回

達夢數據庫V8數據守護集羣配置[3]

5 配置集羣主機

  一般在配置集羣時,先不將數據庫實例註冊為服務,如果已經註冊為服務的,可以使用管理員賬户停止服務,在配置過程中使用數據庫用户直接啓動數據庫實例。注意,在註冊集羣的數據庫實例服務時,會加一個參數-m mount。如果已經註冊了數據庫實例服務,可以使用以下語句卸載。

kylin@KL1:~$ sudo /home/dameng/dmdbms/script/root/dm_service_uninstaller.sh -n DmServiceDMSERVER1
是否刪除服務(DmServiceDMSERVER1)?(Y/y:是 N/n:否): y
Removed /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER1.service.
刪除服務文件(/usr/lib/systemd/system/DmServiceDMSERVER1.service)完成
刪除服務(DmServiceDMSERVER1)完成

5.1 啓動數據庫服務

  使用數據庫用户啓動數據庫實例。第一次啓動時會等候較長的時間,看到“SYSTEM IS READY.”才成功的啓動數據庫實例。

dameng@KL1:~$ dmserver /home/dameng/dmdbms/data/DAMENG/dm.ini
file dm.key not found, use default license!
version info: develop
csek2_vm_t = 1440
nsql_vm_t = 328
…………
中間顯示很多配置信息,此處省略。
…………
trx: 6765 purged 1 pages
trx: 6767 purged 1 pages
systables desc init success.
ndct_db_load_info finished, code:100.
nsvr_process_before_open begin.
nsvr_process_before_open success.
SYSTEM IS READY.

5.2 開啓數據庫歸檔

  此時另外開一個終端,使用dameng用户登錄後,用disql連接數據庫服務,修改數據庫實例參數,開啓歸檔。執行以下語句:
  alter database mount;將數據庫置於mount狀態。
  alter database archivelog;打開歸檔模式。
  alter database add archivelog 'dest=/home/dameng/dmdbms/data/DAMENG/arch,type=local,file_size=1024,space_limit=51200';設置歸檔日誌文件,指定歸檔日誌目錄、文件大小、空間限制。
  alter database open;將數據庫置於open狀態。

dameng@KL1:~$ disql sysdba/Dameng123
服務器[LOCALHOST:5236]:處於普通打開狀態
登錄使用時間 : 5.383(ms)
disql V8
SQL> alter database mount;
操作已執行
已用時間: 21.966(毫秒). 執行號:0.
SQL> alter database archivelog;
操作已執行
已用時間: 93.883(毫秒). 執行號:0.
SQL> alter database add archivelog 'dest=/home/dameng/dmdbms/data/DAMENG/arch,type=local,file_size=1024,space_limit=51200';
操作已執行
已用時間: 84.258(毫秒). 執行號:0.
SQL> alter database open;
操作已執行
已用時間: 126.197(毫秒). 執行號:0.

5.3 備份拷貝數據庫

  繼續在disql中備份數據庫。

SQL> backup database backupset '/home/dameng/dmdbms/data/DAMENG/bak/backup';
操作已執行
已用時間: 00:00:06.432. 執行號:66701.

  退出disql,使用scp或者其他方式將備份文件複製到從機對應目錄。

SQL> quit
dameng@KL1:~$ scp -r /home/dameng/dmdbms/data/DAMENG/bak/backup dameng@192.168.20.102:/home/dameng/dmdbms/data/DAMENG/bak
dameng@192.168.20.102's password:
backup.meta                                                 100%  114KB  52.4MB/s   00:00
backup.bak                                                  100%   11MB 126.5MB/s   00:00
backup_1.bak                                                100%   21KB  19.3MB/s   00:00

5.4 修改數據庫參數

  繼續在disql中修改數據庫實例參數。其中ALTER_MODE_STATUS=0表示不允許修改數據庫實例狀態,ENABLE_OFFLINE_TS=2表示不允許備庫OFFLINE表空間,MAL_INI=1表示打開MAL系統。

dameng@KL1:~$ disql sysdba/Dameng123
服務器[LOCALHOST:5236]:處於普通打開狀態
登錄使用時間 : 5.383(ms)
disql V8
SQL> sp_set_para_value(2,'ALTER_MODE_STATUS',0);
DMSQL 過程已成功完成
已用時間: 6.758(毫秒). 執行號:67101.
SQL> sp_set_para_value(2,'ENABLE_OFFLINE_TS',2);
DMSQL 過程已成功完成
已用時間: 15.009(毫秒). 執行號:67102.
SQL> sp_set_para_value(2,'MAL_INI',1);
DMSQL 過程已成功完成
已用時間: 7.817(毫秒). 執行號:67103.

5.5 關閉數據庫服務

  在啓動數據庫服務的終端中,使用Ctrl+C結束數據庫服務進程。如果是用管理員賬號啓動的數據庫服務,則用管理員賬號停止數據庫服務。

^CServer is stopping...
listener closed and all sessions disconnected
adjust undo_retention & wakeup purge thread...full check point starting...
generate force checkpoint, rlog free space[8589848576], used space[77824]
checkpoint begin, used_space[77824], free_space[8589848576]...
checkpoint end, 0 pages flushed, used_space[40960], free_space[8589885440].
full check point end.
shutdown audit subsystem...OK
…………
中間顯示很多提示信息,此處省略。
…………
shutdown huge buffer and memory pools...OK
close lsnr socket
DM Database Server shutdown successfully.

5.6 修改歸檔配置文件

  開啓歸檔後,系統會在數據庫目錄下生成歸檔配置文件dmarch.ini,配置該文件如下內容。具體參數可以參考《DM8 數據守護與讀寫分離集羣》的附錄一節。

ARCH_WAIT_APPLY      = 0               # 0表示高性能,1表示事務一致。
[ARCHIVE_LOCAL1]
ARCH_TYPE            = LOCAL            # 本地歸檔類型。
ARCH_FILE_SIZE       = 1024             # 單個歸檔大小(MB)。
ARCH_SPACE_LIMIT     = 51200            # 歸檔文件上限(MB)
ARCH_FLUSH_BUF_SIZE  = 2                # 歸檔刷盤緩存大小(MB)。
ARCH_HANG_FLAG       = 1                # 磁盤不足時,是否掛起。
ARCH_DEST            = /home/dameng/dmdbms/data/DAMENG/arch
[ARCHIVE_REALTIME1]
ARCH_TYPE            = REALTIME         # 歸檔類型。
ARCH_DEST            = DMSERVER2        # 歸檔目標實例名。

  如果有多個從機,就配置[ARCHIVE_REALTIME2]、[ARCHIVE_REALTIME3]等等。

5.7 添加鏈路配置文件

  DAL(Multi-threaded Architecture Link)系統是主備庫之間的專用通信線路。在數據庫目錄下新建dmmal.ini文件,在裏面配置如下配置項。

MAL_TEMP_PATH           = /home/dameng/dmdbms/data/DAMENG/malpath/      # 臨時文件目錄。
MAL_CHECK_INTERVAL      = 10                # MAL鏈路檢測時間間隔。
MAL_CONN_FAIL_INTERVAL  = 10                # 判定MAL鏈路斷開的時間。
MAL_BUF_SIZE            = 512               # 單個MAL緩存大小(MB)。
MAL_SYS_BUF_SIZE        = 2048              # MAL總大小限制(MB)。
MAL_COMPRESS_LEVEL      = 0                 # MAL消息壓縮等級,0表示不壓縮。

[MAL_INST1]
MAL_INST_NAME           = DMSERVER1         # 實例名。
MAL_HOST                = 192.168.20.101    # MAL系統監聽地址。
MAL_INST_HOST           = 192.168.20.101    # 實例對外服務地址。
MAL_INST_PORT           = 5236              # 實例對外服務端口。
MAL_PORT                = 5336              # MAL系統監聽端口。
MAL_DW_PORT             = 5436              # 實例守護進程端口。
MAL_INST_DW_PORT        = 5536              # 實例守護請求端口。

[MAL_INST2]
MAL_INST_NAME           = DMSERVER2
MAL_HOST                = 192.168.20.102
MAL_PORT                = 5336
MAL_INST_HOST           = 192.168.20.102
MAL_INST_PORT           = 5236
MAL_DW_PORT             = 5436
MAL_INST_DW_PORT        = 5536

5.8 添加守護配置文件

  在數據庫目錄下新建dmwatcher.ini文件,在裏面配置如下配置項。

[GRP1]                             # 集羣的組名稱。
DW_TYPE                  = GLOBAL  # 全局守護類型。
DW_MODE                  = AUTO    # MANUAL:故障手切,AUTO:故障自切。
DW_ERROR_TIME            = 20      # 遠程守護進程故障認定時間。
INST_ERROR_TIME          = 20      # 本地實例故障認定時間。
INST_RECOVER_TIME        = 60      # 主庫守護進程啓動恢復的間隔時間。
INST_OGUID               = 45331   # 守護系統唯一 OGUID 值。
INST_AUTO_RESTART        = 1       # 打開實例的自動啓動功能。
RLOG_SEND_THRESHOLD      = 0       # 指定主庫發送日誌到備庫的時間閾值,默認關閉。
RLOG_APPLY_THRESHOLD     = 0       # 指定備庫重演日誌的時間閾值,默認關閉。
INST_INI                 = /home/dameng/dmdbms/data/DAMENG/dm.ini  # dm.ini文件路徑。
INST_STARTUP_CMD         = /home/dameng/dmdbms/bin/dmserver        # 命令行方式啓動。

5.9 註冊數據庫服務

  使用管理員用户將數據庫、守護程序註冊為服務。

kylin@KL1:~$ sudo /home/dameng/dmdbms/script/root/dm_service_installer.sh -t dmserver -p DMSERVER1 -dm_ini /home/dameng/dmdbms/data/DAMENG/dm.ini -m mount
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER1.service → /lib/systemd/system/DmServiceDMSERVER1.service.
創建服務(DmServiceDMSERVER1)完成
kylin@KL1:~$ sudo /home/dameng/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p WATCHER -watcher_ini /home/dameng/dmdbms/data/DAMENG/dmwatcher.ini
Created symlink /etc/systemd/system/multi-user.target.wants/DmWatcherServiceWATCHER.service → /lib/systemd/system/DmWatcherServiceWATCHER.service.
創建服務(DmWatcherServiceWATCHER)完成

6 配置集羣從機

6.1 創建數據庫實例

  使用dameng賬號創建數據庫實例,實例名需與主庫不同。如果使用圖形界面創建,創建後需停止數據庫實例服務。

dameng@KL2:~$ dminit PATH=/home/dameng/dmdbms/data/ INSTANCE_NAME=DMSERVER2 CHARSET=1 SYSDBA_PWD=Dameng123 SYSAUDITOR_PWD=Dameng123
initdb V8
db version: 0x7000d
file dm.key not found, use default license!
License will expire on 2026-04-30
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
 log file path: /home/dameng/dmdbms/data/DAMENG/DAMENG01.log
 log file path: /home/dameng/dmdbms/data/DAMENG/DAMENG02.log
write to dir [/home/dameng/dmdbms/data/DAMENG].
create dm database success. 2025-09-10 17:25:02

6.2 恢復數據庫數據

  使用dmrman命令從主庫傳來的備份文件中恢復數據庫數據,一共三條指令。第一條restore database。

dameng@KL2:~$ dmrman ctlstmt="restore database '/home/dameng/dmdbms/data/DAMENG/dm.ini' from backupset '/home/dameng/dmdbms/data/DAMENG/bak/backup'"
dmrman V8
restore database '/home/dameng/dmdbms/data/DAMENG/dm.ini' from backupset '/home/dameng/dmdbms/data/DAMENG/bak/backup'
file dm.key not found, use default license!
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:11][Remaining:00:00:00]
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:12][Remaining:00:00:00]
restore successfully.
time used: 00:00:12.450

  第二條recover database。

dameng@KL2:~$ dmrman ctlstmt="recover database '/home/dameng/dmdbms/data/DAMENG/dm.ini' from backupset '/home/dameng/dmdbms/data/DAMENG/bak/backup'"
dmrman V8
recover database '/home/dameng/dmdbms/data/DAMENG/dm.ini' from backupset '/home/dameng/dmdbms/data/DAMENG/bak/backup'
file dm.key not found, use default license!
[Percent:100.00%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00]
recover successfully!
time used: 00:00:03.432

  第三條recover database update db_magic。

dameng@KL2:~$ dmrman ctlstmt="recover database '/home/dameng/dmdbms/data/DAMENG/dm.ini' update db_magic"
dmrman V8
recover database '/home/dameng/dmdbms/data/DAMENG/dm.ini' update db_magic
file dm.key not found, use default license!
recover successfully!
time used: 00:00:02.356

6.3 修改實例配置文件

  修改數據庫實例目錄下的配置文件dm.ini,設置ALTER_MODE_STATUS=0、ENABLE_OFFLINE_TS=2、MAL_INI=1、ARCH_INI=1。

6.4 添加歸檔配置文件

  從集羣主機複製dmarch.ini文件到從機,修改主機實例名如下:

ARCH_WAIT_APPLY      = 0               # 0表示高性能,1表示事務一致。
[ARCHIVE_LOCAL1]
ARCH_TYPE            = LOCAL            # 本地歸檔類型。
ARCH_FILE_SIZE       = 1024             # 單個歸檔大小(MB)。
ARCH_SPACE_LIMIT     = 51200            # 歸檔文件上限(MB)
ARCH_FLUSH_BUF_SIZE  = 2                # 歸檔刷盤緩存大小(MB)。
ARCH_HANG_FLAG       = 1                # 磁盤不足時,是否掛起。
ARCH_DEST            = /home/dameng/dmdbms/data/DAMENG/arch
[ARCHIVE_REALTIME1]
ARCH_TYPE            = REALTIME         # 歸檔類型。
ARCH_DEST            = DMSERVER1        # 歸檔目標實例名。

6.5 添加鏈路配置文件

  從集羣主機複製dmmal.ini文件到從機,一般無需修改。

6.6 添加守護配置文件

  從集羣主機複製dmwatcher.ini文件到從機,一般無需修改。

6.7 註冊數據庫服務

  使用管理員用户將數據庫、守護程序註冊為服務,具體方法同主機。

kylin@KL2:~$ sudo /home/dameng/dmdbms/script/root/dm_service_installer.sh -t dmserver -p DMSERVER2 -dm_ini /home/dameng/dmdbms/data/DAMENG/dm.ini -m mount
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER2.service → /lib/systemd/system/DmServiceDMSERVER2.service.
創建服務(DmServiceDMSERVER2)完成
kylin@KL2:~$ sudo /home/dameng/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p WATCHER -watcher_ini /home/dameng/dmdbms/data/DAMENG/dmwatcher.ini
Created symlink /etc/systemd/system/multi-user.target.wants/DmWatcherServiceWATCHER.service → /lib/systemd/system/DmWatcherServiceWATCHER.service.
Created symlink /etc/systemd/system/multi-user.target.wants/DmWatcherServiceWATCHER.service → /lib/systemd/system/DmWatcherServiceWATCHER.service.
創建服務(DmWatcherServiceWATCHER)完成

7 配置監視主機

  達夢數據守護集羣可以有單獨的監視主機,也可以使用數據庫服務器兼做監視主機。達夢的監視服務配置中,規定MON_DW_CONFIRM=1的配置的監視服務只能啓動一個,第二個再啓動的時候就會報錯。可以配置多實例監視器解決這個問題,達夢的多實例監視器要求監視器的個數必須為奇數,因此這裏增加了一台專用監視服務器,一樣安裝達夢數據庫軟件,但不創建實例。這樣集羣能夠實現任意單服務器失效後自動主從切換。

7.1 添加監視配置文件

  首先在三台服務器上初始化聯機日誌文件。命令中的MON_MAGIC參數在三台服務器需要一致,MON_NAME為每台主機上的監視器名稱,如MON1、MON2、MON3。

dameng@KL1:~$ dmmonitor RAFT_FILE_PATH=/home/dameng/dmdbms/log RAFT_FILE_SIZE=512 MON_MAGIC=142857 MON_NAME=MON1

  在數據庫目錄下新建dmmontor.ini文件,每台主機上的配置內容中只有MON_ID、MON_NAME兩項不同。例如:

MON_DW_CONFIRM          = 1                        # 0手動切換,1自動切換。
MON_LOG_PATH            = /home/dameng/dmdbms/log  # 監視器日誌文件存放路徑。
MON_LOG_INTERVAL        = 60                       # 每隔 60s 記錄日誌文件。
MON_LOG_FILE_SIZE       = 512                      # 單個日誌大小(MB)。
MON_LOG_SPACE_LIMIT     = 2048                     # 日誌上限(MB)。
MON_INST_NUM            = 3                        # 監視實例個數。
MON_HB_INTERVAL         = 60                       # 通信心跳檢測間隔。
MON_BRO_INTERVAL        = 100                      # RAFT協議中通信心跳間隔。
MON_VOTE_INTERVAL       = 100                      # RAFT協議中基礎投票間隔。
MON_ID                  = 1                        # 當前監視器在監視器系統中的ID。
MON_MID                 = 45614                    # 當前監視器系統的唯一標識。
MON_NAME                = MON1                     # 當前監視器名稱

[GRP1]
MON_INST_OGUID          = 45331                    # 組 GRP1 的唯一 OGUID 值
MON_DW_IP               = 192.168.20.101:5436      # MAL的地址端口
MON_DW_IP               = 192.168.20.102:5436      # MAL的地址端口

[MON1]
MON_HOST                = 192.168.20.101           # MON1監視器IP。
MON_PORT                = 8341                     # MON1監視器監聽端口。
MON_INST_ID             = 1                        # MON1監視器在監視器系統中的ID。

[MON2]
MON_HOST                = 192.168.20.102           # MON2監視器IP。
MON_PORT                = 8342                     # MON2監視器監聽端口。
MON_INST_ID             = 2                        # MON2監視器在監視器系統中的ID。

[MON3]
MON_HOST                = 192.168.20.103           # MON3監視器IP。
MON_PORT                = 8343                     # MON3監視器監聽端口。
MON_INST_ID             = 3                        # MON3監視器在監視器系統中的ID。

  在其中一台服務器的數據庫目錄下新建dmmonitor_manual.ini文件,用於測試手工切換,其中MON_DW_CONFIRM設置為0。

MON_DW_CONFIRM          = 0                        # 0手動切換,1自動切換。
MON_LOG_PATH            = /home/dameng/dmdbms/log  # 監視器日誌文件存放路徑。
MON_LOG_INTERVAL        = 60                       # 每隔 60s 記錄日誌文件。
MON_LOG_FILE_SIZE       = 512                      # 單個日誌大小(MB)。
MON_LOG_SPACE_LIMIT     = 2048                     # 日誌上限(MB)。
[GRP1]
MON_INST_OGUID          = 45331                    # 組 GRP1 的唯一 OGUID 值
MON_DW_IP               = 192.168.20.101:5436      # MAL的地址端口
MON_DW_IP               = 192.168.20.102:5436      # MAL的地址端口

7.2 註冊數據庫服務

  使用管理員用户將監控程序註冊為服務。

kylin@KL1:~$ sudo /home/dameng/dmdbms/script/root/dm_service_installer.sh -t dmmonitor -p MONITOR -monitor_ini /home/dameng/dmdbms/data/DAMENG/dmmonitor.ini
Created symlink /etc/systemd/system/multi-user.target.wants/DmMonitorServiceMONITOR.service → /lib/systemd/system/DmMonitorServiceMONITOR.service.
創建服務(DmMonitorServiceMONITOR)完成
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.