DM8主备集群是比较常见的集群模式,现在进行主备集群的学习
- 安装前规划
- 路径规划
注:测试环境,创建对应目录进行模拟,生产环境必须单独挂载磁盘或者分配磁盘阵列
mkdir /dmrpl
mkdir /dmdata
mkdir /dmarch
mkdir /dmbak
参数 | 说明 |
/dmrpl | 数据库安装路径 |
/dmdata | 数据文件存放路径 |
/dmarch | 归档日志存放路径 |
/dmbak | 备份文件存放路径 |
- 集群规划
服务器名称 | IP地址 | 用途 |
db2 | 192.168.1.202/192.168.56.102 | 监视器服务器 |
db3 | 192.168.1.203/192.168.56.103 | 主库服务器 |
db4 | 192.168.1.204/192.168.56.104 | 备库服务器 |
- 端口规划
主机名称 | 端口 | 用途 |
db3 | 5236 | 数据库实例端口 |
db3 | 61141 | MAL系统监听TCP端口 |
db3 | 52141 | 本地守护进程监听TCP端口 |
db3 | 33141 | 实例监听守护进程TCP端口 |
db4 | 5236 | 数据库实例端口 |
db4 | 61141 | MAL系统监听TCP端口 |
db4 | 52141 | 本地守护进程监听TCP端口 |
db4 | 33141 | 实例监听守护进程TCP端口 |
- 实例规划
参数 | 参数值 | 说明 |
库名 | DMRPL | 生产环境根据实际用途进行命名 |
实例名 | DMRPL | 可以跟库名不同 |
端口号 | 5236 | 单机多实例必须不同,多服务器可以相同 |
页大小 | 16 | |
大小写敏感 | 是 |
- 日志规划
参数 | 参数值 | 说明 |
在线日志文件大小 | 1G | |
在线日志文件数量 | 4 | |
归档日志文件大小 | 512M | |
归档日志文件可使用空间 | 10240M | 大约10G,可存放20个归档日志,生产环境根据实际存储大小进行调整 |
- 用户规划
参数 | 说明 |
SYSDBA | 超级管理员 |
DMDBA | 数据库管理员,供日常使用 |
USR_业务_PROD | 业务用户,命名方式以USR开头,中间为实际业务,后缀用来区分数据库环境,如测试环境为TEST,生产环境为PROD。生产环境业务用户权限要注意 |
- 安装前环境检查
操作系统检查:more /etc/*release
uname -a
CPU检查:lscpu
内存检查:more /proc/meminfo或free -m
存储空间检查:主要针对安装路径规划中的磁盘进行确认df -h
- 安装
- 创建用户和组,并修改用户密码
groupadd dinstall
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
passwd dmdba
- 用户资源限制调整
修改/etc/security/limits.conf添加
vim /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
设置用户环境变量
切换到dmdba用户,修改.bash_profile
export DM_HOME=/dm8
export PATH=$PATH:$DM_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin
添加后,使环境变量生效source .bash_profile
- 防火墙设置
关闭防火墙,生产环境建议打开防火墙,开启5236/61141/52141/33141端口
- 下载数据库软件
根据实际操作系统下载对应版本
wget https://package.dameng.com/eco/adapter/DM8/202203/dm8_20220304_x86_rh6_64_ent.zip
- 解压缩
unzip dm8_20220304_x86_rh6_64_ent.zip
mount -oloop dm8_20220304_x86_rh6_64_ent_8.1.2.114.iso /mnt/
- 切换用户,执行安装
./DMInstall.bin -i
切换到root用户执行脚本
sh /dm8/script/root/root_installer.sh
- 初始化实例
切换到dmdba用户
./dminit path=/dmdata db_name=dmrpl page_size=16
- 切换到root用户
执行命令,注册服务
./dm_service_installer.sh -t dmserver -p DMRPL -dm_ini /dmdata/dmrpl/dm.ini
- 主库脱机备份
确认主库已经启动DMAP服务
- 使用rman进行备份
注意:使用rman备份时,数据库需要处于关闭状态
关闭数据库 systemctl stop DmServiceDMRPL
backup database '/dmdata/dmrpl/dm.ini' backupset '/dmbak/bakfull';
'/dmdata/dmrpl/dm.ini'为数据文件路径
'/dmbak/bakfull'为备份存放路径
- 拷贝主库备份到备库进行还原
备库同样要处于关闭状态
systemctl stop DmServiceDMRPL
先执行restore
restore database '/dmdata/dmrpl/dm.ini' from backupset '/dmbak/bakfull';
执行recover
recover database '/dmdata/dmrpl/dm.ini' from backupset '/dmbak/bakfull';
执行 recover update db_magic
recover database '/dmdata/dmrpl/dm.ini' update db_magic;
- 修改dm.ini参数文件
主库修改
INSTANCE_NAME = dmrpl1
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
备库修改
INSTANCE_NAME = dmrpl2
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
- 配置归档dmarch.ini
主库配置文件
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = dmrpl2 #实时归档目标实例名(主库侧填写备库实例名)
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmarch/ #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 MB,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 10240 #单位 MB,0 表示无限制,范围 1024~4294967294 MB
备库配置文件
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = dmrpl1 #实时归档目标实例名(备库侧填写主库实例名)
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmarch/ #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 MB,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 10240 #单位 MB,0 表示无限制,范围 1024~4294967294 MB
- 配置通信参数文件
主库和备库的参数文件必须相同
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = dmrpl1 #与 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.56.103 #MAL 系统监听 TCP 内部网络 IP
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.1.203 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #与 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #实例对应的守护进程监听 TCP 端口
MAL_INST_DW_PORT = 33141
[MAL_INST2]
MAL_INST_NAME = dmrpl2 #与 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.56.104 # MAL 系统监听 TCP 内部网络 IP
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.1.204 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #与 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #实例对应的守护进程监听 TCP 端口
MAL_INST_DW_PORT = 33141
- 配置守护进程dmwatcher.ini
[GRP_RW]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一 OGUID 值
INST_INI = /dmdata/dmrpl/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dmrpl/bin/dmserver #命令行方式启动
- 使用dmdba用户启动数据库到mount状态(主备库相同)
测试机器,内存不够大,需要修改dm.ini文件中的
启动到mount状态
新窗口登陆到数据库
./disql SYSDBA/SYSDBA
主备库都需要修改oguid
sp_set_oguid(453331);
主库修改为primary
alter database primary;
备库修改为standby
alter database standby;
- 启动守护进程,主备库同样操作
切换到dmdba用户
./dmwatcher /dmdata/dmrpl/dmwatcher.ini
启动守护进程后,数据库会处于open状态
- 配置确认监视器,在db2上创建
创建dmmonitor.ini文件
####确认监视器 dmmonitor.ini
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /dmmonitor #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60 s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32 MB
MON_LOG_SPACE_LIMIT = 4096 #不限定日志文件总占用空间
[GRP_RW]
MON_INST_OGUID = 453331 #组 GRP_RW 的唯一 OGUID 值
#以下配置为监视器到组 GRP_RW 的守护进程的连接信息,以“IP:PORT”的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 192.168.56.103:52141
MON_DW_IP = 192.168.56.104:52141
启动监视器
监视器文件中的允许使用的磁盘空间只能在0或者256——4096之间
使用show查看主备库状态
- 注册守护进程和确认监视器服务
主备库都执行
./dm_service_installer.sh -t dmwatcher -p dmrpl -watcher_ini /dmdata/dmrpl/dmwatcher.ini
注册数据库实例服务
注册确认监视器
./dm_service_installer.sh -t dmmonitor -p confirm -monitor_ini /dmdata/DAMENG/dmmonitor.ini
- 启动数据库实例
systemctl start DmServicedmrpl.service
启动守护进程
systemctl start DmWatcherServicedmrpl.service
启动确认监视器
systemctl start DmMonitorServiceconfirm.service
更多请访问达梦社区达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台