本文是参考实际生产环境的操作示例。其背景是现有生产环境的数据库架构是一主一备的数据守护集群,用户需求是增加一块性能良好的SSD硬盘已解决当前主备机磁盘io的性能瓶颈。以下内容则是增加备机节点的完整操作步骤。
本方案操作限制:需停机
数据还原方式:直接拷贝主机的数据文件到新的服务器上,并且需要修改控制文件中对应的绝对路径
一、软硬件环境
软硬件配置情况 | |
IP | *.*.153.4(读库主库) *.*.153.5(读库备库) *.*.153.10 (新增备库节点) |
操作系统 | CentOS 7 |
CPU | x86_64 1c |
存储 | 主机(*.*.153.5) 数据目录/dmdata 20G 备机1(*.*.153.4) 数据目录/dmdata 20G 备机2(*.*.153.10) 数据目录/dmdata 20G |
内存 | 2G |
数据库版本 | DM Database Server x64 V7.6.0.161-Build(2019.05.23-107264)ENT |
数据库相关路径 | 主库(*.*.153.4) 程序路径:/dmdata/dmdb/bin 数据文件路径:/dmdata/dmdb/DW01 归档日志路径:/dmarch 备机1(*.*.153.5) 程序路径:/dmdata/dmdb/bin 数据文件路径:/dmdata/dmdb/DW02 归档日志路径:/dmarch 备机2(*.*.153.10) 程序路径:/dmdata/dmdb 数据文件路径:/dmdata/DW03 归档日志路径:/dmarch |
二、操作步骤
序号 | 参数优化步骤 | 说明 | 操作类型 |
环境准备 | |||
1 | 153.10安装数据库软件 配置资源信息 创建dmdba用户等 | 数据库版本:DM Database Server x64 V7.6.0.161-Build(2019.05.23-107264)ENT | |
2 | 刷新检查点 | 执行此操作的作用是使数据落盘 | |
3 | 停数据库相关服务 | 当前集群状态,153.4为主机,153.5为备机 | |
备份配置文件及拷贝数据 | |||
4 | 备份主库和备库的配置文件 | ||
5 | 备份153.4/5 dm_svc.conf | ||
6 | 整体拷贝主库(153.4)的数据文件到备库2(153.10)节点 | ||
7 | 修改153.10(备机2)配置文件绝对路径 | 包括dm.ini dm.ctl | |
配置相关配置文件 | |||
8 | 配置3个节点dmmal.ini | ||
9 | 配置3个节点dmarch.ini | ||
10 | 配置3个节点dmwatcher.ini | ||
11 | 拷贝主库(153.4)的dmwatcher.ctl到备库2(153.10) | 对于故障场景中,某个全局守护类型的实例所在机器故障,数据无法继续使用的情况下,从当前的有效主库直接拷贝数据文件或者备份还原方式重新准备数据后,需要同时拷贝主库的守护进程控制文件 dmwatcher.ctl 到实例的数据文件目录下。 | |
12 | 修改监视器 dmmonitor.ini | 监视器位置在:153.3 | |
13 | 修改备库(153.10)OGUID | 操作153.10 | |
14 | 修改备库(153.10)数据库模式 | 操作153.10 | |
15 | 注册服务 | 操作153.10 | |
16 | 修改dm_svc.conf配置 | 操作5节点 | |
17 | 启动数据库集群 | 操作3节点 | |
18 | 验证集群正常 |
三、实施过程
3.1 环境检查[节点3]
1).关闭防火墙状态:
systemctl status firewalld.service
systemctl disable firewalld.service
2).关闭SELinux:
cat /etc/selinux/config
修改 SELINUX=disabled
3).系统参数文件配置(现有主备服务器一并调整):
vi /etc/security/limits.conf #永久生效
dmdba soft nproc 10240
dmdba hard nproc 10240
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft data unlimited
dmdba hard data unlimited
4).临时设置:
ulimit -n 65536
5).配置system.conf:
vim /etc/systemd/system.conf
DefaultLimitNOFILE=65536
DefaultLimitNPROC=10240
6).创建软件安装目录和用户:
groupadd dinstall -g 2001
useradd -g dinstall dmdba -u 2001
mkdir -p /dmdata/dmdb
chown dmdba:dinstall -R /dmdata
chown dmdba:dinstall -R /dmarch
7).软件安装
( 过程略)
8).创建实例目录
mkdir /dmdata/DW03
chown dmdba:dinstall -R /dmdata/DW03
3.2 集群配置
3.2.1停服务
刷新检查点(153.4),使数据落盘
SELECT CHECKPOINT(100);
停止主备库守护进程服务
先停备库153.5:
su - dmdba
/dmdata/dmdb/bin/DmWatcherServiceDW02 stop
再停主库153.4:
su - dmdba
/dmdata/dmdb/bin/DmWatcherServiceDW01 stop
停止主备库数据库服务
#先停主库153.4:
su - dmdba
/dmdata/dmdb/bin/DmServiceDW01 stop
#再停备库153.5:
su - dmdba
/dmdata/dmdb/bin/DmServiceDW02 stop
停止监视器服务(153.3)
cd /home/dmdba/dmdb/bin
./DmMonitorServiceDW stop
3.2.2 备份读库主备库的配置文件
备份ini文件
#备份主库153.4:
mkdir /dmdata/dmini_bak
cd /dmdata/dmdb/DW01
cp *.ini /dmdata/dmini_bak
再停备库153.5:
mkdir /dmdata/dmini_bak
cd /dmdata/dmdb/DW02
cp *.ini /dmdata/dmini_bak
备份153.4/5 dm_svc.conf
cp /etc/dm_svc.conf /dmdata/dmini_bak
拷贝153.4(主库)数据文件到153.10
#153.4(主库):
cd /dmdata/dmdb/DW02
scp -r * root@*.*.153.10:/dmdata/DW03/
3.2.3 修改配置文件绝对路径(备机2)
创建备份路径
mkdir /dmdata/bak
修改dm.ini文件路径
cd /dmdata/DW03
vi dm.ini
CTL_PATH = /dmdata/DW03/dm.ctl
CTL_BAK_PATH = /dmdata/DW03/ctl_bak
SYSTEM_PATH = /dmdata/DW03/
CONFIG_PATH = /dmdata/DW03/
TEMP_PATH = /dmdata/DW03/
BAK_PATH = /dmdata/bak
INSTANCE_NAME = DW03
修改dm.ctl文件路径
dmctlcvt TYPE=1 SRC=/dmdata/DW03/dm.ctl DEST=/dmdata/DW03/dm.txt
vi /dmdata/DW03/dm.txt
#(修改对应的路径)
#转换为ctl文件
mv dm.ctl dm_bak.ctl
dmctlcvt TYPE=1 SRC=/dmdata/DW03/dm.txt DEST=/dmdata/DW03/dm.ctl
3.2.4 配置3个节点ini参数文件
1).配置dmmal.ini
153.4(主机):
su - dmdba
cd /dmdata/dmdb/DW01
#追加备机153.10节点MAL信息到153.4的dmmal.ini
echo '[MAL_INST3]
MAL_INST_NAME = DW03
MAL_HOST = *.*.100.10
MAL_PORT = 5336
MAL_INST_HOST = *.*.153.10
MAL_INST_PORT = 5236
MAL_DW_PORT = 5536' >> dmmal.ini
153.5(备机1):
从153.4 拷贝 dmmal.ini到153.5上
153.10(备机2):
从153.4 拷贝 dmmal.ini到153.10上
2).配置dmarch.ini
153.4(主库):
su - dmdba
cd /dmdata/dmdb/DW01
echo '[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME
ARCH_DEST = DW03
' >> dmarch.ini
153.5(备库1):
su - dmdba
cd /dmdata/dmdb/DW02
echo '[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME
ARCH_DEST = DW03
' >> dmarch.ini
153.10(备库2):
su - dmdba
mkdir -r /dmarch/arch
echo '[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = DW01
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME
ARCH_DEST = DW02
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch/arch
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 10240' > dmarch.ini
3).配置dmwatcher.ini
153.10(备库2):
su - dmdba
mkdir -p /dmdata/dmdb/dmwatcher/DW03
echo '[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 15
INST_ERROR_TIME = 15
INST_OGUID = 453331
INST_INI = /dmdata/DW03/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD =/dmdata/dmdb/bin/DmServiceDW03 start
INST_RECOVER_TIME = 60
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
' >>dmwatcher.ini
4). 拷贝主库的dmwatcher.ctl
#153.4(主库):
cd /dmdata/dmdb/DW01
scp dmwatcher.ctl root@*.*.153.10:/dmdata/DW03/
5). 修改dmmonitor.ini
MON_DW_CONFIRM=1
MON_LOG_PATH=/home/dmdba/dmdb
MON_LOG_INTERVAL=1
MON_LOG_FILE_SIZE=64
MON_LOG_SPACE_LIMIT=0
[GRP1]
MON_DW_IP=*.*.153.4:5536
MON_DW_IP=*.*.153.5:5536
MON_DW_IP=*.*.153.10:5536 #添加这段即可
6).修改备库2(153.10)的OGUID
cd /dmdata/dmdb/bin
./disql SYSDBA/SYSDBA:5236
SP_SET_OGUID(453331);
7).修改备库2(153.10)的数据库模式
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
8).注册服务
cd /dmdata/dmdb/scripts/root
./dm_service_installer.sh -t dmserver -i /dmdata/DW03/dm.ini -p DW03 -m mount
./dm_service_installer.sh -t dmwatcher -i /dmdata/DW03/dmwatcher.ini -p DW03
****** 切换主库后,手动做一次全备
9). 修改dm_svc.conf配置
(对应调整153.4/5的dm_svc.conf)
vi /etc/dm_svc.conf
TIME_ZONE=(480)
LANGUAGE=(cn)
DMR=(*.*.153.5:5236,*.*.153.4:5236,*.*.153.10:5236)
[DMR]
LOGIN_MODE=(1) #查看dm7文档 ,做成局部的
10).启动数据库集群
启动主备库数据库服务(严格按照此顺序启动数据库服务)
153.4(主库):
su - dmdba
/dmdata/dmdb/bin/DmServiceDW01 start
153.5(备库1):
su - dmdba
/dmdata/dmdb/bin/DmServiceDW02 start
153.10(备库2):
su - dmdba
/dmdata/dmdb/bin/DmServiceDW03 start
11).启动主备库守护进程服务
153.4(主库):
su - dmdba
/dmdata/dmdb/bin/DmWatcherServiceDW01 start
153.5(备库1):
su - dmdba
/dmdata/dmdb/bin/DmWatcherServiceDW02 start
153.10(备库2):
su - dmdba
/dmdata/dmdb/bin/DmWatcherServiceDW03 start
12). 通过监视器查看集群状态
登录监视器查看集群状态,状态是否都正常,正常再执行下一步验证。
创建临时表,确定备库重演
主库执行:create table SYSDBA.temp AS SELECT * FROM V$DM_INI ;
备库查看:select count(*) from SYSDBA.temp;
主库删除:drop table SYSDBA.temp;
更多内容,请访问达梦社区地址:https:eco.dameng.com