達(dá)夢(mèng)數(shù)據(jù)守護(hù)集群安裝部署
借著公司核心系統(tǒng)和達(dá)夢(mèng)數(shù)據(jù)庫做適配POC的機(jī)會(huì),把達(dá)夢(mèng)數(shù)據(jù)守護(hù)集群了解了一下,下面是根據(jù)官方文檔安裝部署實(shí)操。把整個(gè)過程寫成文檔分享出來和小伙伴們一起學(xué)習(xí)一下。
一、安裝前準(zhǔn)備
1.1 硬件環(huán)境建議
數(shù)據(jù)守護(hù)集群安裝部署前需要額外注意操作系統(tǒng)、CPU、網(wǎng)絡(luò)環(huán)境和磁盤 IO 配置情況,其他環(huán)境配置項(xiàng)建議請(qǐng)參考安裝前準(zhǔn)備工作。
1.1.1 操作系統(tǒng)檢查
為了確保集群的高效性,需要對(duì)各節(jié)點(diǎn)操作系統(tǒng)版本進(jìn)行檢查。不同操作系統(tǒng)版本存在性能差異,如果各節(jié)點(diǎn)服務(wù)器的操作系統(tǒng)版本不同,會(huì)嚴(yán)重影響集群的整體性能,尤其是故障切換后可能存在響應(yīng)服務(wù)請(qǐng)求慢的情況。在正式生產(chǎn)環(huán)境中,建議安裝統(tǒng)一版本的操作系統(tǒng),確保系統(tǒng)各節(jié)點(diǎn)版本以及內(nèi)核版本一致。
1.1.2 CPU 架構(gòu)檢查
國產(chǎn)化工作開展以來,國產(chǎn)化芯片種類很多,作為數(shù)據(jù)庫集群來說,需要確保各節(jié)點(diǎn)服務(wù)器的 CPU 一致。不同芯片的性能不同,如果各節(jié)點(diǎn)服務(wù)器的 CPU 不一致,則會(huì)嚴(yán)重影響集群的整體性能,從而影響整體服務(wù)響應(yīng)的效果。在正式生產(chǎn)環(huán)境中,建議使用統(tǒng)一配置的服務(wù)器。
1.1.3 網(wǎng)絡(luò)環(huán)境
心跳網(wǎng)絡(luò)對(duì) mal 通訊系統(tǒng)的影響非常大,如果網(wǎng)絡(luò)丟包或者延遲較大,則會(huì)嚴(yán)重影響 mal 系統(tǒng)的處理能力,從而導(dǎo)致整個(gè)集群出現(xiàn)響應(yīng)服務(wù)請(qǐng)求慢的情況。為確保集群的穩(wěn)定性,網(wǎng)絡(luò)配置如下:
- 使用千兆或千兆以上網(wǎng)絡(luò);
- 集群間的心跳網(wǎng)絡(luò)需同步數(shù)據(jù),建議盡量使用兩個(gè)交換機(jī)構(gòu)建內(nèi)網(wǎng),以實(shí)現(xiàn)冗余和負(fù)載均衡;
- 建議服務(wù)器采用兩個(gè)網(wǎng)卡綁定為一個(gè)邏輯網(wǎng)卡來使用(比如 bond 方式)。
1.1.4 磁盤 IO
磁盤 IO 的讀寫速率會(huì)極大影響系統(tǒng)性能和用戶體驗(yàn)。因此在進(jìn)行集群安裝部署前,應(yīng)測(cè)試 IO 性能能否滿足系統(tǒng)功能和性能需求。
IO 性能指標(biāo)與系統(tǒng)的并發(fā)數(shù)、熱點(diǎn)數(shù)據(jù)等因素往往密切相關(guān)。在數(shù)據(jù)守護(hù)集群,尤其生產(chǎn)系統(tǒng)中,推薦使用高性能 SSD 磁盤,以獲得更佳性能,保證集群數(shù)據(jù)的實(shí)時(shí)同步。
1.2 集群規(guī)劃
| A 機(jī)器 dm1 | B 機(jī)器 dm2 | 監(jiān)視器 dmm | |
|---|---|---|---|
| 業(yè)務(wù) IP | 192.168.17.37 | 192.168.17.38 | 192.168.17.39 |
| 心跳 IP | 192.168.1.1 | 192.168.1.2 | 192.168.1.3 |
| 實(shí)例名 | DMSERVER01 | DMSERVER02 | |
| 實(shí)例端口 | 5236 | 5236 | |
| MAL 端口 | 5336 | 5336 | |
| MAL 守護(hù)進(jìn)程端口 | 5436 | 5436 | |
| 守護(hù)進(jìn)程端口 | 5536 | 5536 | |
| OGUID | 45331 | 45331 | |
| 守護(hù)組 | GRP1 | GRP1 | |
| 安裝目錄 | /home/dmdba/dmdbms | /home/dmdba/dmdbms | /home/dmdba/dmdbms |
| 實(shí)例目錄 | /dmdata/data | /dmdata/data | |
| 歸檔上限 | 51200 | 51200 |
確認(rèn)監(jiān)視器 IP 為 192.168.17.39。
說明:具體規(guī)劃及部署方式以現(xiàn)場(chǎng)環(huán)境為準(zhǔn)。
特別說明一下主庫和備庫,還有監(jiān)視器,三臺(tái)主機(jī)都要提前安裝達(dá)夢(mèng)數(shù)據(jù)庫軟件。
1.3 集群架構(gòu)
搭建的主備集群架構(gòu)如下圖:

1.4 切換模式說明
| 故障切換方式 | dmarch | dmwatcher | dmmonitor | 監(jiān)視器要求 |
|---|---|---|---|---|
| 故障手動(dòng)切換 | ARCH_WAIT_APPLY=0 | DW_MODE=MANUAL | MON_DW_CON FIRM=0 | 1、配置手動(dòng)切換:集群各節(jié)點(diǎn)的 bin 目錄中,存放非確認(rèn)監(jiān)視器配置文件。 |
| 故障自動(dòng)切換 | ARCH_WAIT_APPLY=0 | DW_MODE=AUTO | MON_DW_CON FIRM=1 | 1、配置手動(dòng)切換:集群各節(jié)點(diǎn)的 bin 目錄中,存放非確認(rèn)監(jiān)視器配置文件。 2、配置自動(dòng)切換:在確認(rèn)監(jiān)視器上(非集群節(jié)點(diǎn)),存放確認(rèn)監(jiān)視器配置文件,并注冊(cè)后臺(tái)自啟服務(wù)。 |
- ARCH_WAIT_APPLY 參數(shù),設(shè)置為 0:高性能模式;設(shè)置為 1:事務(wù)一致模式。
- 故障手動(dòng)切換情境下 ARCH_WAIT_APPLY 只能為 0。故障自動(dòng)切換情境下 ARCH_WAIT_APPLY 可以為 0,也可以為 1。
- ARCH_WAIT_APPLY 參數(shù)設(shè)置的判斷依據(jù)為業(yè)務(wù)是否要查詢備機(jī)最新數(shù)據(jù)。如果需要,則配置為 1(較大性能衰減);如果不需要,則配置為 0。
二、集群搭建
2.1 配置 A 機(jī)器dm1
2.1.1 初始化實(shí)例并備份數(shù)據(jù)
- 初始化實(shí)例
[root@dm1 ~]# su - dmdba Last login: Thu Jul 24 13:23:20 CST 2025 on pts/0 [dmdba@dm1 ~]$ cd /home/dmdba/dmdbms/bin [dmdba@dm1 bin]$ ./dminit PATH=/dmdata/data DB_NAME=DAMENG INSTANCE_NAME=DMSERVER01 PAGE_SIZE=8 EXTENT_SIZE=16 LOG_SIZE=2048 SYSDBA_PWD=Sin0pharm SYSAUDITOR_PWD=Sin0pharm 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: /dmdata/data/DAMENG/DAMENG01.log log file path: /dmdata/data/DAMENG/DAMENG02.log write to dir [/dmdata/data/DAMENG]. create dm database success. 2025-07-24 13:29:55 [dmdba@dm1 bin]$
SYSDBA_PWD 和 SYSAUDITOR_PWD 為配置數(shù)據(jù)庫 SYSDBA 用戶和 SYSAUDITOR 用戶的登錄密碼,需要用戶自定義配置,且需保證一定的密碼強(qiáng)度。
- 啟動(dòng)服務(wù)
[dmdba@dm1 ~]$ /home/dmdba/dmdbms/bin/dmserver /dmdata/data/DAMENG/dm.ini file dm.key not found, use default license! version info: develop csek2_vm_t = 1440 nsql_vm_t = 328 prjt2_vm_t = 176 ltid_vm_t = 216 nins2_vm_t = 1136 nset2_vm_t = 272 ndlck_vm_t = 192 ndel2_vm_t = 768 slct2_vm_t = 352 nli2_vm_t = 200 aagr2_vm_t = 304 pscn_vm_t = 376 dist_vm_t = 992 DM Database Server 64 V8 03134284368-20250430-272000-20149 startup... Normal of FAST Normal of DEFAULT Normal of RECYCLE Normal of KEEP Normal of ROLL Database mode = 0, oguid = 0 License will expire on 2026-04-30 file lsn: 0 ndct db load finished, code:100 ckpt2_exec_immediately begin. checkpoint begin, used_space[4096], free_space[4294955008]... checkpoint end, 2 pages flushed, used_space[8192], free_space[4294950912]. checkpoint begin, used_space[8192], free_space[4294950912]... checkpoint begin, used_space[0], free_space[4294959104]... ndct second level fill fast pool finished ndct third level fill fast pool finished ndct second level fill fast pool finished ndct third level fill fast pool finished ndct fill fast pool finished pseg_set_gtv_trxid_low next_trxid in mem:[2002] pseg_collect_mgr_items, total collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 to_release_trxs, 0 active_pages, 0 cmt_pages, 0 pre_cmt_pages, 0 to_release_pages, 0 mgr pages, 0 mgr recs! next_trxid in mem:[4004] next_trxid = 6006. pseg recv finished nsvr_startup end. uthr_pipe_create, create pipe[read:10, write:11] uthr_pipe_create, create pipe[read:12, write:13] uthr_pipe_create, create pipe[read:14, write:15] uthr_pipe_create, create pipe[read:16, write:17] aud sys init success. aud rt sys init success. trx: 6006 purged 1 pages trx: 6025 purged 1 pages trx: 6026 purged 1 pages trx: 6027 purged 1 pages trx: 6028 purged 1 pages trx: 6029 purged 1 pages trx: 6030 purged 1 pages trx: 6040 purged 1 pages trx: 6163 purged 1 pages trx: 6177 purged 1 pages trx: 6178 purged 1 pages trx: 6179 purged 1 pages trx: 6180 purged 1 pages trx: 6181 purged 1 pages trx: 6183 purged 1 pages trx: 6184 purged 1 pages trx: 6186 purged 1 pages trx: 6188 purged 1 pages trx: 6195 purged 1 pages trx: 6201 purged 1 pages trx: 6211 purged 1 pages trx: 6224 purged 1 pages trx: 6225 purged 1 pages trx: 6226 purged 1 pages trx: 6227 purged 1 pages trx: 6239 purged 1 pages trx: 6241 purged 1 pages trx: 6242 purged 1 pages trx: 6243 purged 1 pages trx: 6296 purged 1 pages trx: 6297 purged 1 pages trx: 6308 purged 1 pages trx: 6327 purged 1 pages trx: 6332 purged 1 pages trx: 6337 purged 1 pages trx: 6347 purged 1 pages trx: 6353 purged 1 pages trx: 6354 purged 1 pages trx: 6363 purged 1 pages trx: 6367 purged 33 pages trx: 6394 purged 1 pages trx: 6395 purged 1 pages trx: 6396 purged 1 pages trx: 6397 purged 1 pages trx: 6399 purged 1 pages trx: 6400 purged 1 pages trx: 6401 purged 1 pages trx: 6402 purged 1 pages trx: 6403 purged 1 pages trx: 6405 purged 1 pages trx: 6406 purged 1 pages trx: 6407 purged 1 pages trx: 6408 purged 1 pages trx: 6409 purged 1 pages trx: 6410 purged 1 pages trx: 6411 purged 1 pages trx: 6412 purged 1 pages trx: 6413 purged 1 pages trx: 6414 purged 1 pages trx: 6419 purged 1 pages trx: 6421 purged 1 pages trx: 6423 purged 1 pages trx: 6426 purged 1 pages trx: 6429 purged 1 pages trx: 6434 purged 1 pages trx: 6436 purged 1 pages trx: 6439 purged 1 pages trx: 6441 purged 1 pages trx: 6447 purged 1 pages trx: 6448 purged 1 pages trx: 6597 purged 1 pages trx: 6632 purged 51 pages trx: 6634 purged 1 pages trx: 6642 purged 1 pages trx: 6647 purged 1 pages trx: 6651 purged 1 pages trx: 6676 purged 1 pages trx: 6680 purged 1 pages trx: 6682 purged 1 pages trx: 6684 purged 1 pages trx: 6686 purged 1 pages trx: 6688 purged 1 pages trx: 6690 purged 1 pages trx: 6692 purged 1 pages trx: 6694 purged 1 pages trx: 6696 purged 1 pages trx: 6698 purged 1 pages trx: 6700 purged 1 pages trx: 6702 purged 1 pages trx: 6704 purged 1 pages trx: 6706 purged 1 pages trx: 6708 purged 1 pages trx: 6710 purged 1 pages trx: 6712 purged 1 pages trx: 6714 purged 1 pages trx: 6716 purged 1 pages trx: 6718 purged 1 pages trx: 6720 purged 1 pages trx: 6722 purged 1 pages trx: 6724 purged 1 pages trx: 6726 purged 1 pages trx: 6728 purged 1 pages trx: 6730 purged 1 pages trx: 6732 purged 1 pages trx: 6734 purged 1 pages trx: 6736 purged 1 pages trx: 6738 purged 1 pages trx: 6740 purged 1 pages trx: 6742 purged 1 pages trx: 6744 purged 1 pages trx: 6746 purged 1 pages trx: 6748 purged 1 pages trx: 6750 purged 1 pages trx: 6754 purged 8 pages trx: 6756 purged 1 pages 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.
- 開啟歸檔
[dmdba@dm1 ~]$ /home/dmdba/dmdbms/bin/disql SYSDBA
密碼:
服務(wù)器[LOCALHOST:5236]:處于普通打開狀態(tài)
登錄使用時(shí)間 : 4.500(ms)
disql V8
SQL> ALTER DATABASE MOUNT;
操作已執(zhí)行
已用時(shí)間: 0.639(毫秒). 執(zhí)行號(hào):0.
SQL> ALTER DATABASE ARCHIVELOG;
操作已執(zhí)行
已用時(shí)間: 27.955(毫秒). 執(zhí)行號(hào):0.
SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST=/dmdata/arch, TYPE=LOCAL, FILE_SIZE=2048, SPACE_LIMIT=51200';
操作已執(zhí)行
已用時(shí)間: 2.606(毫秒). 執(zhí)行號(hào):0.
SQL> ALTER DATABASE OPEN;
操作已執(zhí)行
已用時(shí)間: 22.793(毫秒). 執(zhí)行號(hào):0.
SQL>
- 備份數(shù)據(jù)
SQL> BACKUP DATABASE BACKUPSET '/dmdata/dmbak/BACKUP_FILE';
操作已執(zhí)行
已用時(shí)間: 00:00:07.707. 執(zhí)行號(hào):601.
SQL>
- 修改 dm.ini
SQL> SP_SET_PARA_VALUE (2,'PORT_NUM',5236); DMSQL 過程已成功完成 已用時(shí)間: 6.093(毫秒). 執(zhí)行號(hào):602. SQL> SP_SET_PARA_VALUE (2,'DW_INACTIVE_INTERVAL',60); DMSQL 過程已成功完成 已用時(shí)間: 6.074(毫秒). 執(zhí)行號(hào):603. SQL> SP_SET_PARA_VALUE (2,'ALTER_MODE_STATUS',0); DMSQL 過程已成功完成 已用時(shí)間: 6.187(毫秒). 執(zhí)行號(hào):604. SQL> SP_SET_PARA_VALUE (2,'ENABLE_OFFLINE_TS',2); DMSQL 過程已成功完成 已用時(shí)間: 6.463(毫秒). 執(zhí)行號(hào):605. SQL> SP_SET_PARA_VALUE (2,'MAL_INI',1); DMSQL 過程已成功完成 已用時(shí)間: 6.206(毫秒). 執(zhí)行號(hào):606. SQL> SP_SET_PARA_VALUE (2,'RLOG_SEND_APPLY_MON',64); DMSQL 過程已成功完成 已用時(shí)間: 6.816(毫秒). 執(zhí)行號(hào):607. SQL>
- 關(guān)閉前臺(tái)實(shí)例服務(wù)
2.1.2 修改 dmarch.ini
[dmdba@dm1 ~]$ cat /dmdata/data/DAMENG/dmarch.ini
#DaMeng Database Archive Configuration file
#this is comments
ARCH_WAIT_APPLY = 0 #0:高性能 1:事務(wù)一致
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地歸檔類型
ARCH_DEST = /dmdata/arch #本地歸檔存放路徑
ARCH_FILE_SIZE = 2048 #單個(gè)歸檔大小,單位 MB
ARCH_SPACE_LIMIT = 51200 #歸檔上限,單位 MB
ARCH_FLUSH_BUF_SIZE = 2
ARCH_HANG_FLAG = 1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #實(shí)時(shí)歸檔類型
ARCH_DEST = DMSERVER02 #實(shí)時(shí)歸檔目標(biāo)實(shí)例名
[dmdba@dm1 ~]$
2.1.3 創(chuàng)建 dmmal.ini
[dmdba@dm1 ~]$ vi /dmdata/data/DAMENG/dmmal.ini MAL_CHECK_INTERVAL = 10 #MAL 鏈路檢測(cè)時(shí)間間隔 MAL_CONN_FAIL_INTERVAL = 10 #判定 MAL 鏈路斷開的時(shí)間 MAL_TEMP_PATH = /dmdata/data/malpath/ #臨時(shí)文件目錄 MAL_BUF_SIZE = 512 #單個(gè) MAL 緩存大小,單位 MB MAL_SYS_BUF_SIZE = 2048 #MAL 總大小限制,單位 MB MAL_COMPRESS_LEVEL = 0 #MAL 消息壓縮等級(jí),0 表示不壓縮 [MAL_INST1] MAL_INST_NAME = DMSERVER01 #實(shí)例名,和 dm.ini 的 INSTANCE_NAME 一致 MAL_HOST = 192.168.1.1 #MAL 系統(tǒng)監(jiān)聽 TCP 連接的 IP 地址 MAL_PORT = 5336 #MAL 系統(tǒng)監(jiān)聽 TCP 連接的端口 MAL_INST_HOST = 192.168.17.37 #實(shí)例的對(duì)外服務(wù) IP 地址 MAL_INST_PORT = 5236 #實(shí)例對(duì)外服務(wù)端口,和 dm.ini 的 PORT_NUM 一致 MAL_DW_PORT = 5436 #實(shí)例對(duì)應(yīng)的守護(hù)進(jìn)程監(jiān)聽 TCP 連接的端口 MAL_INST_DW_PORT = 5536 #實(shí)例監(jiān)聽守護(hù)進(jìn)程 TCP 連接的端口 [MAL_INST2] MAL_INST_NAME = DMSERVER02 MAL_HOST = 192.168.1.2 MAL_PORT = 5336 MAL_INST_HOST = 192.168.17.38 MAL_INST_PORT = 5236 MAL_DW_PORT = 5436 MAL_INST_DW_PORT = 5536 [dmdba@dm1 ~]$ mkdir /dmdata/data/malpath/ [dmdba@dm1 ~]$
2.1.4 創(chuàng)建 dmwatcher.ini
[dmdba@dm1 ~]$ vi /dmdata/data/DAMENG/dmwatcher.ini [GRP1] DW_TYPE = GLOBAL #全局守護(hù)類型 DW_MODE = AUTO #MANUAL:故障手切 AUTO:故障自切 DW_ERROR_TIME = 20 #遠(yuǎn)程守護(hù)進(jìn)程故障認(rèn)定時(shí)間 INST_ERROR_TIME = 20 #本地實(shí)例故障認(rèn)定時(shí)間 INST_RECOVER_TIME = 60 #主庫守護(hù)進(jìn)程啟動(dòng)恢復(fù)的間隔時(shí)間 INST_OGUID = 45331 #守護(hù)系統(tǒng)唯一 OGUID 值 INST_INI = /dmdata/data/DAMENG/dm.ini #dm.ini 文件路徑 INST_AUTO_RESTART = 1 #打開實(shí)例的自動(dòng)啟動(dòng)功能 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式啟動(dòng) RLOG_SEND_THRESHOLD = 0 #指定主庫發(fā)送日志到備庫的時(shí)間閾值,默認(rèn)關(guān)閉 RLOG_APPLY_THRESHOLD = 0 #指定備庫重演日志的時(shí)間閾值,默認(rèn)關(guān)閉 [dmdba@dm1 ~]$
2.1.5 拷貝備份文件
##拷貝備份文件到 B 機(jī)器
[dmdba@dm1 ~]$ scp -r /dmdata/dmbak/BACKUP_FILE dmdba@192.168.1.2:/dmdata/dmbak
The authenticity of host '192.168.1.2 (192.168.1.2)' can't be established.
ECDSA key fingerprint is SHA256:vO4eWsWx7MIPczIy0bXQq23PcfgYd45a5kBiBC9ImmE.
ECDSA key fingerprint is MD5:bc:be:33:bc:9b:fd:6b:ae:90:c8:39:09:18:fa:d4:c3.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.2' (ECDSA) to the list of known hosts.
dmdba@192.168.1.2's password:
BACKUP_FILE.bak 100% 12MB 96.5MB/s 00:00
BACKUP_FILE.meta 100% 106KB 22.4MB/s 00:00
[dmdba@dm1 ~]$
2.1.6 注冊(cè)服務(wù)
[root@dm1 ~]# /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p DMSERVER01 -dm_ini /dmdata/data/DAMENG/dm.ini -m mount Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER01.service to /usr/lib/systemd/system/DmServiceDMSERVER01.service. 創(chuàng)建服務(wù)(DmServiceDMSERVER01)完成 [root@dm1 ~]# /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServiceWatcher.service to /usr/lib/systemd/system/DmWatcherServiceWatcher.service. 創(chuàng)建服務(wù)(DmWatcherServiceWatcher)完成 [root@dm1 ~]#
若要?jiǎng)h除自啟,可利用如下方式:
/home/dmdba/dmdbms/script/root/dm_service_uninstaller.sh -n DmServiceDMSERVER01 /home/dmdba/dmdbms/script/root/dm_service_uninstaller.sh -n DmWatcherServiceWatcher
2.2 配置 B 機(jī)器 dm2
2.2.1 初始化實(shí)例
[dmdba@dm2 ~]$ cd /home/dmdba/dmdbms/bin [dmdba@dm2 bin]$ ./dminit PATH=/dmdata/data DB_NAME=DAMENG INSTANCE_NAME=DMSERVER02 PAGE_SIZE=8 EXTENT_SIZE=16 LOG_SIZE=2048 SYSDBA_PWD=Sin0pharm SYSAUDITOR_PWD=Sin0pharm 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: /dmdata/data/DAMENG/DAMENG01.log log file path: /dmdata/data/DAMENG/DAMENG02.log write to dir [/dmdata/data/DAMENG]. create dm database success. 2025-07-24 14:34:35 [dmdba@dm2 bin]$
SYSDBA_PWD 和 SYSAUDITOR_PWD 為配置數(shù)據(jù)庫 SYSDBA 用戶和 SYSAUDITOR 用戶的登錄密碼,需要用戶自定義配置,且需保證一定的密碼強(qiáng)度。
2.2.2 恢復(fù)數(shù)據(jù)
[dmdba@dm2 ~]$ ls -lh /dmdata/dmbak/BACKUP_FILE/ total 13M -rw-r--r-- 1 dmdba dinstall 12M Jul 24 14:17 BACKUP_FILE.bak -rw-r--r-- 1 dmdba dinstall 106K Jul 24 14:17 BACKUP_FILE.meta [dmdba@dm2 ~]$ [dmdba@dm2 ~]$ /home/dmdba/dmdbms/bin/dmrman CTLSTMT="RESTORE DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmbak/BACKUP_FILE'" dmrman V8 RESTORE DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmbak/BACKUP_FILE' file dm.key not found, use default license! [Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00] restore successfully. time used: 00:00:02.480 [dmdba@dm2 ~]$ /home/dmdba/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmbak/BACKUP_FILE'" dmrman V8 RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmbak/BACKUP_FILE' file dm.key not found, use default license! ==============================Error Stack============================== DM[603]:備份集[/dmdata/dmbak/BACKUP_FILE]備份過程中未產(chǎn)生日志 ======================================================================= recover successfully! time used: 00:00:01.242 [dmdba@dm2 ~]$ /home/dmdba/dmdbms/bin/dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' UPDATE DB_MAGIC" dmrman V8 RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' UPDATE DB_MAGIC file dm.key not found, use default license! recover successfully! time used: 00:00:01.244 [dmdba@dm2 ~]$
2.2.3 替換 dmarch.ini
[dmdba@dm2 ~]$ vi /dmdata/data/DAMENG/dmarch.ini ARCH_WAIT_APPLY = 0 #0:高性能 1:事務(wù)一致 [ARCHIVE_LOCAL] ARCH_TYPE = LOCAL #本地歸檔類型 ARCH_DEST = /dmdata/arch #本地歸檔存放路徑 ARCH_FILE_SIZE = 2048 #單個(gè)歸檔大小,單位 MB ARCH_SPACE_LIMIT = 51200 #歸檔上限,單位 MB ARCH_FLUSH_BUF_SIZE = 2 ARCH_HANG_FLAG = 1 [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME #實(shí)時(shí)歸檔類型 ARCH_DEST = DMSERVER01 #實(shí)時(shí)歸檔目標(biāo)實(shí)例名 [dmdba@dm2 ~]$
2.2.4 配置 dm.ini、dmmal.ini 和 dmwatcher.ini
配置 dm.ini
在 B 機(jī)器上配置備庫的實(shí)例名為 DMSERVER02,dm.ini 參數(shù)修改如下:
[dmdba@dm2 ~]$ vi /dmdata/data/DAMENG/dm.ini INSTANCE_NAME = DMSERVER02 PORT_NUM = 5236 #數(shù)據(jù)庫實(shí)例監(jiān)聽端口 DW_INACTIVE_INTERVAL = 60 #接收守護(hù)進(jìn)程消息超時(shí)時(shí)間 ALTER_MODE_STATUS = 0 #不允許手工方式修改實(shí)例模式/狀態(tài)/OGUID ENABLE_OFFLINE_TS = 2 #不允許備庫 OFFLINE 表空間 MAL_INI = 1 #打開 MAL 系統(tǒng) ARCH_INI = 1 #打開歸檔配置 RLOG_SEND_APPLY_MON = 64 #統(tǒng)計(jì)最近 64 次的日志重演信息
配置 dmmal.ini 和 dmwatcher.ini
B 機(jī)器里 dmmal.ini、dmwatcher.ini 與 A 機(jī)器 DMSERVER01 的 dmmal.ini、dmwatcher.ini 相同,參照 A 機(jī)器 dmmal.ini、dmwatcher.ini 文件進(jìn)行配置。
[dmdba@dm2 ~]$ vi /dmdata/data/DAMENG/dmmal.ini MAL_CHECK_INTERVAL = 10 #MAL 鏈路檢測(cè)時(shí)間間隔 MAL_CONN_FAIL_INTERVAL = 10 #判定 MAL 鏈路斷開的時(shí)間 MAL_TEMP_PATH = /dmdata/data/malpath/ #臨時(shí)文件目錄 MAL_BUF_SIZE = 512 #單個(gè) MAL 緩存大小,單位 MB MAL_SYS_BUF_SIZE = 2048 #MAL 總大小限制,單位 MB MAL_COMPRESS_LEVEL = 0 #MAL 消息壓縮等級(jí),0 表示不壓縮 [MAL_INST1] MAL_INST_NAME = DMSERVER01 #實(shí)例名,和 dm.ini 的 INSTANCE_NAME 一致 MAL_HOST = 192.168.1.1 #MAL 系統(tǒng)監(jiān)聽 TCP 連接的 IP 地址 MAL_PORT = 5336 #MAL 系統(tǒng)監(jiān)聽 TCP 連接的端口 MAL_INST_HOST = 192.168.17.37 #實(shí)例的對(duì)外服務(wù) IP 地址 MAL_INST_PORT = 5236 #實(shí)例對(duì)外服務(wù)端口,和 dm.ini 的 PORT_NUM 一致 MAL_DW_PORT = 5436 #實(shí)例對(duì)應(yīng)的守護(hù)進(jìn)程監(jiān)聽 TCP 連接的端口 MAL_INST_DW_PORT = 5536 #實(shí)例監(jiān)聽守護(hù)進(jìn)程 TCP 連接的端口 [MAL_INST2] MAL_INST_NAME = DMSERVER02 MAL_HOST = 192.168.1.2 MAL_PORT = 5336 MAL_INST_HOST = 192.168.17.38 MAL_INST_PORT = 5236 MAL_DW_PORT = 5436 MAL_INST_DW_PORT = 5536 [dmdba@dm2 ~]$ mkdir /dmdata/data/malpath/ [dmdba@dm2 ~]$ [dmdba@dm2 ~]$ vi /dmdata/data/DAMENG/dmwatcher.ini [GRP1] DW_TYPE = GLOBAL #全局守護(hù)類型 DW_MODE = AUTO #MANUAL:故障手切 AUTO:故障自切 DW_ERROR_TIME = 20 #遠(yuǎn)程守護(hù)進(jìn)程故障認(rèn)定時(shí)間 INST_ERROR_TIME = 20 #本地實(shí)例故障認(rèn)定時(shí)間 INST_RECOVER_TIME = 60 #主庫守護(hù)進(jìn)程啟動(dòng)恢復(fù)的間隔時(shí)間 INST_OGUID = 45331 #守護(hù)系統(tǒng)唯一 OGUID 值 INST_INI = /dmdata/data/DAMENG/dm.ini #dm.ini 文件路徑 INST_AUTO_RESTART = 1 #打開實(shí)例的自動(dòng)啟動(dòng)功能 INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式啟動(dòng) RLOG_SEND_THRESHOLD = 0 #指定主庫發(fā)送日志到備庫的時(shí)間閾值,默認(rèn)關(guān)閉 RLOG_APPLY_THRESHOLD = 0 #指定備庫重演日志的時(shí)間閾值,默認(rèn)關(guān)閉 [dmdba@dm2 ~]$
2.2.5 注冊(cè)服務(wù)
[root@dm2 ~]# /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p DMSERVER02 -dm_ini /dmdata/data/DAMENG/dm.ini -m mount Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER02.service to /usr/lib/systemd/system/DmServiceDMSERVER02.service. 創(chuàng)建服務(wù)(DmServiceDMSERVER02)完成 [root@dm2 ~]# /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServiceWatcher.service to /usr/lib/systemd/system/DmWatcherServiceWatcher.service. 創(chuàng)建服務(wù)(DmWatcherServiceWatcher)完成 [root@dm2 ~]#
若要?jiǎng)h除自啟,可利用如下方式:
/home/dmdba/dmdbms/script/root/dm_service_uninstaller.sh -n DmServiceDMSERVER02 /home/dmdba/dmdbms/script/root/dm_service_uninstaller.sh -n DmWatcherServiceWatcher
2.3 配置確認(rèn)監(jiān)視器
在第三臺(tái)機(jī)器 192.168.17.39 上配置確認(rèn)監(jiān)視器,存放確認(rèn)監(jiān)視器配置文件,并注冊(cè)后臺(tái)自啟服務(wù)。
2.3.1 創(chuàng)建 dmmonitor.ini
[dmdba@dmm ~]$ vi /home/dmdba/dmdbms/bin/dmmonitor.ini MON_DW_CONFIRM = 1 #0:非確認(rèn)(故障手切) 1:確認(rèn)(故障自切) MON_LOG_PATH = ../log #監(jiān)視器日志文件存放路徑 MON_LOG_INTERVAL = 60 #每隔 60s 定時(shí)記錄系統(tǒng)信息到日志文件 MON_LOG_FILE_SIZE = 2048 #單個(gè)日志大小,單位 MB MON_LOG_SPACE_LIMIT = 2048 #日志上限,單位 MB [GRP1] MON_INST_OGUID = 45331 #組 GRP1 的唯一 OGUID 值 MON_DW_IP = 192.168.1.1:5436 #IP 對(duì)應(yīng) MAL_HOST,PORT 對(duì)應(yīng) MAL_DW_PORT MON_DW_IP = 192.168.1.2:5436 [dmdba@dmm ~]$
配置非確認(rèn)監(jiān)視器:集群各節(jié)點(diǎn)的 bin 目錄中,存放非確認(rèn)監(jiān)視器配置文件。
在配置監(jiān)視器時(shí),一般配置好確認(rèn)監(jiān)視器后,建議再配置一個(gè)非確認(rèn)監(jiān)視器的配置文件,在主備發(fā)生切換時(shí),可以通過前臺(tái)的方式啟動(dòng)非確認(rèn)監(jiān)視器進(jìn)行手動(dòng)切換。非確認(rèn)監(jiān)視器是通過將監(jiān)視器配置文件中 MON_DW_CONFIRM 參數(shù)值修改為 0 來實(shí)現(xiàn),示例如下:
[dmdba@dmm ~]$ vi /home/dmdba/dmdbms/bin/dmmonitor_manual.ini MON_DW_CONFIRM = 0 #0:非確認(rèn)(故障手切) 1:確認(rèn)(故障自切) MON_LOG_PATH = ../log #監(jiān)視器日志文件存放路徑 MON_LOG_INTERVAL = 60 #每隔 60s 定時(shí)記錄系統(tǒng)信息到日志文件 MON_LOG_FILE_SIZE = 2048 #單個(gè)日志大小,單位 MB MON_LOG_SPACE_LIMIT = 2048 #日志上限,單位 MB [GRP1] MON_INST_OGUID = 45331 #組 GRP1 的唯一 OGUID 值 MON_DW_IP = 192.168.1.1:5436 #IP 對(duì)應(yīng) MAL_HOST,PORT 對(duì)應(yīng) MAL_DW_PORT MON_DW_IP = 192.168.1.2:5436 [dmdba@dmm ~]$
2.3.2 注冊(cè)服務(wù)
[root@dmm ~]# /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /home/dmdba/dmdbms/bin/dmmonitor.ini Created symlink from /etc/systemd/system/multi-user.target.wants/DmMonitorServiceMonitor.service to /usr/lib/systemd/system/DmMonitorServiceMonitor.service. 創(chuàng)建服務(wù)(DmMonitorServiceMonitor)完成 [root@dmm ~]#
非確認(rèn)監(jiān)視器無需注冊(cè)服務(wù)。
若要?jiǎng)h除自啟服務(wù),可利用如下方式:
/home/dmdba/dmdbms/script/root/dm_service_uninstaller.sh -n DmMonitorServiceMonitor
2.3.3 監(jiān)視器使用
注意本小節(jié)監(jiān)視器使用可以在2.4 小節(jié)操作后再執(zhí)行。
| 命令 | 含義 |
|---|---|
| list | 查看守護(hù)進(jìn)程的配置信息 |
| show global info | 查看所有實(shí)例組的信息 |
| tip | 查看系統(tǒng)當(dāng)前運(yùn)行狀態(tài) |
| login | 登錄監(jiān)視器 |
| logout | 退出登錄 |
| choose switchover GRP1 | 主機(jī)正常:查看可切換為主機(jī)的實(shí)例列表 |
| switchover GRP1.實(shí)例名 | 主機(jī)正常:使用指定組的指定實(shí)例,切換為主機(jī) |
| choose takeover GRP1 | 主機(jī)故障:查看可切換為主機(jī)的實(shí)例列表 |
| takeover GRP1.實(shí)例名 | 主機(jī)故障:使用指定組的指定實(shí)例,切換為主機(jī) |
| choose takeover force GRP1 | 強(qiáng)制切換:查看可切換為主機(jī)的實(shí)例列表 |
| takeover force GRP1.實(shí)例名 | 強(qiáng)制切換:使用指定組的指定實(shí)例,切換為主機(jī) |
對(duì)于在生產(chǎn)環(huán)境中配置有確認(rèn)監(jiān)視器時(shí),主備只是發(fā)生了切換的情況下,再想將主備切換回去時(shí),只需要啟動(dòng)非確認(rèn)監(jiān)視器執(zhí)行切換命令即可。
例如,有主庫 DMSERVER01 與備庫 DMSERVER02 發(fā)生切換,恢復(fù)方法如下:
- 通過前臺(tái)方式啟動(dòng)非確認(rèn)監(jiān)視器。
cd /home/dmdba/dmdbms/bin ./dmmonitor dmmonitor_manual.ini

