注册
达梦数据库主备集群部署
培训园地/ 文章详情 /

达梦数据库主备集群部署

刘晓静 2023/07/31 2372 0 0

前言:本文章描述1主1备1监视器集群架构下,配置实时备库,并手工进行主备切换。以下操作步骤仅供参考,环境配置信息请按照实际业务需求进行调整。

一、环境规划

1、系统的硬件环境

硬件名称 配置
主库 CPU:X86_64
逻辑CPU:32C
内存:32G
磁盘:外挂磁盘50G
操作系统:ky10(虚拟机)

备库 CPU:X86_64
逻辑CPU:32C
内存:32G
磁盘:外挂磁盘50G
操作系统:ky10(虚拟机)

2、网络环境配置

编号 服务器名称 服务器IP 数据库端口
1 主库 物理IP:10.0.0.13 5236
2 备库 物理IP:10.0.0.14 5236

3、环境规划

(1)安装路径规划
安装项 路径
软件安装路径 /opt/dmdbms/dmdbms
数据文件目录 /opt/dmdbms/data
归档文件目录 /opt/dmdbms/dmarch
备份文件目录 /opt/dmdbms
SQL文件路径 /opt/dmdbms/dmsqllog
CORE文件路径 /opt/dmdbms/core

(2)初始化库参数设置
参数名称 参数值
数据库名(db_name): DMDB
实例名(instance_name): DW
数据库端口: 5236
页大小: 32
簇大小: 32
大小写敏感: 敏感
数据库版本号: dm8_20230713_x86_kylin10_64
安装用户(是否root安装): 否
字符集: utf-8
VARCHAR 类型对象的长度是否以字符为单位: 是

二、、安装部署步骤

准备两台主机作为本次主备部署机器

(一)基础环境配置步骤(每台机器均需执行)

1、创建用户与用户组
创建dmdba用户,主组群为dinstall
创建主组群:groupadd dinstall
创建用户:useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
设置密码:passwd dmdba

2、创建目录
mkdir -p /opt/dmdbms/dmdbms
mkdir /opt/dmdbms/dmarch
mkdir /opt/dmdbms/dmsqllog
mkdir /opt/dmdbms/data
mkdir /opt/dmdbms/core

chmod -R 755 /opt/dmdbms/dmdbms /opt/dmdbms/dmarch /opt/dmdbms/dmsqllog /opt/dmdbms/data /opt/dmdbms /opt/dmdbms/core
chown -R dmdba:dinstall /opt/dmdbms/dmdbms /opt/dmdbms/dmarch /opt/dmdbms/dmsqllog /opt/dmdbms/data /opt/dmdbms /opt/dmdbms/core

3、添加资源限制参数
vi /etc/security/limits.conf添加上
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft nproc 65536
dmdba hard nproc 65536
dmdba soft stack 65536
dmdba hard stack 65536

备注:/etc/systemd/system.conf的DefaultLimitNOFILE参数修改为65535

4、添加dmdba环境变量
变更环境变量 vi /home/dmdba/.bash_profile 添加以下内容:
export DM_HOME=/opt/dmdbms/dmdbms
export PATH=$PATH:$DM_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin

5、关闭swap交换区(未分配SWAP空间)
swapoff -a
将/etc/fstab中的swap关闭掉,如内存少于128G不关闭

6、检查是否配置时钟同步--信息口如无得话,可跳过该步骤
chronyc sources -v
vi /etc/chrony.conf
server 10.0.0.1 iburst
driftfile /var/lib/chrony/drift
makestep 10 3

重启chronyd服务
systemctl restart chronyd.service

设置开机启动
systemctl enable chronyd.service

date -R 检查时间

7、ODBC驱动安装(如不需要同步,可忽略此步骤)
ODBC 的安装:
(1)解压
[root@KylinDCA03 opt]# tar -zxvf unixODBC-2.3.0.tar.gz
(2)源码安装三部曲(配置、编译、安装)
[root@KylinDCA03 opt]# cd unixODBC-2.3.0/
[root@KylinDCA03 unixODBC-2.3.0]# ./configure
[root@KylinDCA03 unixODBC-2.3.0]# make
[root@KylinDCA03 unixODBC-2.3.0]# make install

