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 dmdba@192.168.3.5:/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/SYSDBA@127.0.0.1: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/SYSDBA@127.0.0.1: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/SYSDBA@127.0.0.1:32141

SQL>alter database primary;

备库:

使用dmdba用户执行以下命令:

disql sysdba/SYSDBA@127.0.0.1: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 enable DmServiceGRP1_RT_01.service

备库:

使用root用户执行以下命令:

systemctl enable DmServiceGRP1_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/test12345@127.0.0.1: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/test12345@127.0.0.1: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/)获取。

posted @ 2021-10-25 09:12  myflyand  阅读(554)  评论(0)    收藏  举报