达梦数据库---实时主备配置
一、环境准备
实例 IP | 192.168.1.40 | 192.168.1.41 |
---|---|---|
实例名 | GRP1_RT_01 | GRP1_RT_02 |
实例端口 | 5236 | 5236 |
MAL 端口 | 5336 | 5336 |
MAL 守护进程端口 | 5436 | 5436 |
守护进程端口 | 5536 | 5536 |
OGUID | 45331 | 45331 |
守护组 | GRP1 | GRP1 |
安装目录 | /home/dmdba/dmdbms | /home/dmdba/dmdbms |
实例目录 | /dmdata/data/ | /dmdata/data/ |
归档上限 | 51200 | 51200 |
二、安装数据库
1、配置yum源
我这里是新装的虚拟机,从配置yum源开始
## 配置阿里云的yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
# 执行缓存并安装一些常用工具
yum makecache
yum install -y vim net-tools yum-utils unzip bash-completion
2、下载达梦数据库安装包
下载连接:产品下载-达梦数据
根据所需系统要求下载安装包,我使用的是centos7的系统
3、安装数据库
(1)解压并创建用户
# 解压安装包
unzip dm8_20250506_x86_rh7_64.zip
# 创建用户和组
groupadd -g 12349 dinstall
useradd -u 12345 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
passwd dmdba
(2)创建数据目录并进行挂载
# 挂载iso文件
mount -o loop dm8_20250506_x86_rh7_64.iso /mnt
# 创建数据库的数据目录、归档目录以及备份目录
mkdir -p /dmdata/{data,arch,dmbak}
# 修改目录所属权限
chown dmdba:dinstall -R /dmdata
chmod -R 755 /dmdata
(3)进行安装
# 切换到创建的用户dmdba进行安装
su - dmdba
# 进入iso挂载目录执行DMInstall.bin进行安装cd /mnt./DMInstall.bin -i# 选择语言以及时区,key文件输入no
# 我选择的是典型安装,输入相应的安装目录,我安装目录为/home/dmdba/dmdbms
(4)创建systemd服务
# 切换到root用户执行安装后的命令
[root@localhost dameng]# /home/dmdba/dmdbms/script/root/root_installer.sh
移动 /home/dmdba/dmdbms/bin/dm_svc.conf 到/etc目录
创建DmAPService服务
Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.
创建服务(DmAPService)完成
启动DmAPService服务
[root@localhost dameng]# systemctl status DmAPService.service
# 修改dmdba的.bash_profile文件
[root@localhost dameng]# cd /home/dmdba/
[root@localhost dmdba]# vim .bash_profile
[root@localhost dmdba]# cat .bash_profile |tail -n 3
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/dmdba/dmdbms/bin"
export DM_HOME="/home/dmdba/dmdbms"
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool # 添加此行内容
[root@localhost dmdba]# source .bash_profile
此时,数据库就已经安装完成了,接下来还要进行初始化实例,进行主从配置,也就是数据保护集群;
四、数据保护集群配置
1、主节点--primary(以下操作非特殊标注全是dmdba用户执行)
(1)初始化实例
cd dmdbms/bin
./dminit path=/dmdata/data db_name=DAMENG instance_name=GRP1_RT_01 port_num=5236 CASE_SENSITIVE=0 CHARSET=1 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 SYSDBA_PWD=Dameng123 SYSAUDITOR_PWD=Dameng123
(2)修改数据库配置
# 终端运行服务,再打开一个新的终端执行sql语句
./dmserver /dmdata/data/DAMENG/dm.ini
./disql SYSDBA/Dameng123@192.168.2.40:5236 # 此条命令在新打开的终端执行ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/dmdata/arch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=51200';
ALTER DATABASE OPEN;BACKUP DATABASE BACKUPSET '/dmdata/dmbak/BACKUP_FILE';SP_SET_PARA_VALUE (2,'PORT_NUM',5236);
SP_SET_PARA_VALUE (2,'DW_INACTIVE_INTERVAL',60);
SP_SET_PARA_VALUE (2,'ALTER_MODE_STATUS',0);
SP_SET_PARA_VALUE (2,'ENABLE_OFFLINE_TS',2);
SP_SET_PARA_VALUE (2,'MAL_INI',1);
SP_SET_PARA_VALUE (2,'RLOG_SEND_APPLY_MON',64);
exit
# sql语句执行完之后,退出并关闭前面运行的dmserver服务
(3)编写dmarch.ini文件
vim /dmdata/data/DAMENG/dmarch.ini ARCH_WAIT_APPLY = 0
[ARCHIVE_LOCAL1]ARCH_TYPE = LOCAL ARCH_DEST = /dmdata/arch ARCH_FILE_SIZE = 1024 ARCH_SPACE_LIMIT = 51200 ARCH_FLUSH_BUF_SIZE = 2 ARCH_HANG_FLAG = 1
[ARCHIVE_REALTIME1]ARCH_TYPE = REALTIMEARCH_DEST = GRP1_RT_02
(4)编写dmmal.ini文件
vim /dmdata/data/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL = 10
MAL_CONN_FAIL_INTERVAL = 10
MAL_TEMP_PATH = /dmdata/malpath/
MAL_BUF_SIZE = 512
MAL_SYS_BUF_SIZE = 2048
MAL_COMPRESS_LEVEL = 0[MAL_INST1]
MAL_INST_NAME = GRP1_RT_01
MAL_HOST = 192.168.1.40
MAL_PORT = 5336
MAL_INST_HOST = 192.168.1.40
MAL_INST_PORT = 5236
MAL_DW_PORT = 5436
MAL_INST_DW_PORT = 5536[MAL_INST2]
MAL_INST_NAME = GRP1_RT_02
MAL_HOST = 192.168.1.42
MAL_PORT = 5336
MAL_INST_HOST = 192.168.1.42
MAL_INST_PORT = 5236
MAL_DW_PORT = 5436
MAL_INST_DW_PORT = 5536
(5)编写dmwatcher.ini文件
vim /dmdata/data/DAMENG/dmwatcher.ini[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 20
INST_ERROR_TIME = 20
INST_RECOVER_TIME = 60
INST_OGUID = 45331
INST_INI = /dmdata/data/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
(6)将备份数据同步给备数据库
scp -r /dmdata/dmbak/BACKUP_FILE dmdba@192.168.1.42:/dmdata/dmbak
(7)运行dmserver和dmwatcher
# root用户执行
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p GRP1_RT_01 -dm_ini /dmdata/data/DAMENG/dm.ini -m mount
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini
2、从库配置
# 进行初始化实例
./dminit path=/dmdata/data db_name=DAMENG instance_name=GRP1_RT_02 port_num=5236 CASE_SENSITIVE=0 CHARSET=1 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 SYSDBA_PWD=Dameng123 SYSAUDITOR_PWD=Dameng123
# 恢复备份数据
./dmrman CTLSTMT="RESTORE DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmbak/BACKUP_FILE'"
./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmbak/BACKUP_FILE'"
./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' UPDATE DB_MAGIC"# 修改配置文件
vim /dmdata/data/DAMENG/dmarch.iniARCH_WAIT_APPLY = 0[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/arch/
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 51200 [ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_RT_01# 修改配置文件
vim /dmdata/data/DAMENG/dm.ini ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1## 与主库配置相同
vim /dmdata/data/DAMENG/dmmal.ini
vim /dmdata/data/DAMENG/dmwatcher.ini# root用户执行
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p GRP1_RT_02 -dm_ini /dmdata/data/DAMENG/dm.ini -m mount
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini
3、配置监视器
监视器可以独立在第三台机器上安装,也可以在上述两台机器上安装,我是在从库所在的机器(192.168.1.42)上部署的;
vim /home/dmdba/dmdbms/bin/dmmonitor.iniMON_DW_CONFIRM = 1
MON_LOG_PATH = ../log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 512
MON_LOG_SPACE_LIMIT = 2048[GRP1]
MON_INST_OGUID = 45331
MON_DW_IP = 192.168.1.40:5436
MON_DW_IP = 192.168.1.42:5436
# root用户执行
/home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /home/dmdba/dmdbms/bin/dmmonitor.ini
4、启动集群服务
到这里,集群搭建就基本完成了,接下来是启动服务就可以了;
## 主库机器启动服务,并设置模式为primary
/home/dmdba/dmdbms/bin/DmServiceGRP1_RT_01 start
/home/dmdba/dmdbms/bin/disql SYSDBA/Dameng123@192.168.2.40:5236
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(45331);
ALTER DATABASE PRIMARY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);## 备库机器启动服务,并设置模式为standby
/home/dmdba/dmdbms/bin/DmServiceGRP1_RT_02 start
/home/dmdba/dmdbms/bin/disql SYSDBA/Dameng123@192.168.2.202:5236
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(45331);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);## 主备机器启动watcher服务
/home/dmdba/dmdbms/bin/DmWatcherServiceWatcher start##后台启动monitor
/home/dmdba/dmdbms/bin/DmMonitorServiceMonitor start
##前台启动monitor,会在终端输出信息
/home/dmdba/dmdbms/bin/dmmonitor /home/dmdba/dmdbms/bin/dmmonitor.ini
5、关闭集群服务
##停止,先停止watcher服务再停止service服务
##A/B机器
/home/dmdba/dmdbms/bin/DmWatcherServiceWatcher stop
##A 机器
/home/dmdba/dmdbms/bin/DmServiceGRP1_RT_01 stop
##B机器
/home/dmdba/dmdbms/bin/DmServiceGRP1_RT_02 stop
接下来就可以进行数据写入进行验证集群之间数据是否同步了;