达梦数据库dsc集群+实时主备
本文讨论了在达梦dsc集群搭建好的情况下部署实时主备的相关操作,涵盖了环境配置、软件安装、数据库初始化、备份还原及多种文件配置等内容。关键要点包括:
1.环境准备:
操作环境为VMware Workstation 16 Pro,各节点操作系统为kylin-v10,资源配置均为4核4G、磁盘20g,需关闭防火墙,创建用户组和用户,调整系统资源限制。
2.软件安装与初始化:
下载达梦8镜像并解压挂载,切换到dmdba用户安装,若/tmp空间不足需指定临时目录,安装完成后初始化数据库并配置服务。
3.数据备份还原:
在DMDSC0节点备份dsc集群数据,通过scp传输到备库还原。
4.配置文件修改:
修改dm.ini、dmmal.ini、dmarch.ini、dmwatcher.ini等文件,各节点按要求设置参数。
5.实例启动与模式设置:
将所有实例修改为mount启动方式后启动,设置节点的oguid和模式,主库设为primary,备库设为standby。
6.服务注册与启动:
注册数据守护服务并启动守护进程,配置并启动监视器查看主备状态。
7.启动与关闭顺序:
明确启动顺序为从控制节点css服务到监视器等;关闭顺序则相反,从监视器到控制节点css服务 。
一、dsc集群搭建参考:《DSC集群部署-udev方式绑定磁盘》
在DSC集群搭建好的情况下部署实时主备
1、集群服务启动示例:
1.1、dmdsc0主节点
1.2、dmdsc1主节点
1.3、登录监视器192.168.52.50
show 查看DSC集群状态
2、环境资源分配
操作环境:VMware Workstation Pro 17 | |||||
dmdsc集群 | 机器ip | 主机名 | 操作系统 | 资源配置 | 实例名 |
dmdsc0 (控制节点) | 192.168.52.50 | dmdsc0 | kylin-v10 | 4核4G,磁盘20g | DMDSC0 |
dmdsc1 | 192.168.52.51 | dmdsc1 | kylin-v10 | 4核4G,磁盘20g | DMDSC1 |
监视器 | 192.168.52.50 | dmcssm | kylin-v10 | 4核4G,磁盘20g | |
备库 | 192.168.52.53 | node1 | kylin-v10 | 4核4G,磁盘20g | NODE1 |
dmdsc集群 | 机器ip | 实例名 | 达梦软件安装目录 | 数据存储目录 |
dmdsc0(控制节点) | 192.168.52.50 | DMDSC0 | /dm8/dminstall | /dm8/data |
dmdsc1 | 192.168.52.51 | DMDSC1 | /dm8/dminstall | /dm8/data |
监视器 | 192.168.52.32 | /dm8/dminstall | /dm8/data | |
备库 | 192.168.52.33 | NODE1 | /dm8/dminstall | /dm8/data |
二、备库安装达梦数据库并初始化实例
1、关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
2、创建用户组、用户、安装目录:
创建用户组和用户
groupadd dinstall
useradd -g dinstall dmdba
echo "Dameng123" |passwd --stdin dmdba
dminstall是达梦数据库软件安装的位置,dmdata是达梦数据库实例存放位置,dmarch是达梦数据库归档日志存放位置,dmbak是达梦数据库备份文件存放位置
mkdir -p /dm8/{dminstall,dmdata,dmarch,dmbak}
chown -R dmdba:dinstall /dm8
chmod -R 755 /dm8
3、调整系统资源限制:
在/etc/security/limits.conf文件里面追加下面的内容
vim /etc/security/limits.conf
##内容如下:
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft nproc 65536
dmdba hard nproc 65536
4、下载镜像
达梦数据库镜像,官方下载:
产品下载 | 达梦在线服务平台
5、挂载镜像:
mount -o loop dm8_20230925_x86_rh6_64.iso /mnt/
6、切换dmdba用户,安装数据库
su - dmdba
/mnt/DMInstall.bin -i
root用户下执行命令
/dm8/dminstall/script/root/root_installer.sh
数据库创建完毕!!!
7、初始化数据库与配置服务
7.1、初始化数据库(在dmdba用户下执行)
具体的使用参数参考官方文档:查看 dminit 参数
su - dmdba
/dm8/dminstall/bin/dminit path=/dm8/dmdata db_name=DSC instance_name=NODE1 port_num=5236
7.2、配置服务(在dmdba用户下执行)
su - dmdba
cd /dm8/dminstall/bin
cp service_template/DmService ./DmServiceNODE1
# 修改DmServiceNODE1文件
vim DmServiceNODE1#修改内容
INI_PATH=%INI_PATH% 改为 INI_PATH=/dm8/dmdata/DSC/dm.ini# 启动数据库实例,看看是否正常
./DmServiceNODE1 start# 如果正常,停止实例
./DmServiceNODE1 stop
三、登录到css监视器(192.168.52.50节点),
1、停止dsc集群组
su - dmdba
cd /dm8/dminstall/bin
./dmcssm /dm8/dmdata/dmcssm.ini
# 执行命令停止dsc集群组,停止所有实例
ep stop GRP_DSC
注意:这里只需关掉实例,其他的两个服务无需关闭
2、备份dsc集群数据,到备库还原
2.1、DMDSC0(192.168.52.50)节点备份数据:
su - dmdba
cd /dm8/dminstall/bin
# dsc集群备份数据要指定dmdcr.ini配置文件
./dmrman dcr_ini=/dm8/dmdata/dmdcr.ini
注意:DmCSSServiceDMCSS0、DmASMSvrServiceDMASM0 这两个服务不能关闭,不然会报错
错误启动:
正常启动:
对数据库全备,完成后退出
backup database '/dm8/dmdata/dsc0/dm.ini' full backupset '/dm8/dmbak/dsc_full';
check backupset '/dm8/dmbak/dsc_full';
exit
把备份的数据库文件scp给备库
scp -r /dm8/dmbak/dsc_full dmdba@192.168.52.53:/dm8/dmbak/dsc_full
2.2、备库node1(192.168.52.53)还原数据库:
su - dmdba
cd /dm8/dminstall/bin
./dmrman
check backupset '/dm8/dmbak/dsc_full';
restore database '/dm8/dmdata/DSC/dm.ini' from backupset '/dm8/dmbak/dsc_full';
recover database '/dm8/dmdata/DSC/dm.ini' from backupset '/dm8/dmbak/dsc_full';
recover database '/dm8/dmdata/DSC/dm.ini' update db_magic;
exit
# 还原成功并退出
四、修改dm.ini配置文件(dmdba用户操作)
1、DMDSC0节点:
su - dmdba
vim /dm8/dmdata/dsc0/dm.ini# 修改内容如下
INSTANCE_NAME = DMDSC0 #不用改动
PORT_NUM = 5236 #数据库实例监听端口
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
验证参数:
cat /dm8/dmdata/dsc0/dm.ini|grep -E "INSTANCE_NAME|PORT_NUM|ALTER_MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI"|grep -v _PORT_NUM
2、DMDSC1节点:
su - dmdba
vim /dm8/dmdata/dsc1/dm.ini
# 修改内容如下
INSTANCE_NAME = DMDSC1 #不用改动
PORT_NUM = 5236 #数据库实例监听端口
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
验证参数:
cat /dm8/dmdata/dsc1/dm.ini|grep -E "INSTANCE_NAME|PORT_NUM|ALTER_MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI"|grep -v _PORT_NUM
3、备库192.168.52.53:
su - dmdba
vim /dm8/dmdata/DSC/dm.ini# 修改内容如下
INSTANCE_NAME = NODE1 #不用改动
PORT_NUM = 5236 #数据库实例监听端口
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
验证参数:
cat /dm8/dmdata/DSC/dm.ini|grep -E "INSTANCE_NAME|PORT_NUM|ALTER_MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI"|grep -v _PORT_NUM
五、配置dmmal.ini文件(dmdba用户操作)
所有节点的dmmal配置都要一致,DMDSC0、DMDSC1、NODE1; 之前如果存在配置全部注释掉
1、配置dmmal.ini文件
vim /dm8/dmdata/dsc0/dmmal.ini
##内容如下
MAL_CHECK_INTERVAL=87
MAL_CONN_FAIL_INTERVAL=180
MAL_SYS_BUF_SIZE=600
MAL_BUF_SIZE=300
MAL_VPOOL_SIZE=500
MAL_COMPRESS_LEVEL=0
[MAL_INST0]
MAL_INST_NAME = DMDSC0
MAL_HOST = 192.168.52.50
MAL_PORT = 11246
MAL_INST_HOST = 192.168.52.50 #节点1内网ip
MAL_INST_PORT = 5236 #数据库端口
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 5276
[MAL_INST1]
MAL_INST_NAME = DMDSC1
MAL_HOST = 192.168.52.51
MAL_PORT = 11246
MAL_INST_HOST = 192.168.52.51 #节点2内网ip
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 5276
[MAL_INST2]
MAL_INST_NAME = DMSERVER
MAL_HOST = 192.168.52.53
MAL_PORT = 11246
MAL_INST_HOST = 192.168.52.53
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 5276
2、远程传输文件到DMDSC1
scp dmmal.ini 192.168.52.51:/dm8/dmdata/dsc1/
3、远程传输文件到node1
scp dmmal.ini 192.168.52.53:/dm8/dmdata/DSC/
六、配置dmarch.ini(dmdba用户操作)
1、DMDSC0节点:
su - dmdba
vim /dm8/dmdata/dsc0/dmarch.ini
# 内容如下:
ARCH_WAIT_APPLY = 0
ARCH_LOCAL_SHARE = 1
ARCH_LOCAL_SHARE_CHECK=0[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/ARCH/DMDSC0
ARCH_FILE_SIZE = 256
ARCH_SPACE_LIMIT = 1024[ARCHIVE_LOCAL2]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/dmarch
ARCH_FILE_SIZE = 256
ARCH_SPACE_LIMIT = 1024[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DMDSC1
ARCH_INCOMING_PATH = +DMDATA/ARCH/DMDSC1
ARCH_FILE_SIZE = 256
ARCH_SPACE_LIMIT = 1024[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = NODE1 #备库实例名
2、DMDSC1节点:
su - dmdba
vim /dm8/dmdata/dsc1/dmarch.ini
# 内容如下:
ARCH_WAIT_APPLY = 0
ARCH_LOCAL_SHARE = 1
ARCH_LOCAL_SHARE_CHECK=0[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/ARCH/DMDSC1
ARCH_FILE_SIZE = 256
ARCH_SPACE_LIMIT = 1024[ARCHIVE_LOCAL2]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/dmarch
ARCH_FILE_SIZE = 256
ARCH_SPACE_LIMIT = 1024[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DMDSC0
ARCH_INCOMING_PATH = +DMDATA/ARCH/DMDSC0
ARCH_FILE_SIZE = 256
ARCH_SPACE_LIMIT = 1024[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = NODE1 #备库实例名
3、备库192.168.52.53:
su - dmdba
vim /dm8/dmdata/DSC/dmarch.ini
# 内容如下:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/dmarch
ARCH_FILE_SIZE = 256
ARCH_SPACE_LIMIT = 1024[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = DMDSC0/DMDSC1 # 主库的实例名
七、配置dmwatcher.ini
1、DMDSC0节点配置dmwatcher.ini 守护线程:
su - dmdba
vim /dm8/dmdata/dsc0/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 = /dm8/dmdata/dsc0/dm.ini
DCR_INI=/dm8/dmdata/dmdcr.ini
INST_STARTUP_CMD = /dm8/dminstall/bin/DmServiceDMDSC0 start
INST_AUTO_RESTART = 0
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
2、DMDSC1节点配置守护线程文件:
su - dmdba
vim /dm8/dmdata/dsc1/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 = /dm8/dmdata/dsc1/dm.ini
DCR_INI=/dm8/dmdata/dmdcr.ini
INST_STARTUP_CMD = /dm8/dminstall/bin/DmServiceDMDSC1 start
INST_AUTO_RESTART = 0
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
3、备库node1节点(192.168.52.53)配置守护线程:
su -dmdba
vim /dm8/dmdata/DSC/dmwatcher.ini
# 内容如下:
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL#手动切换模式
DW_ERROR_TIME = 120 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 120 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一 OGUID 值
INST_INI = /dm8/dmdata/DSC/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 0 #设置实例不自动拉起
INST_STARTUP_CMD = /dm8/dminstall/bin/DmServiceNODE1 start #后台方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
八、把所有实例修改成mount启动方式(dmdba用户操作)
1、DMDSC0节点(192.168.52.50):
su - dmdba
vim /dm8/dminstall/bin/DmServiceDMDSC0# 修改内容:
START_MODE=open 修改成 START_MODE=mount
2、DMDSC1节点(192.168.52.51):
su - dmdba
vim /dm8/dminstall/bin/DmServiceDMDSC1# 修改内容:
START_MODE=open 修改成 START_MODE=mount
3、备库node1(192.168.52.53):
su - dmdba
vim /dm8/dminstall/bin/DmServiceNODE1# 修改内容:
START_MODE=open 修改成 START_MODE=mount
九、启动dsc集群实例和备库(dmdba用户操作)
上一步修改过服务的启动方式,这里直接执行服务,启动就mount状态。
1、DMDSC0节点(192.168.52.50):
su - dmdba
/dm8/dminstall/bin/DmServiceDMDSC0 start
2、DMDSC1节点(192.168.52.51):
su - dmdba
/dm8/dminstall/bin/DmServiceDMDSC1 start
3、备库node1(192.168.52.53):
su - dmdba
/dm8/dminstall/bin/DmServiceNODE1 start
十、修改节点的oguid和模式(dmdba用户操作)
1、DMDSC0节点(192.168.52.50):
su - dmdba
cd /dm8/dminstall/bin
./disqlSP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331);
alter database primary;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
exit
2、DMDSC1节点(192.168.52.51):
su - dmdba
cd /dm8/dminstall/bin
./disqlSP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331);
alter database primary;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
exit
3、备库node1(192.168.52.53):
su - dmdba
cd /dm8/dminstall/bin
./disqlSP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331);
alter database standby;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
exit
十一、注册数据守护服务并启动守护进程(dmdba用户操作)
1、DMDSC0节点(192.168.52.50):
su - dmdba
cd /dm8/dminstall/bin
cp service_template/DmWatcherService ./DmWatcherServiceDMDSC0
# 修改DmWatcherServiceDMDSC0文件
vim DmWatcherServiceDMDSC0INI_PATH=%INI_PATH% 修改为 INI_PATH=/dm8/dmdata/dsc0/dmwatcher.ini# 启动DMDSC0节点的守护进程
./DmWatcherServiceDMDSC0 start
2、DMDSC1节点(192.168.52.51):
su - dmdba
cd /dm8/dminstall/bin
cp service_template/DmWatcherService ./DmWatcherServiceDMDSC1
# 修改DmWatcherServiceDMDSC1文件
vim DmWatcherServiceDMDSC1INI_PATH=%INI_PATH% 修改为 INI_PATH=/dm8/dmdata/dsc1/dmwatcher.ini# 启动DMDSC1节点的守护进程
./DmWatcherServiceDMDSC1 start
3、备库node1(192.168.52.53):
su - dmdba
cd /dm8/dminstall/bin
cp service_template/DmWatcherService ./DmWatcherServiceNODE1
# 修改DmWatcherServiceNODE1文件
vim DmWatcherServiceNODE1INI_PATH=%INI_PATH% 修改为 INI_PATH=/dm8/dmdata/DSC/dmwatcher.ini# 启动备库192.168.52.53节点的守护进程
./DmWatcherServiceNODE1 start
11.4、启动守护
十二、配置监视器并启动监视器查看主备状态(在192.168.58.42机器上操作)
1、添加监视器配置文件dmmonitor.ini
su - dmdba
vim /dm8/dmdata/dmmonitor.ini
# 内容如下:
MON_DW_CONFIRM = 0
MON_LOG_PATH = /dm8/dmdata/dmmonitor_log #根据实际环境修改路径
MON_LOG_INTERVAL = 0
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.52.50:52141/192.168.52.51:52141
MON_DW_IP = 192.168.52.53:52141
[dmdba@~]$ vi /opt/dmdbms/bin/dmmonitor.iniMON_DW_CONFIRM = 1 #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH = ../log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 512 #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT = 2048 #日志上限,单位 MB[GRP1]
MON_INST_OGUID = 45331 #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 192.168.1.1:5436 #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP = 192.168.1.2:5436
2、启动监视器
cd /dm8/dminstall/bin
./dmmonitor /dm8/dmdata/dmmonitor.ini
3、查看主备集群状态
show
4、切换主备,测试是否正常
4.1、查看可以切换成主库的备机
choose switchover
4.2、登录
login
4.2、切换主备,GRP1组名,STANDBY实例名
switchover GRP1.NODE1
十三、启动顺序
1、启动dsc集群控制节点(DMDSC0)的css服务
2、启动dsc集群其它普通节点(DMDSC1)的css服务
3、启动dmcssm监视器(192.168.52.50机器),监视dsc集群
4、启动dsc集群控制节点(DMDSC0)的asm服务
5、启动dsc集群其它普通节点(DMDSC1)的asm服务
6、启动主库(dsc集群的所有节点)的实例
7、启动备库(192.168.52.53机器)的实例
8、启动主库(dsc集群的所有节点)的数据守护进程
9、启动备库(192.168.52.53机器)的数据守护进程
10、启动dmmonitor监视器(192.168.52.50),监视主备集群
十四、关闭顺序
1、关闭dmmonitor监视器(192.168.52.50)
2、关闭备库(192.168.52.53机器)的数据守护进程
3、关闭主库(dsc集群的所有节点)的数据守护进程
4、关闭主库(dsc集群的所有节点)的实例
5、关闭备库(192.168.52.53机器)的实例
6、关闭dsc集群其它普通节点(DMDSC1)的asm服务
7、关闭dsc集群控制节点(DMDSC0)的asm服务
8、关闭dmcssm监视器(192.168.52.50机器)
9、关闭dsc集群其它普通节点(DMDSC1)的css服务
10、关闭dsc集群控制节点(DMDSC0)的css服务
达梦数据库社区地址:达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台