达梦DM8数据守护集群搭建
1.集群规划两机器的规划如下表配置项A机器B机器业务 IP**心跳 IP**实例名DM_SH_01DM_SH_02实例端口52365236MAL 端口53365336MAL 守护进程端口54365436守护进程端口55365536OGUID4533145331守护组DMDM安装目录/dm/dmdba/dmdbms/dm/dmdba/dmdbms实例目录/dm/dmdba/dmdbms/data//dm/dmdba/dmdbms/data/归档上限51200512002.配置机器A首先初始化实例并备份数据,机器A的系统为麒麟V10在root下执行xhost local:dmdba配置图形化权限切换到dmdba用户执行exportDISPLAY:0导入变量执行命令/dm/dmdba/dmdbms/tool/dbca.sh启动图形化的配置助手配置实例DM_SH_01页大小为32,簇大小为32日志文件大小为2048,并设置SYSDBA和SYSAUDITOR密码然后按照提示执行配置脚本在root下执行mv/dm/dmdba/dmdbms/bin/DmServiceDM_SH_01.service /usr/lib/systemd/system/DmServiceDM_SH_01.service执行systemctl daemon-reload重载systemd配置刷新服务列表然后切换dmdba用户执行systemctlenableDmServiceDM_SH_01.service设置DM_SH_01实例服务开机自启动执行systemctl start DmServiceDM_SH_01.service启动实例服务执行systemctl status DmServiceDM_SH_01.service查看实例服务状态说明实例服务启动成功切换dmdba用户在bin目录下执行命令./disql SYSDBA/**:5236登录disql执行sql语句开启归档ALTER DATABASE MOUNT;ALTER DATABASE ARCHIVELOG;ALTER DATABASE ADD ARCHIVELOGDEST/dm/dmdba/dmdbms/data/DM_SH/arch, TYPELOCAL, FILE_SIZE1024, SPACE_LIMIT51200;ALTER DATABASE OPEN;执行sql语句备份数据BACKUP DATABASE BACKUPSET/dm/dmdba/dmdbms/data/DM_SH/bak/BACKUP_FILE;执行sql语句修改 dm.ini将将实例服务端口固化为 5236匹配集群规划的业务端口;设置节点离线判定超时时间为60秒永久关闭所有人工手动切换库状态、主备角色、修改 OGUID 的权限开启 MAL 集群通信组件重做日志同步监控统计窗口跨度为64秒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);修改数据库归档配置文件dmarch.ini:ARCH_WAIT_APPLY0#0高性能 1事务一致[ARCHIVE_LOCAL]ARCH_TYPELOCAL#本地归档类型ARCH_DEST/dm/dmdba/dmdbms/data/DM_SH/arch/#本地归档存放路径ARCH_FILE_SIZE1024#单个归档大小单MBARCH_SPACE_LIMIT51200#归档上限单位MB[ARCHIVE_REALTIME1]ARCH_TYPEREALTIME#实时归档类型ARCH_DESTDM_SH_02#实时归档目标实例名创建MAL通信配置文件dmmal.ini内容如下MAL_CHECK_INTERVAL10#MAL 链路检测时间间隔MAL_CONN_FAIL_INTERVAL10#判定 MAL 链路断开的时间MAL_TEMP_PATH/dm/dmdba/dmdbms/data/malpath/#临时文件目录MAL_BUF_SIZE512#单个 MAL 缓存大小单位 MBMAL_SYS_BUF_SIZE2048#MAL 总大小限制单位 MBMAL_COMPRESS_LEVEL0#MAL 消息压缩等级0 表示不压缩[MAL_INST1]MAL_INST_NAMEDM_SH_01#实例名和 dm.ini 的 INSTANCE_NAME 一致MAL_HOST*#MAL 系统监听 TCP 连接的 IP 地址MAL_PORT5336#MAL 系统监听 TCP 连接的端口MAL_INST_HOST*#实例的对外服务 IP 地址MAL_INST_PORT5236#实例对外服务端口和 dm.ini 的 PORT_NUM 一致MAL_DW_PORT5436#实例对应的守护进程监听 TCP 连接的端口MAL_INST_DW_PORT5536#实例监听守护进程 TCP 连接的端口[MAL_INST2]MAL_INST_NAMEDM_SH_02 MAL_HOST* MAL_PORT5336MAL_INST_HOST* MAL_INST_PORT5236MAL_DW_PORT5436MAL_INST_DW_PORT5536创建数据守护进程配置文件dmwatcher.ini内容如下[DM]DW_TYPEGLOBAL#全局守护类型DW_MODEAUTO#MANUAL故障手切 AUTO故障自切DW_ERROR_TIME20#远程守护进程故障认定时间INST_ERROR_TIME20#本地实例故障认定时间INST_RECOVER_TIME60#主库守护进程启动恢复的间隔时间INST_OGUID45331#守护系统唯一 OGUID 值INST_INI/dm/dmdba/dmdbms/data/DM_SH/dm.ini#dm.ini 文件路径INST_AUTO_RESTART1#打开实例的自动启动功能INST_STARTUP_CMD/dm/dmdba/dmdbms/bin/dmserver#命令行方式启动RLOG_SEND_THRESHOLD0#指定主库发送日志到备库的时间阈值默认关闭RLOG_APPLY_THRESHOLD0#指定备库重演日志的时间阈值默认关闭在机器B上创建目录mkdir-p/dm/dmdba/dmdbms/data/DM_SH/bak在虚拟机上设置共享文件夹利用共享文件夹将机器A的/dm/dmdba/dmdbms/data/DM_SH/bak/BACKUP_FILE备份文件拷贝到机器B:利用配置助手的图形化界面初始化实例服务的时候没有设置以配置方式mount启动导致初始化之后的实例服务后续开机自启为打开open状态而数据守护集群开机直接open会造成主备归档基线断裂、脑裂因此必须删除原有实例服务重新注册保证服务参数永久为mount启动通过达梦服务查看器dmservice.sh右键选择注册dmwatcher服务3.配置机器B打开配置助手初始化实例执行下面命令从指定备份集 BACKUP_FILE 中还原所有数据文件、控制文件、日志文件到备库DM_SH实例目录读取备份集内部自带的归档日志回滚/前滚事务将数据库一致性恢复到备份完成的完整时间点最后更新数据库魔数/dm/dmdba/dmdbms/bin/dmrmanCTLSTMTRESTORE DATABASE /dm/dmdba/dmdbms/data/DM_SH/dm.ini FROM BACKUPSET /dm/dmdba/dmdbms/data/DM_SH/bak/BACKUP_FILE/dm/dmdba/dmdbms/bin/dmrmanCTLSTMTRECOVER DATABASE /dm/dmdba/dmdbms/data/DM_SH/dm.ini FROM BACKUPSET /dm/dmdba/dmdbms/data/DM_SH/bak/BACKUP_FILE/dm/dmdba/dmdbms/bin/dmrmanCTLSTMTRECOVER DATABASE /dm/dmdba/dmdbms/data/DM_SH/dm.ini UPDATE DB_MAGIC修改dmarch.ini内容如下ARCH_WAIT_APPLY0#0高性能 1事务一致[ARCHIVE_LOCAL]ARCH_TYPELOCAL#本地归档类型ARCH_DEST/dm/dmdba/dmdbms/data/DM_SH/arch/#本地归档存放路径ARCH_FILE_SIZE1024#单个归档大小单位MBARCH_SPACE_LIMIT51200#归档上限单位MB[ARCHIVE_REALTIME1]ARCH_TYPEREALTIME#实时归档类型ARCH_DESTDM_SH_01#实时归档目标实例名修改dm.ini内容如下INSTANCE_NAMEDM_SH_02 PORT_NUM5236#数据库实例监听端口DW_INACTIVE_INTERVAL60#接收守护进程消息超时时间ALTER_MODE_STATUS0#不允许手工方式修改实例模式/状态/OGUIDENABLE_OFFLINE_TS2#不允许备库 OFFLINE 表空间MAL_INI1#打开 MAL 系统ARCH_INI1#打开归档配置RLOG_SEND_APPLY_MON64#统计最近 64 次的日志重演信息修改dmmal.ini内容如下MAL_CHECK_INTERVAL10#MAL 链路检测时间间隔MAL_CONN_FAIL_INTERVAL10#判定 MAL 链路断开的时间MAL_TEMP_PATH/dm/dmdba/dmdbms/data/malpath/#临时文件目录MAL_BUF_SIZE512#单个 MAL 缓存大小单位 MBMAL_SYS_BUF_SIZE2048#MAL 总大小限制单位 MBMAL_COMPRESS_LEVEL0#MAL 消息压缩等级0 表示不压缩[MAL_INST1]MAL_INST_NAMEDM_SH_01#实例名和 dm.ini 的 INSTANCE_NAME 一致MAL_HOST*#MAL 系统监听 TCP 连接的 IP 地址MAL_PORT5336#MAL 系统监听 TCP 连接的端口MAL_INST_HOST*#实例的对外服务 IP 地址MAL_INST_PORT5236#实例对外服务端口和 dm.ini 的 PORT_NUM 一致MAL_DW_PORT5436#实例对应的守护进程监听 TCP 连接的端口MAL_INST_DW_PORT5536#实例监听守护进程 TCP 连接的端口[MAL_INST2]MAL_INST_NAMEDM_SH_02 MAL_HOST* MAL_PORT5336MAL_INST_HOST* MAL_INST_PORT5236MAL_DW_PORT5436MAL_INST_DW_PORT5536修改dmwatcher.ini内容如下:[DM]DW_TYPEGLOBAL#全局守护类型DW_MODEAUTO#MANUAL故障手切 AUTO故障自切DW_ERROR_TIME20#远程守护进程故障认定时间INST_ERROR_TIME20#本地实例故障认定时间INST_RECOVER_TIME60#主库守护进程启动恢复的间隔时间INST_OGUID45331#守护系统唯一 OGUID 值INST_INI/dm/dmdba/dmdbms/data/DM_SH/dm.ini#dm.ini 文件路径INST_AUTO_RESTART1#打开实例的自动启动功能INST_STARTUP_CMD/dm/dmdba/dmdbms/bin/dmserver#命令行方式启动RLOG_SEND_THRESHOLD0#指定主库发送日志到备库的时间阈值默认关闭RLOG_APPLY_THRESHOLD0#指定备库重演日志的时间阈值默认关闭切换root用户利用dbca.sh和dmservice.sh分别注册实例服务和dmwatcher服务执行命令/dm/dmdba/dmdbms/bin/DmServiceDM_SH_01(02)start在dmdba用户下启动数据库执行./disql SYSDBA/Zh010922*(*):5236连接disql修改参数SP_SET_PARA_VALUE(1,ALTER_MODE_STATUS,1);SP_SET_OGUID(45331);ALTER DATABASE PRIMARY;机器B 为备库ALTER DATABASE STANDBY; SP_SET_PARA_VALUE(1,ALTER_MODE_STATUS,0);测试启动机器A的守护进程成功测试启动机器B的守护进程出现报错提示实例没有配置守护进程的监听端口MAL_DW_PORT:添加对应参数之后测试启动守护进程成功4.配置确认监视器确认监视器ip为*首先创建确认监视器的配置文件dmmonitor.ini内容如下MON_DW_CONFIRM1#0非确认故障手切 1确认故障自切MON_LOG_PATH../log#监视器日志文件存放路径MON_LOG_INTERVAL60#每隔 60s 定时记录系统信息到日志文件MON_LOG_FILE_SIZE512#单个日志大小单位MBMON_LOG_SPACE_LIMIT2048#日志上限单位MB[DM]MON_INST_OGUID45331#组DM的唯一 OGUID 值MON_DW_IP*:5436#IP对应MAL_HOSTPORT对应MAL_DW_PORTMON_DW_IP*:5436root用户下执行xhost local:dmdba切换dmdba用户执行exportDISPLAY:0然后执行命令/dm/dmdba/dmbms/tool/dmservice.sh启动DM服务管理图形化界面注册确认监视器服务然后配置非确认监视器配置文件dmmonitor_manual.ini内容如下存放在机器B的bin目录MON_DW_CONFIRM0#0非确认故障手切 1确认故障自切MON_LOG_PATH../log#监视器日志文件存放路径MON_LOG_INTERVAL60#每隔 60s 定时记录系统信息到日志文件MON_LOG_FILE_SIZE512#单个日志大小单位MBMON_LOG_SPACE_LIMIT2048#日志上限单位MB[DM]MON_INST_OGUID45331#组DM的唯一 OGUID值MON_DW_IP*:5436#IP对应MAL_HOSTPORT对应MAL_DW_PORTMON_DW_IP*:5436非确认监视器为临时运维工具无需注册服务。启动集群:/dm/dmdba/dmdbms/bin/.DmServiceDM_SH_01(02)start /dm/dmdba/dmdbms/bin/DmWatcherServiceWatcher start在第三台机器上启动确认监视器./dmmonitor dmmonitor.ini查看集群状态发现异常显示主库处于mount挂载状态备库处于open打开状态备库的备档序号LSN比主库小存在少量归档延迟但是等待几分钟发现主守护卡在初始化完成阶段WSTATUSSTARTUP归档LSN不更新依次检查机器A和机器B的实例配置文件和守护服务配置文件最终发现机器B的dmmal.ini未能和机器A保持一致修改保证参数完全一致之后确认监视器中主库和备库都处于打开状态集群状态恢复正常https://eco.dameng.com