单提交机 DM8 两节点实时主备部署与性能验证

单提交机 DM8 两节点实时主备部署与性能验证
本文档用于在一台提交机 VM 上复刻部署规范里的 2 节点 Data Watch 实时主备集群。核心做法是同一台机器上放两个实例目录实例名不同所有服务端口错开用本机 IP 模拟两台机器。1. 架构与端口角色实例名实例目录归档目录实例端口MAL 端口守护监听端口实例监听守护端口主库DW1_01/dmdata/DW1_01/DAMENG/dmarch/DW1_0115236533654365536备库DW1_02/dmdata/DW1_02/DAMENG/dmarch/DW1_0215237533754375537统一参数安装目录/dmdbms守护组GDW1OGUID45331账号密码SYSDBA/Dameng1234HOST_IP提交机本机 IP。只在本机验证时可用127.0.0.1但建议使用 VM 的实际业务 IP。2. 主备集群讲透DM Data Watch 主备集群由数据库实例、实时归档、MAL 通信、守护进程dmwatcher和监视器dmmonitor组成。主库负责对外写入。备库处于STANDBY正常提供只读能力。主库产生 redo 后通过 MAL 链路把日志发给备库。守护进程负责监控本地实例和远端守护进程监视器负责展示状态、执行switchover和takeover。实时主备的关键点是主库在 redo 写入本地联机日志前先把 RLOG_PKG 发给备库备库收到后立即响应不等待重演完成。主库收到响应后继续写本地联机日志并响应业务。因此它的 RPO 接近 0但备库查询仍可能有极短应用延迟。RTO 取决于监视器模式、故障检测时间和人工接管速度。本次采用DW_MODEMANUAL和MON_DW_CONFIRM0原因是提交机只有一台没有独立仲裁机手动模式更适合验收和练习避免单机模拟时自动接管误判。3. 归档类型差异类型配置位置发送时机高可用行为RPO/RTO 逻辑本次用途实时归档REALTIMEdmarch.ini主库写联机 redo 前发送主备核心同步机制支持切换接管RPO 接近 0RTO 看守护和监视器接管主线同步归档SYNCdmarch.ini主库归档日志刷盘后由归档线程发送不作为本次 2 节点实时主备主线RPO 通常较低但与归档刷盘/发送相关RTO 不等同主备接管补充理解异步归档ASYNCdmarch.inidmtimer.ini定时器触发后扫描本地归档发送更适合异地备或级联备不能替代本次主线 HARPO 取决于定时周期和积压RTO 依赖额外接管策略演示理解性能目标优先选实时主备。读写分离在读多写少时可能更高但需要接口层配置且单 VM 上两个实例争抢 CPU/IO结果不一定比单实例稳定。4. 初始化与配置步骤以下命令以dmdba用户执行注册服务命令以root执行。4.1 准备目录mkdir-p/dmdata/DW1_01 /dmdata/DW1_02 /dmarch/DW1_01 /dmarch/DW1_02mkdir-p/dmdata/malpath /dmdata/backup /dmdbms/log4.2 初始化主库/dmdbms/bin/dminitPATH/dmdata/DW1_01INSTANCE_NAMEDW1_01PORT_NUM15236PAGE_SIZE32EXTENT_SIZE32LOG_SIZE2048CHARSET1CASE_SENSITIVEYSYSDBA_PWDDameng1234SYSAUDITOR_PWDDameng1234首次启动主库并修改基础参数/dmdbms/bin/dmserver /dmdata/DW1_01/DAMENG/dm.ini另开窗口执行-- disql SYSDBA/Dameng1234HOST_IP:15236ALTERDATABASEMOUNT;SP_SET_PARA_VALUE(2,PORT_NUM,15236);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);ALTERDATABASEOPEN;关闭前台dmserver后备份主库/dmdbms/bin/dmrmanCTLSTMTBACKUP DATABASE /dmdata/DW1_01/DAMENG/dm.ini FULL BACKUPSET /dmdata/backup/DW1_FULL PARALLEL 44.3 配置主库文件把templates/dmmal.ini复制到/dmdata/DW1_01/DAMENG/dmmal.ini将其中HOST_IP替换为提交机 IP。把templates/dmarch_primary.ini复制为/dmdata/DW1_01/DAMENG/dmarch.ini。把templates/dmwatcher_01.ini复制为/dmdata/DW1_01/DAMENG/dmwatcher.ini。4.4 准备备库复制主库实例目录到备库目录cp-a/dmdata/DW1_01/DAMENG /dmdata/DW1_02/修改备库dm.iniINSTANCE_NAME DW1_02 PORT_NUM 15237把templates/dmmal.ini复制到/dmdata/DW1_02/DAMENG/dmmal.ini同样替换HOST_IP。把templates/dmarch_standby.ini复制为/dmdata/DW1_02/DAMENG/dmarch.ini。把templates/dmwatcher_02.ini复制为/dmdata/DW1_02/DAMENG/dmwatcher.ini。恢复备库数据/dmdbms/bin/dmrmanCTLSTMTRESTORE DATABASE /dmdata/DW1_02/DAMENG/dm.ini FROM BACKUPSET /dmdata/backup/DW1_FULL/dmdbms/bin/dmrmanCTLSTMTRECOVER DATABASE /dmdata/DW1_02/DAMENG/dm.ini FROM BACKUPSET /dmdata/backup/DW1_FULL/dmdbms/bin/dmrmanCTLSTMTRECOVER DATABASE /dmdata/DW1_02/DAMENG/dm.ini UPDATE DB_MAGIC4.5 注册服务服务名必须区分两个实例/dmdbms/script/root/dm_service_installer.sh-tdmserver-pDW101-dm_ini/dmdata/DW1_01/DAMENG/dm.ini-mmount/dmdbms/script/root/dm_service_installer.sh-tdmserver-pDW102-dm_ini/dmdata/DW1_02/DAMENG/dm.ini-mmount/dmdbms/script/root/dm_service_installer.sh-tdmwatcher-pWatcher101-watcher_ini/dmdata/DW1_01/DAMENG/dmwatcher.ini /dmdbms/script/root/dm_service_installer.sh-tdmwatcher-pWatcher102-watcher_ini/dmdata/DW1_02/DAMENG/dmwatcher.ini如需注册监视器/dmdbms/script/root/dm_service_installer.sh-tdmmonitor-pMonitorDW1-monitor_ini/dmdbms/bin/dmmonitor.ini5. 启动与角色设置启动两个实例为 mount/dmdbms/bin/DmServiceDW101 start /dmdbms/bin/DmServiceDW102 start设置主库-- disql SYSDBA/Dameng1234HOST_IP:15236SP_SET_PARA_VALUE(1,ALTER_MODE_STATUS,1);SP_SET_OGUID(45331);ALTERDATABASEPRIMARY;SP_SET_PARA_VALUE(1,ALTER_MODE_STATUS,0);设置备库-- disql SYSDBA/Dameng1234HOST_IP:15237SP_SET_PARA_VALUE(1,ALTER_MODE_STATUS,1);SP_SET_OGUID(45331);ALTERDATABASESTANDBY;SP_SET_PARA_VALUE(1,ALTER_MODE_STATUS,0);启动守护进程/dmdbms/bin/DmWatcherServiceWatcher101 start /dmdbms/bin/DmWatcherServiceWatcher102 start配置监视器cptemplates/dmmonitor.ini /dmdbms/bin/dmmonitor.inised-is/HOST_IP/提交机实际IP/g/dmdbms/bin/dmmonitor.ini /dmdbms/bin/dmmonitor /dmdbms/bin/dmmonitor.ini监视器里执行show global info list tip6. 验证场景6.1 主备同步主库执行CREATETABLEDW_TEST(IDINT,C1VARCHAR(50));INSERTINTODW_TESTVALUES(1,PRIMARY_TO_STANDBY);COMMIT;备库执行SELECT*FROMDW_TEST;SELECTARCH_DEST,ARCH_TYPE,ARCH_STATUSFROMV$ARCH_STATUS;预期备库能查到数据主库到DW1_02的实时归档状态为VALID。6.2 正常切换监视器执行choose switchover GDW1 switchover GDW1.DW1_02 show global info预期DW1_02变为PRIMARYDW1_01变为STANDBY。6.3 故障接管停止当前主库实例后在监视器执行choose takeover GDW1 takeover GDW1.DW1_02 show global info如果常规接管不满足条件先执行SELECTSF_DW_CHECK_TAKEOVER();仅在确认归档有效且原主库不会重新写入时才考虑takeover force。7. 性能提交方法7.1 单实例基线使用同样 VM、同样 DM 参数只启动单实例记录工具sysbench / JMeter / 自写 SQL 循环任选一种。并发数建议固定 8、16 或 32。持续时间建议至少 3 分钟。指标TPS、QPS、平均延迟、P95 延迟、CPU、IO wait。7.2 实时主备压测启动主备和守护只连接当前主库端口压测。记录同样指标并计算主备性能比例 实时主备 TPS / 单实例 TPS7.3 基本优化点MAL_COMPRESS_LEVEL0本机或内网无需压缩降低 CPU 开销。归档目录与数据目录分开至少逻辑路径分开便于观察 IO。压测时关闭过重 SQL 日志只保留必要监控。根据 VM 内存调大BUFFER但不要挤爆系统页缓存。保持两个实例端口、服务名、归档目录完全独立避免相互覆盖。8. 最终提交内容建议提交以下内容集群架构和端口表。实时、同步、异步归档差异表。show global info、list、tip的关键输出截图或文本。主备同步验证 SQL 结果。正常切换或故障接管验证结果。单实例与实时主备性能表以及主备/单机比例。