本文是参考实际生产环境的操作示例。其背景是现有生产环境的数据库架构是一主一备的数据守护集群,用户需求是增加一块性能良好的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 | 验证集群正常 | ||
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
刷新检查点(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
备份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/
创建备份路径
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
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