1. 程式人生 > 其它 >DM8資料庫主備高可用配置

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/)獲取。