DM8資料庫主備高可用配置
DM8資料庫主備高可用配置
一、部署規劃
IP規劃:
主機名 |
服務ip |
心跳ip |
資料庫名 |
例項名 |
備註 |
DM1 |
192.168.3.4 |
192.168.3.8 |
GRP1_RT_01 |
GRP1_RT_01 |
主庫 |
DM2 |
192.168.3.5 |
192.168.3.9 |
GRP1_RT_02 |
GRP1_RT_02 |
備庫 |
DM3 |
192.168.3.6 |
確認監視器 |
埠規劃:
例項名 |
例項埠 |
MAL 系統監聽 TCP 連線的埠 |
例項本地的守護程序監聽 TCP 連線的埠 |
例項監聽守護程序 TCP 連線的埠 |
GRP1_RT_01 |
32141 |
61141 |
52141 |
33141 |
GRP1_RT_02 |
32142 |
61141 |
52141 |
33141 |
二、資料庫軟體安裝
注:主備資料庫節點和確認監視器安裝節點,都需要安裝資料庫軟體。
2.1 作業系統配置
2.1.1 作業系統使用者建立
groupadd -g 12349 dinstall
useradd -u 12345 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
passwd dmdba
2.1.2 修改作業系統使用者變數
使用dmdba使用者執行以下命令:
vi .bash_profile
新增如下內容:
export DM_HOME=/dm/dmdbms
export PATH=$PATH:$DM_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin
變數生效:
[dmdba@DM1 ~]$ source .bash_profile
2.1.3 修改作業系統使用者資源限制
使用root使用者執行以下命令:
vi /etc/security/limits.conf
新增如下內容:
dmdba soft nice 0
dmdba hard nice 0
dmdba soft as unlimited
dmdba hard as unlimited
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft nproc 65536
dmdba hard nproc 65536
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft data unlimited
dmdba hard data unlimited
2.1.4 修改作業系統引數
使用root使用者執行以下命令:
vi /etc/sysctl.conf
新增如下內容:
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
vm.swappiness = 0
vm.dirty_background_ratio = 3
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
kernel.core_pattern=/coredump/%e.core.%p
引數生效:
sysctl -p
2.1.5 安裝目錄建立
使用root使用者執行以下命令:
mkdir -p /dm/dmdbms
chown -R dmdba:dinstall /dm
2.2 資料庫軟體安裝
2.2.1 解壓軟體包
使用root使用者執行以下命令:
unzip dm8_20210630_x86_rh6_64_ent.zip
chown dmdba:dinstall DM*
2.2.2 資料庫軟體安裝
注:因主備庫配置為自動切換模式,所以需要配置確認監視器。
主備節點和監視器節點都需安裝資料庫軟體
使用dmdba使用者執行以下命令:
./DMInstall.bin -i
Please select the installer's language (E/e:English C/c:Chinese) [E/e]:c
解壓安裝程式..........
歡迎使用達夢資料庫安裝程式
是否輸入Key檔案路徑? (Y/y:是 N/n:否) [Y/y]:n
是否設定時區? (Y/y:是 N/n:否) [Y/y]:y
設定時區:
[ 1]: GTM-12=日界線西
[ 2]: GTM-11=薩摩亞群島
[ 3]: GTM-10=夏威夷
[ 4]: GTM-09=阿拉斯加
[ 5]: GTM-08=太平洋時間(美國和加拿大)
[ 6]: GTM-07=亞利桑那
[ 7]: GTM-06=中部時間(美國和加拿大)
[ 8]: GTM-05=東部部時間(美國和加拿大)
[ 9]: GTM-04=大西洋時間(美國和加拿大)
[10]: GTM-03=巴西利亞
[11]: GTM-02=中大西洋
[12]: GTM-01=亞速爾群島
[13]: GTM=格林威治標準時間
[14]: GTM+01=薩拉熱窩
[15]: GTM+02=開羅
[16]: GTM+03=莫斯科
[17]: GTM+04=阿布扎比
[18]: GTM+05=伊斯蘭堡
[19]: GTM+06=達卡
[20]: GTM+07=曼谷,河內
[21]: GTM+08=中國標準時間
[22]: GTM+09=漢城
[23]: GTM+10=關島
[24]: GTM+11=索羅門群島
[25]: GTM+12=斐濟
[26]: GTM+13=努庫阿勒法
[27]: GTM+14=吉里巴斯
請選擇設定時區 [21]:21
安裝型別:
1 典型安裝
2 伺服器
3 客戶端
4 自定義
請選擇安裝型別的數字序號 [1 典型安裝]:1
所需空間: 1178M
請選擇安裝目錄 [/home/dmdba/dmdbms]:/dm/dmdbms
可用空間: 36G
是否確認安裝路徑(/dm/dmdbms)? (Y/y:是 N/n:否) [Y/y]:y
安裝前小結
安裝位置: /dm/dmdbms
所需空間: 1178M
可用空間: 36G
版本資訊:
有效日期:
安裝型別: 典型安裝
是否確認安裝? (Y/y:是 N/n:否):y
2021-10-07 18:11:25
[INFO] 安裝達夢資料庫...
2021-10-07 18:11:25
[INFO] 安裝 基礎 模組...
2021-10-07 18:12:10
[INFO] 安裝 伺服器 模組...
2021-10-07 18:12:11
[INFO] 安裝 客戶端 模組...
2021-10-07 18:12:19
[INFO] 安裝 驅動 模組...
2021-10-07 18:12:21
[INFO] 安裝 手冊 模組...
2021-10-07 18:12:23
[INFO] 安裝 服務 模組...
2021-10-07 18:12:24
[INFO] 移動日誌檔案。
2021-10-07 18:12:24
[INFO] 安裝達夢資料庫完成。
請以root系統使用者執行命令:
/dm/dmdbms/script/root/root_installer.sh
安裝結束
三、主備叢集配置
3.1 建立資料庫例項
注:主備2個節點都需建立資料庫例項
以dmdba使用者執行如下操作命令:
[dmdba@DM1 ~]$ dminit
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-06-28
input system dir: /dm/dmdbms/data
input db name: GRP1_RT_01
input port num: 32141
input page size(4, 8, 16, 32): 32
input extent size(16, 32, 64): 16
input sec priv mode(0, 1, 2): 0
input time zone(-12:59,+14:00): +8:00
string case sensitive? ([Y]es, [N]o): y
which charset to use? (0[GB18030], 1[UTF-8], 2[EUC-KR]): 0
length in char? ([Y]es, [N]o): n
enable database encrypt? ([Y]es, [N]o): n
input slice size(0, 512, 4096): 4096
page check mode? (0/1/2): 0
input elog path: /dm/dmdbms/data/
only create huge table with delta? (0/1): 1
rlog generate for huge? (0/1): 1
pseg_mgr_flag (0/1): 0
auto_overwrite mode? (0/1/2): 1
CHARACTER type fixed storage ? ([Y]es/1, [N]o/0): y
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /dm/dmdbms/data/GRP1_RT_01/GRP1_RT_0101.log
log file path: /dm/dmdbms/data/GRP1_RT_01/GRP1_RT_0102.log
write to dir [/dm/dmdbms/data/GRP1_RT_01].
3.2 啟停主庫
使用dmdba使用者執行以下命令:
dmserver /dmdata/data/DAMENG/dm.ini
出現system is ready後ctrl +c停止資料庫。
3.3 離線備份主庫
使用dmdba使用者執行以下命令:
[dmdba@DM1 bak]$ dmrman CTLSTMT="BACKUP DATABASE '/dm/dmdbms/data/GRP1_RT_01/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm/dmdbms/data/bak/BACKUP_FILE_01'"
dmrman V8
BACKUP DATABASE '/dm/dmdbms/data/GRP1_RT_01/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm/dmdbms/data/bak/BACKUP_FILE_01'
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[23437], file_lsn[23437]
Processing backupset /dm/dmdbms/data/bak/BACKUP_FILE_01
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
backup successfully!
time used: 00:00:01.286
3.4 離線還原備庫
使用dmdba使用者執行以下命令:
拷貝主庫備份檔案至備庫:
zip -r BACKUP_FILE_01.zip BACKUP_FILE_01
scp BACKUP_FILE_01.zip [email protected]:/dm/dmdbms/data/bak
3.4.1 資料還原
使用dmdba使用者執行以下命令:
dmrman CTLSTMT="RESTORE DATABASE '/dm/dmdbms/data/GRP1_RT_02/dm.ini' FROM BACKUPSET '/dm/dmdbms/data/bak/BACKUP_FILE_01'"
3.4.2 資料庫更新
使用dmdba使用者執行以下命令:
dmrman CTLSTMT="RECOVER DATABASE '/dm/dmdbms/data/GRP1_RT_02/dm.ini' UPDATE DB_MAGIC"
3.5 配置dm.ini
主庫:
使用dmdba使用者執行以下命令:
vi dm.ini
修改如下內容:
INSTANCE_NAME = GRP1_RT_01
PORT_NUM = 32141
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64
備庫:
使用dmdba使用者執行以下命令:
vi dm.ini
修改如下內容:
INSTANCE_NAME = GRP1_RT_02
PORT_NUM = 32142
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64
3.6 配置dmmal.ini
注:在dm.ini檔案同級目錄下建立dmmal.ini
主庫:
vi dmmal.ini
新增如下內容:
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = GRP1_RT_01
MAL_HOST = 192.168.3.8
MAL_PORT = 61141
MAL_INST_HOST = 192.168.3.4
MAL_INST_PORT = 32141
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141
[MAL_INST2]
MAL_INST_NAME = GRP1_RT_02
MAL_HOST = 192.168.3.9
MAL_PORT = 61142
MAL_INST_HOST = 192.168.3.5
MAL_INST_PORT = 32142
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
備庫:
vi dmmal.ini
新增如下內容:
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = GRP1_RT_01
MAL_HOST = 192.168.3.8
MAL_PORT = 61141
MAL_INST_HOST = 192.168.3.4
MAL_INST_PORT = 32141
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141
[MAL_INST2]
MAL_INST_NAME = GRP1_RT_02
MAL_HOST = 192.168.3.9
MAL_PORT = 61142
MAL_INST_HOST = 192.168.3.5
MAL_INST_PORT = 32142
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
3.7 配置dmarch.ini
注:在dm.ini同級目錄下,建立dmarch.ini
主庫:
vi dmarch.ini
新增如下內容:
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_RT_02
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm/dmdbms/data/GRP1_RT_01/arch
ARCH_FILE_SIZE = 256
ARCH_SPACE_LIMIT = 0
備庫:
vi dmarch.ini
新增如下內容:
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_RT_01
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm/dmdbms/data/GRP1_RT_02/arch
ARCH_FILE_SIZE = 256
ARCH_SPACE_LIMIT = 0
3.8 配置dmwatcher.ini
注:在dm.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
INST_INI = /dm/dmdbms/data/GRP1_RT_01/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD =/dm/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
備庫:
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
INST_INI = /dm/dmdbms/data/GRP1_RT_02/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm/dmdbms/bin/dmserver
RLOG_APPLY_THRESHOLD = 0
3.9 啟動主備庫到mount狀態
主庫:
使用dmdba使用者執行以下命令:
dmserver /dm/dmdbms/data/GRP1_RT_01/dm.ini mount
備庫:
使用dmdba使用者執行以下命令:
dmserver /dm/dmdbms/data/GRP1_RT_02/dm.ini mount
3.10 設定OGUID
主庫:
使用dmdba使用者執行以下命令:
[dmdba@DM1 bin]$ disql sysdba/[email protected]:32141
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(453331);
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
備庫:
使用dmdba使用者執行以下命令:
disql sysdba/[email protected]:32142
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(453331);
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
3.11 修改資料庫模式
主庫:
使用dmdba使用者執行以下命令:
disql sysdba/[email protected]:32141
SQL>alter database primary;
備庫:
使用dmdba使用者執行以下命令:
disql sysdba/[email protected]:32142
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>alter database standby;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
3.12 配置確認監視器
注:因為主備庫配置為自動切換模式,所以需要配置確認監視器
在DM3伺服器的/dm/data目錄下建立dmmonitor.ini。
新增如下內容:
MON_DW_CONFIRM = 1
MON_LOG_PATH = /dm/data/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.3.8:52141
MON_DW_IP = 192.168.3.9:52142
3.13 註冊資料庫服務
注:主備庫都執行
使用root使用者執行以下命令:
./dm_service_installer.sh -t dmwatcher -p GRP1_RT_01 -watcher_ini /dm/dmdbms/data/GRP1_RT_01/dmwatcher.ini
./dm_service_installer.sh -t dmwatcher -p GRP1_RT_02 -watcher_ini /dm/dmdbms/data/GRP1_RT_02/dmwatcher.ini
./dm_service_installer.sh -t dmserver -p GRP1_RT_01 -dm_ini /dm/dmdbms/data/GRP1_RT_01/dm.ini
./dm_service_installer.sh -t dmserver -p GRP1_RT_02 -dm_ini /dm/dmdbms/data/GRP1_RT_02/dm.ini
3.14 啟使用者資料庫例項服務
主庫:
使用root使用者執行以下命令:
systemctl enableDmServiceGRP1_RT_01.service
備庫:
使用root使用者執行以下命令:
systemctl enableDmServiceGRP1_RT_02.service
3.15 啟動守護程序
主庫:
使用root使用者執行以下命令:
systemctl enable DmWatcherServiceGRP1_RT_01.service
systemctl start DmWatcherServiceGRP1_RT_01.service
systemctl status DmWatcherServiceGRP1_RT_01.service
備庫:
使用root使用者執行以下命令:
systemctl enable DmWatcherServiceGRP1_RT_02.service
systemctl start DmWatcherServiceGRP1_RT_02.service
systemctl status DmWatcherServiceGRP1_RT_02.service
3.16 啟動監視器
使用dmdba使用者執行以下命令:
dmmonitor /dm/data/dmmonitor.ini
3.17 驗證叢集主備同步狀態
主庫:
使用dmdba執行以下命令:
[dmdba@DM1 ~]$ disql test/[email protected]:32141
伺服器[127.0.0.1:32141]:處於主庫開啟狀態
登入使用時間 : 1.424(ms)
disql V8
SQL> create table t(id int);
操作已執行
已用時間: 68.245(毫秒). 執行號:500.
SQL> insert into t values(5);
影響行數 1
已用時間: 2.113(毫秒). 執行號:501.
SQL> commit;
操作已執行
已用時間: 2.601(毫秒). 執行號:502.
備庫:
SQL> conn test/[email protected]:32142
伺服器[127.0.0.1:32142]:處於備庫開啟狀態
登入使用時間 : 3.957(ms)
SQL> select * from t;
行號 ID
---------- -----------
1 5
已用時間: 11.039(毫秒). 執行號:100.
主庫插入的資料,在備庫中可正常查詢,證實叢集主備同步狀態正常。
四、資料庫引數調整
執行引數優化指令碼,優化資料庫引數。
五、重啟資料庫例項
(1)若為第一次關閉資料庫例項,執行以下操作:
使用root使用者執行以下命令:
關閉主庫守護程序:systemctl stop DmWatcherServiceGRP1_RT_01.service
關閉備庫守護程序:systemctl stop DmWatcherServiceGRP1_RT_02.service
關閉主、備庫資料庫例項:
使用dmdba使用者執行以下操作:
在system is ready介面,按ctrl +c停止資料庫。
啟動主庫例項:systemctl start DmServiceGRP1_RT_01.service
啟動備庫例項:systemctl start DmServiceGRP1_RT_02.service
啟動主庫守護程序:systemctl start DmWatcherServiceGRP1_RT_01.service
啟動備庫守護程序:systemctl start DmWatcherServiceGRP1_RT_02.service
(2)若為第二次關閉資料庫例項,執行以下操作
使用root使用者執行以下命令:
關閉主庫守護程序:systemctl stop DmWatcherServiceGRP1_RT_01.service
關閉備庫守護程序:systemctl stop DmWatcherServiceGRP1_RT_02.service
關閉主庫例項:systemctl stop DmServiceGRP1_RT_01.service
關閉備庫例項:systemctl stop DmServiceGRP1_RT_02.service
啟動主庫例項:systemctl start DmServiceGRP1_RT_01.service
啟動備庫例項:systemctl start DmServiceGRP1_RT_02.service
啟動主庫守護程序:systemctl start DmWatcherServiceGRP1_RT_01.service
啟動備庫守護程序:systemctl start DmWatcherServiceGRP1_RT_02.service
想要獲取達夢資料庫更多的學習資料,可登陸達夢資料雲適配中心(https://eco.dameng.com/)獲取。