DM8在CentOS7搭建两节点实时主备集群

发布时间:2026/7/26 23:47:06
DM8在CentOS7搭建两节点实时主备集群 任务1. 在一台服务器上部署两个节点的实时主备集群2. 完成实时主备集群的配置与部署3. 进行同步测试4. 进行主备切换测试5. 模拟主机故障验证备机自动接管能力6. 恢复故障主机将其重新加入集群7.进行TPCC测试一、前期准备1.1 规划机器名IP地址库名实例名PORT_NUMMAL_INST_DW_PORTMAL_HOSTMAL_PORTMAL_DW_PORT主库192.168.200.254DAVEDAVE1523633141192.168.200.2546114152141备库192.168.201.47DAVEDAVE2523733142192.168.201.476114252142监视器192.168.201.471.2 安装DM8DM8在CentOS上的安装过程可参考这篇文章达梦数据库DM8——Centos7安装部署和基本操作-CSDN博客#安装路径 /home/dmdba/dmdbms1.3 路径准备# 创建数据目录和归档目录 mkdir -p /data/dmdata1 /data/dmdata2 /data/dmarch1 /data/dmarch2 /data/dmbackup /data/dmlog二、搭建实时集群2.1 初始化实例注意初始化实例的时候必须要设置SYSDBA和SYSAUDITOR的密码2.1.1主库初始化实例# 主库初始化实例命令 # PATH: 数据库文件存放路径 # DB_NAME: 数据库名称 # INSTANCE_NAME: 实例名称 # PORT_NUM: 数据库监听端口 # SYSDBA_PWD: SYSDBA用户密码 # SYSAUDITOR_PWD: SYSAUDITOR用户密码 ./dminit PATH/data/dmdata1 DB_NAMEDAVE INSTANCE_NAMEDAVE1 PORT_NUM5236 SYSDBA_PWDDameng123 SYSAUDITOR_PWDDameng1232.1.2 备库初始化实例# 备库初始化实例命令 # PATH: 数据库文件存放路径 # DB_NAME: 数据库名称 # INSTANCE_NAME: 实例名称 # PORT_NUM: 数据库监听端口与主库不同 # SYSDBA_PWD: SYSDBA用户密码 # SYSAUDITOR_PWD: SYSAUDITOR用户密码 ./dminit PATH/data/dmdata2 DB_NAMEDAVE INSTANCE_NAMEDAVE2 PORT_NUM5237 SYSDBA_PWDDameng123 SYSAUDITOR_PWDDameng1232.2 启动主库数据库使用dmserver 启动数据库在DM 数据库第一次必须正常启动完成初始化的动作# 启动主库数据库服务 # /data/dmdata1/DAVE/dm.ini: 主库配置文件路径 ./dmserver /data/dmdata1/DAVE/dm.ini2.3 设置主库为归档方式克隆一个窗口设置主库为归档方式。-- 设置数据库为归档模式 SQL alter database mount; -- 将数据库挂载到mount状态 SQL alter database archivelog; -- 启用归档模式 SQL alter database add archivelog DEST/data/dmarch1,TYPElocal,FILE_SIZE128,space_limit0; -- 添加本地归档配置 SQL alter database open; -- 打开数据库 SQL select arch_mode from v$database; -- 查询归档模式状态2.4 主库启动脱机备份CtrlC停止主库# 切换到dmdba用户 su - dmdba # 启动dmrman工具 ./dmrman # 执行脱机备份备份主库数据库 backup database /data/dmdata1/DAVE/dm.ini full backupset /data/dmbackup/DAVE_bak01;2.5 在备库恢复数据库# 在备库恢复数据库 restore database /data/dmdata2/DAVE/dm.ini from backupset /data/dmbackup/DAVE_bak01; -- 从备份集恢复数据库 recover database /data/dmdata2/DAVE/dm.ini from backupset /data/dmbackup/DAVE_bak01; -- 恢复数据库日志 recover database /data/dmdata2/DAVE/dm.ini update db_magic; -- 更新数据库魔数完成恢复2.6 修改配置参数2.6.1 修改主备库dm.ini# dm.ini 配置文件参数说明 INSTANCE_NAME DAVE1 # 实例名称主库为DAVE1备库为DAVE2 #INSTANCE_NAME DAVE2 # 备库实例名称注释掉主库的启用备库的 PORT_NUM 5236 # 数据库实例监听端口 ALTER_MODE_STATUS 0 # 不允许手工方式修改实例模式/状态 ENABLE_OFFLINE_TS 2 # 不允许备库OFFLINE表空间 MAL_INI 1 # 打开MALMessage Access Layer系统 ARCH_INI 1 # 打开归档配置2.6.2 修改主备库dmarch.ini2.6.2.1 修改主库dmarch.ini# 主库归档配置文件 dmarch.ini [ARCHIVE_REALTIME1] ARCH_TYPE REALTIME # 实时归档类型 ARCH_DEST DAVE2 # 归档目标为备库DAVE2 [ARCHIVE_LOCAL1] ARCH_TYPE LOCAL # 本地归档类型 ARCH_DEST /data/dmarch1 # 本地归档目录 ARCH_FILE_SIZE 2048 # 单个归档文件大小单位MB ARCH_SPACE_LIMIT 51200 # 归档空间限制单位MB2.6.2.2 修改备库dmarch.ini[ARCHIVE_REALTIME1] ARCH_TYPE REALTIME ARCH_DEST DAVE2 [ARCHIVE_LOCAL1] ARCH_TYPE LOCAL ARCH_DEST /data/dmarch1 ARCH_FILE_SIZE 2048 ARCH_SPACE_LIMIT 512002.6.3 修改主备库dmmal.ini主备库dmmal.ini一致vi /data/dmdata1/DAVE/dmmal.ini vi /data/dmdata2/DAVE/dmmal.iniMAL_CHECK_INTERVAL 10 MAL_CONN_FAIL_INTERVAL 10 [MAL_INST1] MAL_INST_NAME DAVE1 MAL_HOST 192.168.200.254 MAL_PORT 61141 MAL_INST_HOST 192.168.200.254 MAL_INST_PORT 5236 MAL_DW_PORT 52141 MAL_INST_DW_PORT 33141 [MAL_INST2] MAL_INST_NAME DAVE2 MAL_HOST 192.168.201.47 MAL_PORT 61142 MAL_INST_HOST 192.168.201.47 MAL_INST_PORT 5237 MAL_DW_PORT 52142 MAL_INST_DW_PORT 331422.6.4 修改主备库dmwatcher.ini2.6.4.1 修改主库dmwatcher.ini[GRP1] DW_TYPE GLOBAL DW_MODE AUTO DW_ERROR_TIME 10 INST_RECOVER_TIME 60 INST_ERROR_TIME 10 INST_OGUID 453331 INST_INI /data/dmdata1/DAVE/dm.ini INST_AUTO_RESTART 1 INST_STARTUP_CMD /home/dmdba/dmdbms/bin/dmserver RLOG_SEND_THRESHOLD 0 RLOG_APPLY_THRESHOLD 02.6.4.2 修改备库dmwatcher.ini[GRP1] DW_TYPE GLOBAL DW_MODE AUTO DW_ERROR_TIME 10 INST_RECOVER_TIME 60 INST_ERROR_TIME 10 INST_OGUID 453331 INST_INI /data/dmdata2/DAVE/dm.ini INST_AUTO_RESTART 1 INST_STARTUP_CMD /home/dmdba/dmdbms/bin/dmserver RLOG_SEND_THRESHOLD 0 RLOG_APPLY_THRESHOLD 02.6.5 修改监视器配置文件/data/dmmonitor.ini放在任意位置此处为 /data/dmmonitor.iniMON_DW_CONFIRM 1 MON_LOG_PATH /data/dmlog MON_LOG_INTERVAL 60 [GRP1] MON_INST_OGUID 453331 MON_DW_IP 192.168.200.18:52141 MON_DW_IP 192.168.201.90:521422.7 以mount方式启动主库和备库启动后另开终端进行其他命令的输入./dmserver /data/dmdata1/DAVE/dm.ini mount ./dmserver /data/dmdata2/DAVE/dm.ini mountchown -R dmdba:dmdba /data/dmarch1chmod -R 700 /data/dmarch12.8 设置OGUID2.8.1 主库设置OGUID改变数据库模式为primary模式./disql SYSDBA/Dameng123localhost:5236 SP_SET_OGUID(453331); ALTER DATABASE PRIMARY;2.8.2 备库设置OGUID改变数据库模式为standby模式./disql SYSDBA/Dameng123localhost:5237 SP_SET_OGUID(453331); ALTER DATABASE STANDBY;注意守护进程若开启则数据库状态不能手动修改了2.9 开启守护进程2.9.1 启动主库守护进程./dmwatcher /data/dmdata1/DAVE/dmwatcher.ini2.9.2 启动备库守护进程./dmwatcher /data/dmdata2/DAVE/dmwatcher.ini2.10 开启确认监视器另开一个终端开启确认监视器注意确认监视器可以起一个非确认监视器可以起多个由于我们在监视器配置文件里设置MON_DW_CONFIRM 1因此为确认监视器非确认监视器MON_DW_CONFIRM 0./dmmonitor /data/dmmonitor.ini三、结果测试3.1 同步测试主库基于系统内置视图SYSOBJECTS创建一张普通业务表t_objects自动复制所有数据与字段结构。然后统计表数据量./disql SYSDBA/Dameng123192.168.200.254:5236 SQL create table t_objects as select * from sysobjects; SQL select count(*) from t_objects;备库能查询到主库插入的数据./disql SYSDBA/Dameng123192.168.201.47:5237 SQL select count(*) from t_objects;3.2 主备库切换测试在监视器中输入如下命令将DAVE2切换为主库切换成功现在主库为DAVE23.3 模拟主机故障——现在主库为DAVE2ctrl C关停主库实例注意要用确认监视器进行观察如果用的不是确认监视器则会出现下面的情况注意如果确认监视器也没有观察到自动接管则有后台还有进程ps -ef|grep dmserver kill -9 pid把进程杀死后DAVE1成功接管成为主库注意只要DAVE2的守护进程没有关一旦检测到dmserver实例消失则会立刻重启数据库至mount模式因为我们的dmwatcher.ini配置INST_AUTO_RESTART 13.4 恢复故障主库加入集群——现在主库为DAVE1故障主库为DAVE2预先准备我们先停止DAVE2的守护进程CtrlC再停止残余的DAVE2实例重启实例重启守护进程然后观察监视器./dmwatcher /data/dmdata2/DAVE/dmwatcher.ini四、使用Benchmarksql进行TPCC测试4.1 准备BenchmarkSQL和JDK在达梦的知识库里面下载Benchmarksql5.0安装包将解压后的文件夹放到Linux的/home/TPCC文件夹下。由于我们下载的是Benchmarksql5.0所以需要安装V1.8以上的JDKtar -zxvf jdk-8u212-linux-x64.tar.gz -C /home/jdk/jdk1.8 vi /etc/profile #解压完成后配置环境变量export JAVA_HOME/home/jdk/jdk1.8/jdk1.8.0_212export PATH$JAVA_HOME/bin:$PATHexport CLASSPATH.:$JAVA_HOME/libsource /etc/profile java -version4.2 将dm8的jdbc驱动放到lib目录下cp /home/dmdba/dmdbms/drivers/jdbc/DmJdbcDriver8.jar /home/TPCC/benchmarksql-5.0/lib/4.3 初始化数据库并新建测试专门用户SQLCREATE TABLESPACE TB_BENCHMARKSQL DATAFILE TB_BENCHMARKSQL01.dbf SIZE 1024; SQLCREATE USER BENCHMARKSQL IDENTIFIED BY Dameng123 DEFAULT TABLESPACE TB_BENCHMARKSQL; SQLGRANT DBA TO BENCHMARKSQL;用户BENCHMARKSQL 密码Dameng1234.4 配置参数配置文件props.dm文件中必须配置的是1数据库链接信息2压测参数warehouses 被测仓库数数据规模terminals 并发数runMins 测试时间分钟注意terminals并发数不能大于 warehouses 仓库数量的十倍给集群配置服务名vi /etc/dm_svc.confTIME_ZONE(480)LANGUAGE(EN) # 自定义集群服务名填写所有主备节点地址GRP_DW(192.168.200.254:5236,192.168.201.47:5236)[GRP_DW]LOGIN_MODE(1) # 1仅连接主库压测主备切换场景必选SWITCH_TIME(3) # 节点遍历重试次数SWITCH_INTERVAL(500) # 探测间隔(ms)vi props.dm修改props.dm配置参数connjdbc:dm://GRP_DW?rwSeparate04.5 准备测试数据4.5.1 建表cd /home/TPCC/benchmarksql-5.0/run chmod ux *.sh ./runSQL.sh props.dm tableCreates #这里的tableCreates是在run目录下的sql.dm目录下的但不需要写路径会自动识别注意要看一下建表语句后面是否加了using partition group TPCC_GROUP by(s_w_id);这样的语法。因为partition group分区组是达梦 DPC 分布式集群专用语法。所以我们在这里用的话就会报错所以在执行建表语句要删除分区组语句我试了一下就把那些语句删掉就可以了。可以在linux里面用vi 进去删除。4.5.2 数据装载./runLoader.sh props.dm numWarehouses 10注意这里的仓库数与配置文件对应的参数值要一致4.5.3 执行测试#如果想要看测试日志的话就要 mkdir ./log ./runBenchmark.sh props.dm 21 | tee ./log/tpcc_run.log #如果不想看日志的话就直接执行 ./runBenchmark.sh props.dmtpmC代表每分钟内系统处理的新订单个数tpmTOTAL(TPS)代表每分钟内系统处理的事务总数Transaction Count事务总数参数关系如下tpmC ≈ tpmTOTAL * 45%Transaction Count tpmTOTAL * runMins后续可根据自己需求逐渐加大prod.dm配置文件中的并发度参数并进行主备集故障测试。如果还有其他问题欢迎到达梦社区来提问~社区地址https://eco.dameng.com