8、监控部署
上传nmon工具,设置每天0、6、12、18点开启采集,间隔5秒采集一次,一次采集4320次,日志文件保留5天。--监控使用,无需求跳过
0 0,6,12,18 * * * /home/dmdba/nmon -f -t -s 5 -c 4320 -m /opt/dmdbms/nmon_output
0 0 * * * find /opt/dmdbms/nmon_output -type f -mtime +5 -exec rm -f {} ;

9、关闭操作系统防火墙及selinux(如已关闭可忽略此步骤)
systemctl stop firewalld.service
systemctl disable firewalld.service

vi /etc/selinux/config
将SELINUX=enable改为SELINUX=disabled

然后执行sentence 0

10、检查磁盘调度算法,--如是和操作系统混合使用,可跳过
cat /sys/block/sd*/queue/scheduler
磁盘调度算法已配置,需要将以下命令
echo deadline > /sys/block/sd*/queue/scheduler
设置到/etc/rc.d/rc.local中

11、修改麒麟信号量
检查/etc/systemd/logind.conf文件RemoveIPC参数,设置为NO
设置后需重启服务
systemctl daemon-reload;systemctl restart systemd-logind

(二)数据库安装与初始化实例

上传对应的key文件与达梦数据库安装包至两台服务器上。
数据库安装参考DM8单机安装操作手册,此处暂略。
初始化实例(以下步骤每台机器都执行)
su - dmdba
cd /opt/dmdbms/dmdbms/bin

初始化实例根据最初规划进行
./dminit path=/opt/dmdbms/data PAGE_SIZE=32 DB_NAME=DMDB INSTANCE_NAME=DW PORT_NUM=5236 CHARSET=1 CASE_SENSITIVE=1

以前台方式启动数据库服务:./dmserver /opt/dmdbms/data/DMDB/dm.ini

若注册服务,以后台方式启动,注册服务步骤如下(root用户下执行):
cd /data/dm8/script/root
./dm_service_installer.sh -t dmserver -p DW -dm_ini /data/dmdbms/data/DMDB/dm.ini

systemctl enable DmServiceDW.service
systemctl start DmServiceDW.service

启动数据库后,disql登陆数据库disql SYSDBA/SYSDBA:5236(默认数据库端口号可不写),分别输入以下命令查看:
查看数据库版本:SELECT ID_CODE;
查看License:SELECT * FROM V$LICENSE;

(三)主库脱机备份并scp到备库

10.0.0.13--主库:
关闭数据库实例
cd /opt/dmdbms/dmdbms/bin

启动ap服务
./DmAPService start

全备
./dmrman
backup database '/opt/dmdbms/data/DMDB/dm.ini' full backupset '/opt/dmdbms/db_full_bak';
exit;

将备份集拷贝至备库
scp -r /opt/dmdbms/db_full_bak dmdba@..**.14: /opt/dmdbms/

(四)备库脱机还原

10.0.0.14 --备库:

关闭数据库实例
cd /opt/dmdbms/dmdbms/bin

启动ap服务
./DmAPService start

还原
./dmrman
check backupset '/opt/dmdbms/db_full_bak';
restore database '/opt/dmdbms/data/DMDB/dm.ini' from backupset '/opt/dmdbms/db_full_bak';
recover database '/opt/dmdbms/data/DMDB/dm.ini' from backupset '/opt/dmdbms/db_full_bak';
recover database '/opt/dmdbms/data/DMDB/dm.ini' update db_magic;

(五)配置实例的dm.ini文件

1、主库
vi /opt/dmdbms/data/DMDB/dm.ini

INSTANCE_NAME =DW01
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2

2、备库
vi /opt/dmdbms/data/DMDB/dm.ini

INSTANCE_NAME = DW02
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2

(六)配置归档配置文件dmarch.ini

1、主库
vi /opt/dmdbms/data/DMDB/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DW02
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST =/opt/dmdbms/dmarch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 1024

2、备库
vi /opt/dmdbms/data/DMDB/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DW01
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST =/opt/dmdbms/dmarch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 1024

(七)配置MAL系统配置文件dmmal.ini

主备库文件内容相同
vi /opt/dmdbms/data/DMDB/dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DBSERVER01
MAL_HOST = 10.0.0.13
MAL_PORT = 61141
MAL_INST_HOST = 10.0.0.13
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141
[MAL_INST2]
MAL_INST_NAME = DBSERVER02
MAL_HOST =10.0.0.14
MAL_PORT = 61142
MAL_INST_HOST = 10.0.0.14
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141

