DM数据守护集群搭建
1. 准备工作
1.1 配置虚拟机集群网卡
配置双网卡,其中192.168.198.0为心跳IP可以连接外网,192.168.117.0为业务IP仅能连接内网。
1.在vmware中为虚拟机添加网卡2,设置模式为自定义(仅主机模式)。
2.设置网卡2的子网地址为192.168.117.0
3.在命令行输入ip a
查看网卡及ip地址,可以看到网卡2的配置文件后缀名为ens37。
cd /etc/sysconfig/network-scripts
cp ifcfg-ens33 ifcfg-ens37
修改配置文件vi ifcfg-ens37
4、重启网络
service network restart
2 配置DW_P
2.1 初始化实例与备份
1、实例初始化。
/home/dmdba/dm8/bin/dminit PATH=/home/dmdba/data/ INSTANCE_NAME=GRP1_RT_01 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048
2、启动服务
/home/dmdba/dm8/bin/dmserver /home/dmdba/data/DAMENG/dm.ini
3、开启归档
/home/dmdba/dm8/bin/disql SYSDBA/SYSDBA@192.168.198.128:5236
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/home/dmdba/data/DAMENG/arch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=51200';
ALTER DATABASE OPEN;
开启归档失败,报错提示磁盘空间不足,经检查根目录centos-root剩余空间已不足1G,解决方法思路如下:
1.创建新磁盘,挂载在新目录中,将data文件迁移到新磁盘上,可以解决;该方案操作最为方便快捷,但需要注意/data/DAMENG/目录下的配置文件路径均需要重新设置。
2.创建新虚拟机,分配足额硬盘,从头开始搭建数据库及集群;该方案耗时较长,但可以规避后续可能的错误。
3.扩容根目录磁盘,因磁盘原本并非为lvm可扩容属性,扩容难度较大,容易导致主机崩溃,操作前一定要保存快照;该方案难度较大,暂无法实现。
后续解决方案选择了方案1,归档成功。
4、备份数据
BACKUP DATABASE BACKUPSET ‘/home/dmdba/data/DAMENG/bak/BACKUP_FILE’;
5、修改 dm.ini
SP_SET_PARA_VALUE (2,'INSTANCE_NAME',GRP1_RT_01);
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,'ARCH_INI',1);
SP_SET_PARA_VALUE (2,'RLOG_SEND_APPLY_MON',64);
2.2 修改 dmarch.ini
vi /home/dmdba/data/DAMENG/dmarch.ini
ARCH_WAIT_APPLY = 0 #0:高性能 1:事务一致
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /home/dmdba/data/DAMENG/arch/ #本地归档存放路径
ARCH_FILE_SIZE = 1024 #单个归档大小,单位 MB
ARCH_SPACE_LIMIT = 51200 #归档上限,单位 MB
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = GRP1_RT_02 #实时归档目标实例名
2.3 创建 dmmal.ini
vi /home/dmdba/data/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL = 10 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 10 #判定 MAL 链路断开的时间
MAL_TEMP_PATH = /home/dmdba/data/malpath/ #临时文件目录
MAL_BUF_SIZE = 512 #单个 MAL 缓存大小,单位 MB
MAL_SYS_BUF_SIZE = 2048 #MAL 总大小限制,单位 MB
MAL_COMPRESS_LEVEL = 0 #MAL 消息压缩等级,0 表示不压缩
[MAL_INST1]
MAL_INST_NAME = GRP1_RT_01 #实例名,和 dm.ini 的 INSTANCE_NAME 一致
MAL_HOST = 192.168.117.128 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5336 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.198.128 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例对外服务端口,和 dm.ini 的 PORT_NUM 一致
MAL_DW_PORT = 5436 #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5536 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = GRP1_RT_02
MAL_HOST = 192.168.117.129
MAL_PORT = 5336
MAL_INST_HOST = 192.168.198.129
MAL_INST_PORT = 5236
MAL_DW_PORT = 5436
MAL_INST_DW_PORT = 5536
2.4 创建 dmwatcher.ini
vi /home/dmdba/data/DAMENG/dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME = 20 #远程守护进程故障认定时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_OGUID = 45331 #守护系统唯一 OGUID 值
INST_INI = /home/dmdba/data/DAMENG/dm.ini #dm.ini 文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
2.5 拷贝备份文件与注册服务
拷贝备份文件
scp -r /home/dmdba/data/DAMENG/bak/BACKUP_FILE dmdba@192.168.198.129:/dm/data/DAMENG/bak
注册服务
/home/dmdba/dm8/script/root/dm_service_installer.sh -t dmserver -p GRP1_RT_01 -dm_ini /home/dmdba/data/DAMENG/dm.ini -m mount
/home/dmdba/dm8/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /home/dmdba/data/DAMENG/dmwatcher.ini
3. 配置DW_S1机器
3.1 初始化实例
/dm8/bin/dminit PATH=/dm/data/ INSTANCE_NAME=GRP1_RT_02 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048
3.2 恢复数据
/dm8/bin/dmrman CTLSTMT="RESTORE DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/data/DAMENG/bak/BACKUP_FILE'"
/dm8/bin/dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/data/DAMENG/bak/BACKUP_FILE'"
/dm8/bin/dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
备机数据恢复出现报错,通过查看csdn博客,了解到登陆用户不对,需用当前用户先启动dmrman后输入命令解决。
3.3 替换 dmarch.ini
vi /dm/data/DAMENG/dmarch.ini
3.4 配置 dm.ini、dmmal.ini 和 dmwatcher.ini
DW_S1机器里 dmmal.ini、dmwatcher.ini 与DW_P机器 GRP1_RT_01 的 dmmal.ini、dmwatcher.ini 相同,参照DW_P机器 dmmal.ini、dmwatcher.ini 文件进行配置。
3.5 注册服务
/dm8/script/root/dm_service_installer.sh -t dmserver -p GRP1_RT_02 -dm_ini /dm/data/DAMENG/dm.ini -m mount
/dm8/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dm/data/DAMENG/dmwatcher.ini
4. 配置监视器
4.1 创建 dmmonitor.ini
vi /home/dmdba/dm8/bin/dmmonitor.ini
MON_DW_CONFIRM = 0 #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.198.128:5436 #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP = 192.168.198.129:5436
4.2 注册服务(选做)
/home/dmdba/dm8/script/root/dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /home/dmdba/dm8/bin/dmmonitor.ini
4.3 监视器使用
监视器前台启动
/dm8/bin/dmmonitor /dm8/bin/dmmonitor.ini
输入命令
list
需要先启动集群list才会有信息出现
5. 启停集群
5.1 启动数据库并修改参数
##A 机器
/home/dmdba/dm8/bin/DmServiceGRP1_RT_01 start
/home/dmdba/dm8/bin/disql SYSDBA/SYSDBA@192.168.198.128:5236
SP_SET_OGUID(45331);
ALTER DATABASE PRIMARY;
##B 机器
/dm8/bin/DmServiceGRP1_RT_02 start
/dm8/bin/disql SYSDBA/SYSDBA@192.168.198.129:5236
SP_SET_OGUID(45331);
ALTER DATABASE STANDBY;
5.2 启动守护进程
DW_P/DW_S1机器两台都要启动
/dm8/bin/DmWatcherServiceWatcher start
5.3 启动监视器
##后台启动
/dm8/bin/DmMonitorServiceMonitor start
##前台启动
/dm8/bin/dmmonitor /dm8/bin/dmmonitor.ini
6.数据守护启动问题
1.没有重新加载配置文件
~目录下的bash_profile中在dm数据库安装后会自动写入path路径,不知原因导致文件写入但未生效
解决方案:source一下
2.配置文件出错
启动实例时报错,查看日志没有发现问题,按照提示输入journalctl -xe看到是dmarch.ini报错,经检查为一个字母丢失。
社区地址:https://eco.dameng.com/