- 檢查集群狀態(tài)。
可通過監(jiān)視器命令"tip"或"show"來檢查集群狀態(tài)是否正常。


通過 “tip” 命令可以看到集群狀態(tài)正常。
- 登錄非確認(rèn)監(jiān)視器。
在非確認(rèn)監(jiān)視器中輸入"login"再輸入用戶名和密碼登錄監(jiān)視器。

- 查看滿足切換條件的實(shí)例。
輸入命令"choose switchover 組名"查看可切換為主機(jī)的實(shí)例列表。
choose switchover GRP1

可以看到 DMSERVER02可以進(jìn)行切換。
- 主備切換。
執(zhí)行命令"switchover GRP1.實(shí)例名"進(jìn)行切換。
switchover GRP1.DMSERVER02

切換成功,DMSERVER02 恢復(fù)到主庫對(duì)外提供服務(wù)。
- 退出非確認(rèn)監(jiān)視器。
先通過監(jiān)視器命令"tip"和"show"檢查當(dāng)前集群狀態(tài)。

集群狀態(tài)正常,執(zhí)行“exit”命令退出監(jiān)視器。

建議
生產(chǎn)環(huán)境中建議應(yīng)用使用服務(wù)名的方式進(jìn)行連接,在配置文件 dm_svc.conf 中配置只連主庫,這樣連接的好處在于當(dāng)主備發(fā)生切換后應(yīng)用會(huì)自動(dòng)連接到當(dāng)前的主庫,不會(huì)影響應(yīng)用的正常使用。dm_svc.conf 詳細(xì)介紹參考第三章節(jié) dm_svc.conf 配置。
2.4 啟動(dòng)服務(wù)及查看信息
2.4.1 啟動(dòng)數(shù)據(jù)庫并修改參數(shù)
#A 機(jī)器 dm1
[dmdba@dm1 ~]$ /home/dmdba/dmdbms/bin/DmServiceDMSERVER01 start
Starting DmServiceDMSERVER01: [ OK ]
[dmdba@dm1 ~]$ /home/dmdba/dmdbms/bin/disql SYSDBA/Sin0pharm@192.168.17.37:5236
服務(wù)器[192.168.17.37:5236]:處于普通配置狀態(tài)
登錄使用時(shí)間 : 16.958(ms)
disql V8
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL 過程已成功完成
已用時(shí)間: 14.787(毫秒). 執(zhí)行號(hào):1.
SQL> SP_SET_OGUID(45331);
DMSQL 過程已成功完成
已用時(shí)間: 5.114(毫秒). 執(zhí)行號(hào):2.
SQL> ALTER DATABASE PRIMARY;
操作已執(zhí)行
已用時(shí)間: 17.608(毫秒). 執(zhí)行號(hào):0.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL 過程已成功完成
已用時(shí)間: 21.001(毫秒). 執(zhí)行號(hào):3.
SQL>
#B 機(jī)器 dm2
[dmdba@dm2 ~]$ /home/dmdba/dmdbms/bin/DmServiceDMSERVER02 start
Starting DmServiceDMSERVER02: [ OK ]
[dmdba@dm2 ~]$ /home/dmdba/dmdbms/bin/disql SYSDBA/Sin0pharm@192.168.17.38:5236
服務(wù)器[192.168.17.38:5236]:處于普通配置狀態(tài)
登錄使用時(shí)間 : 13.905(ms)
disql V8
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL 過程已成功完成
已用時(shí)間: 21.294(毫秒). 執(zhí)行號(hào):1.
SQL> SP_SET_OGUID(45331);
DMSQL 過程已成功完成
已用時(shí)間: 5.341(毫秒). 執(zhí)行號(hào):2.
SQL> ALTER DATABASE STANDBY;
操作已執(zhí)行
已用時(shí)間: 12.983(毫秒). 執(zhí)行號(hào):0.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL 過程已成功完成
已用時(shí)間: 10.001(毫秒). 執(zhí)行號(hào):3.
SQL>
2.4.2 啟動(dòng)守護(hù)進(jìn)程
#A/B機(jī)器
[dmdba@dm1 ~]$ /home/dmdba/dmdbms/bin/DmWatcherServiceWatcher start
Starting DmWatcherServiceWatcher: [ OK ]
[dmdba@dm1 ~]$
[dmdba@dm2 ~]$ /home/dmdba/dmdbms/bin/DmWatcherServiceWatcher start
Starting DmWatcherServiceWatcher: [ OK ]
[dmdba@dm2 ~]$
2.4.3 啟動(dòng)監(jiān)視器
##后臺(tái)啟動(dòng)
[dmdba@dmm bin]$ /home/dmdba/dmdbms/bin/DmMonitorServiceMonitor start
Starting DmMonitorServiceMonitor: [ OK ]
[dmdba@dmm bin]$
##前臺(tái)啟動(dòng),非確認(rèn)方式
/home/dmdba/dmdbms/bin/dmmonitor /home/dmdba/dmdbms/bin/dmmonitor_manual.ini
2.5 啟停集群
##啟動(dòng)
##A/B 機(jī)器
[dmdba@dm1 ~]$ /home/dmdba/dmdbms/bin/DmWatcherServiceWatcher start
Starting DmWatcherServiceWatcher: [ OK ]
[dmdba@dm1 ~]$
[dmdba@dm2 ~]$ /home/dmdba/dmdbms/bin/DmWatcherServiceWatcher start
Starting DmWatcherServiceWatcher: [ OK ]
[dmdba@dm2 ~]$
##停止
##A/B機(jī)器
[dmdba@dm1 ~]$ /home/dmdba/dmdbms/bin/DmWatcherServiceWatcher stop
Starting DmWatcherServiceWatcher: [ OK ]
[dmdba@dm1 ~]$
[dmdba@dm2 ~]$ /home/dmdba/dmdbms/bin/DmWatcherServiceWatcher stop
Starting DmWatcherServiceWatcher: [ OK ]
[dmdba@dm2 ~]$
##A 機(jī)器
[dmdba@~]$ /home/dmdba/dmdbms/bin/DmServiceDMSERVER01 stop
##B機(jī)器
[dmdba@dm2 ~]$ /home/dmdba/dmdbms/bin/DmServiceDMSERVER02 stop
Starting DmServiceDMSERVER02: [ OK ]
[dmdba@dm2 ~]$
2.6 測(cè)試同步
在A 機(jī)器dm1 上創(chuàng)建表t并插入數(shù)據(jù),然后切換到B 機(jī)器dm2 查詢表t檢查記錄是否同步
[dmdba@dm1 ~]$ /home/dmdba/dmdbms/bin/disql SYSDBA/Sin0pharm@192.168.17.37:5236
服務(wù)器[192.168.17.37:5236]:處于主庫打開狀態(tài)
登錄使用時(shí)間 : 16.145(ms)
disql V8
SQL> create table t (id int,name varchar2(200));
操作已執(zhí)行
已用時(shí)間: 8.671(毫秒). 執(zhí)行號(hào):801.
SQL> insert into t values(1,'sy test');
影響行數(shù) 1
已用時(shí)間: 13.662(毫秒). 執(zhí)行號(hào):802.
SQL> commit;
操作已執(zhí)行
已用時(shí)間: 2.169(毫秒). 執(zhí)行號(hào):803.
SQL> select * from t;
行號(hào) ID NAME
---------- ----------- -------
1 1 sy test
已用時(shí)間: 16.029(毫秒). 執(zhí)行號(hào):804.
SQL>
[dmdba@dm2 ~]$ /home/dmdba/dmdbms/bin/disql SYSDBA/Sin0pharm@192.168.17.38:5236
服務(wù)器[192.168.17.38:5236]:處于備庫打開狀態(tài)
登錄使用時(shí)間 : 16.050(ms)
disql V8
SQL> select * from t;
行號(hào) ID NAME
---------- ----------- -------
1 1 sy test
已用時(shí)間: 14.389(毫秒). 執(zhí)行號(hào):101.
SQL>
三、dm_svc.conf 配置
3.1 簡(jiǎn)介
dm_svc.conf 是使用達(dá)夢(mèng)數(shù)據(jù)庫時(shí)非常重要的配置文件,它包含了達(dá)夢(mèng)各接口和客戶端工具所需要配置的一些參數(shù)。通過它可以實(shí)現(xiàn)達(dá)夢(mèng)各種集群的讀寫分離和均衡負(fù)載,且必須和接口/客戶端工具位于同一臺(tái)機(jī)器上才能生效。
初始 dm_svc.conf 文件由達(dá)夢(mèng)安裝時(shí)自動(dòng)生成。不同的平臺(tái)生成目錄有所不同,注意相應(yīng)訪問用戶需要對(duì)該文件有讀取權(quán)限。
- 32 位的 DM 安裝在 Win32 操作平臺(tái)下,此文件位于 %SystemRoot%\system32 目錄;
- 64 位的 DM 安裝在 Win64 操作平臺(tái)下,此文件位于 %SystemRoot%\system32 目錄;
- 32 位的 DM 安裝在 Win64 操作平臺(tái)下,此文件位于 %SystemRoot%\SysWOW64 目錄;
- 在 Linux 平臺(tái)下,此文件位于 /etc 目錄。
但在某些情況下,所使用的用戶沒有讀取和修改 /etc 目錄下文件的權(quán)限,這時(shí)就需要將 dm_svc.conf 文件放到有權(quán)限的目錄下,并修改 url 連接串的內(nèi)容。以 Linux 平臺(tái),文件放在 /home/dmdba 目錄下為例:
-
在 /home/dmdba 目錄下,編輯 dm_svc.conf 文件。
TIME_ZONE=(480) LANGUAGE=(cn) dm=(ip:端口) [dm] KEYWORDS=(需要排除的關(guān)鍵字) -
修改連接串。
jdbc:dm://dm?dmsvcconf=/home/dmdba/dm_svc.conf
dm_svc.conf 配置文件的內(nèi)容分為全局配置區(qū)和服務(wù)配置區(qū)。全局配置區(qū)在前,可配置所有的配置項(xiàng),服務(wù)配置區(qū)在后,以“[服務(wù)名]”開頭,可配置除了服務(wù)名外的所有配置項(xiàng)。服務(wù)配置區(qū)中的配置優(yōu)先級(jí)高于全局配置區(qū)(服務(wù)配置區(qū)的相同配置項(xiàng)會(huì)覆蓋全局配置區(qū)對(duì)應(yīng)的配置項(xiàng))。
3.2 常用配置項(xiàng)介紹
- 服務(wù)名
用于連接數(shù)據(jù)庫的服務(wù)名,參數(shù)值格式為:
服務(wù)名=(IP[:PORT],IP[:PORT],…)。
- TIME_ZONE
指明客戶端的默認(rèn)時(shí)區(qū)設(shè)置范圍為:-779~840M,如 60 對(duì)應(yīng) +1:00 時(shí)區(qū),+480 對(duì)于東八區(qū),如果不做配置默認(rèn)是操作系統(tǒng)的時(shí)區(qū)。
- KEYWORDS
該參數(shù)可以用于屏蔽數(shù)據(jù)庫關(guān)鍵字,如果數(shù)據(jù)庫關(guān)鍵字在 SQL 語句中以單詞的形式存在,無法識(shí)別需要加上雙引號(hào)或者可以通過該參數(shù)來屏蔽關(guān)鍵字,建議大小寫都寫入?yún)?shù)中。
例如:KEYWORDS=(versions,VERSIONS,type,TYPE)。
- LOGIN_MODE
指定優(yōu)先登錄的服務(wù)器模式。0:優(yōu)先連接 PRIMARY 模式的庫,NORMAL 模式次之,最后選擇 STANTBY 模式;1:只連接主庫;2:只連接備庫;3:優(yōu)先連接 STANDBY 模式的庫,PRIMARY 模式次之,最后選擇 NORMAL 模式;4:優(yōu)先連接 NORMAL 模式的庫,PRIMARY 模式次之,最后選擇 STANDBY 模式。
注意
在 2021 年版本之后,此參數(shù)的默認(rèn)值由 0 變更為 4。該參數(shù)詳細(xì)介紹及使用辦法請(qǐng)參考《DM 數(shù)據(jù)守護(hù)與讀寫分離集群》-5.8 章節(jié)。手冊(cè)位于數(shù)據(jù)庫安裝路徑 /dmdbms/doc 文件夾。
- SWITCH_TIMES
表示以服務(wù)名連接數(shù)據(jù)庫時(shí),若未找到符合條件的庫成功建立連接,將嘗試遍歷服務(wù)名中庫列表的次數(shù)。有效值范圍 1~9223372036854775807,默認(rèn)值為 1,可以設(shè)置至少 3 次用來避免由于網(wǎng)卡的波動(dòng),造成數(shù)據(jù)庫連接測(cè)頻繁切換。
- SWITCH_INTERVAL
表示在服務(wù)器之間切換的時(shí)間間隔,單位為毫秒,有效值范圍 1~9223372036854775807。與參數(shù) SWITCH_TIMES、EP_SELECTOR 配合使用,EP_SELECTOR 設(shè)置為 0,等待 SWITCH_INTERVAL 后會(huì)切換嘗試連接下一個(gè)服務(wù)器,EP_SELECTOR 設(shè)置為 1,等待 SWITCH_INTERVAL 后會(huì)繼續(xù)嘗試連接該服務(wù)器,直到 SWITCH_TIMES 次再切換下一個(gè)服務(wù)器。
- EP_SELECTOR
表示連接數(shù)據(jù)庫時(shí)采用何種模型建立連接。0:依次選取列表中的不同節(jié)點(diǎn)建立連接,使得所有連接均勻地分布在各個(gè)節(jié)點(diǎn)上;1:選擇列表中最前面的節(jié)點(diǎn)建立連接,只有當(dāng)前節(jié)點(diǎn)無法建立連接時(shí)才會(huì)選擇下一個(gè)節(jié)點(diǎn)進(jìn)行連接。
- AUTO_RECONNECT
表示連接發(fā)生異常或一些特殊場(chǎng)景下連接處理策略。0:關(guān)閉連接,1:當(dāng)連接發(fā)生異常時(shí)自動(dòng)切換到其他庫,無論切換成功還是失敗都會(huì)拋一個(gè) SQLEXCEPTION,用于通知上層應(yīng)用進(jìn)行事務(wù)執(zhí)行失敗時(shí)的相關(guān)處理;2 配合 EP_SELECTOR=1 使用,如果服務(wù)名列表前面的節(jié)點(diǎn)恢復(fù)了,將當(dāng)前連接切換到前面的節(jié)點(diǎn)上,可以根據(jù)應(yīng)用的實(shí)際要求設(shè)定。
3.3 常用配置
3.3.1 單機(jī)配置
配置示例:
[dmdba@dm2 ~]$ vi /etc/dm_svc.conf
[dmdba@dm2 ~]$ cat /etc/dm_svc.conf
##以#開頭的行表示是注釋
###全局配置區(qū)
TIME_ZONE=(480)
LANGUAGE=(cn)
DM=(192.168.17.37:5236)
連接示例:
- Disql 連接:
[dmdba@dm2 ~]$ /home/dmdba/dmdbms/bin/disql SYSDBA/Sin0pharm@DM
服務(wù)器[192.168.17.37:5236]:處于備庫打開狀態(tài)
登錄使用時(shí)間 : 16.761(ms)
disql V8
SQL>
- 通過管理工具連接:

3.3.2 主備集群配置
-
配置示例:
[dmdba@dm2 ~]$ vi /etc/dm_svc.conf [dmdba@dm2 ~]$ cat /etc/dm_svc.conf ##以#開頭的行表示是注釋 ##全局配置區(qū) TIME_ZONE=(480) LANGUAGE=(cn) DMHA=(192.168.17.37:5236,192.168.17.38:5236) [DMHA] SWITCH_TIMES=(3) SWITCH_INTERVAL=(100) LOGIN_MODE=(1) [dmdba@dm2 ~]$ /home/dmdba/dmdbms/bin/disql SYSDBA/Sin0pharm@DMHA 服務(wù)器[192.168.17.38:5236]:處于主庫打開狀態(tài) 登錄使用時(shí)間 : 22.032(ms) disql V8 SQL> -
jdbc 連接串:
jdbc:dm://DMHA