(八)配置守护进程配置文件dmwatcher.ini

主库备库文件内容相同
vi /opt/dmdbms/data/DMDB/dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = MANUAL
DW_ERROR_TIME = 120
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 120
INST_OGUID = 453331
INST_INI = /opt/dmdbms/data/DMDB/dm.ini
INST_AUTO_RESTART = 0
INST_STARTUP_CMD = /opt/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

(九)以mount的方式启动数据库实例

主备依次执行:
./dmserver /opt/dmdbms/data/DMDB/dm.ini mount
disql连接数据库,主备库都修改oguid

主库
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331);
alter database primary;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

备库:
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331);
alter database standby;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

(十)启动守护进程(主备依次执行)

启动守护进程有以下两种方式
方式一:命令行方式
./dmwatcher /opt/dmdbms/data/DMDB/dmwatcher.ini

方式二:服务名方式
root用户执行注册服务:
cd /opt/dmdbms/dmdbms/script/root
./dm_service_installer.sh -t dmwatcher -p Watcher -dmwatcher_ini /opt/dmdbms/data/DMDB/dmwatcher.ini
systemctl enable DmServiceWatcher.service
systemctl start DmServiceWatcher.service
或者切换到DM数据库安装bin目录下执行服务启停:./DmServiceWatcher start|stop|restart

(十一) 配置监视器

vi /opt/dmdbms/dmdbms/bin/dmmonitor.ini
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /opt/dmdbms/dmdbms/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60 s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32 MB
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453331 #组 GRP1 的唯一 OGUID 值
#以下配置为监视器到组 GRP_RW 的守护进程的连接信息,以“IP:PORT”的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 10.0.0.13:52141
MON_DW_IP = 10.0.0.14:52141

三、验证

1、查看数据集群状态:

$ su - dmdba
$ cd /opt/dmdbms/dmdbms/bin

启动监视器(有两种方式):
方式一:命令行方式
$ ./dmmonitor /opt/dmdbms/dmdbms/bin/dmmonitor.ini

方式二:服务名方式
root用户执行注册服务:
cd /opt/dmdbms/dmdbms/script/root
./dm_service_installer.sh -t dmmonitor -p Monitor -dmmonitor_ini /opt/dmdbms/data/DMDB/dmmonitor.ini
systemctl enable DmServiceMonitor.service
systemctl start DmServiceMonitor.service
或者切换到DM数据库安装bin目录下执行服务启停:./DmServiceMonitor start|stop|restart

show
守护进程状态 WSTATUS 为 OPEN,实例状态 ISTATUS 为 OPEN,归档类型 RTYPE 为 REALTIME,归档状态 RSTAT 为VALID。

2、主备切换

打开监视器,切换主备
switchover [group_name[.]] db_name
show
查看是否主库切换为备库,备库切换为主库,切换两次

四、其他配置

1、设置core路径

两台都执行
echo "kernel.core_pattern=/opt/dmdbms/core/core-%e-%p-%t" >> /etc/sysctl.conf
sysctl -p #执行后上述系统参数配置立刻生效
kill -s 11 $$ 验证core路径是否配置成功

2、开启SQL日志

两台都执行
cd /opt/dmdbms/dmdata/DMDB/
vi dm.ini
SVR_LOG=1
vi sqllog.ini
BUF_TOTAL_SIZE = 10240 #SQLs Log Buffer Total Size(K)(1024~1024000)
BUF_SIZE = 1024 #SQLs Log Buffer Size(K)(50~409600)
BUF_KEEP_CNT = 6 #SQLs Log buffer keeped count(1~100)
[SLOG_ALL]
FILE_PATH = /opt/dmdbms/dmsqllog
PART_STOR = 0
SWITCH_MODE = 2
SWITCH_LIMIT = 512
ASYNC_FLUSH = 1
FILE_NUM = 80
ITEMS = 0
SQL_TRACE_MASK = 2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:22:24:25:26:27:28:29
MIN_EXEC_TIME = 100
USER_MODE = 2
USERS =

3、调整redo大小(按实际需求决定是否需调整)

两节点执行:
alter database resize logfile 'DMDB01.log' to 2048;
alter database resize logfile 'DMDB02.log' to 2048;

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服