注册
DM8主备集群搭建
专栏/技术分享/ 文章详情 /

DM8主备集群搭建

。。 2025/09/26 148 0 0
摘要

实验环境

  • 操作系统: CentOS7(glibc2.17+)
  • 存储空间: 2GB以上剩余空间

操作步骤

前置操作

  1. 配置用户及用户组
    创建主组群dinstall,dmdba用户
    groupadd dinstall #创建主组群
    useradd  -g dinstall -m -d /home/dmdba -s /bin/bash  dmdba #创建用户
    passwd dmdba #设置密码
    
    
  2. 资源限制
    在/etc/security/limits.conf添加上以下内容
    dmdba soft core unlimited
    dmdba hard core unlimited
    dmdba soft nofile 65536
    dmdba hard nofile 65536
    dmdba soft nproc  65536
    dmdba hard nproc  65536
    dmdba soft stack  65536
    dmdba hard stack  65536
    
    在/etc/systemd/system.conf进行修改
    DefaultLimitNOFILE=65535
    
  3. 安装并修改环境变量(参考安装手册即可)
    mount dm8_20250506_x86_rh7_64.iso /mnt/cdrom
    cd /mnt/cdrom
    su dmdba
    ./DMInstall.bin -i #静默安装,跟着选项按照自己的需求安装即可
    /dm/dmdbms/script/root/root_installer.sh # root用户执行脚本
    
    dm8安装路径目前为/home/dmdba/dmdbms,环境变量配置/home/dmdba/.bash_profile修改如下
    export DM_HOME=/home/dmdma/dmdbms    -- 根据安装目录修改
    export PATH=$PATH:$DM_HOME/bin
    export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DM_HOME/bin"
    
    
  4. 修改磁盘调度算法
    检查磁盘调度算法
    cat /sys/block/sd*/queue/scheduler
    
    修改磁盘调度算法
    echo deadline > /sys/block/sd*/queue/scheduler #将这条命令设置到/etc/rc.local中
    
  5. 关闭操作系统防火墙及selinux
    systemctl stop firewalld.service
    systemctl disable firewalld.service
    vi /etc/selinux/config #这一步需要将SELINUX=enable改为SELINUX=disabled
    
    上述操作完成后执行setenforce 0,然后执行getenforce,若输出Permissive操作则成功
  6. 修改RemoveIPC参数
    vi /etc/systemd/logind.conf #这一步需要设置RemoveIPC参数为no
    
    保存后重启服务
    systemctl daemon-reload
    systemctl restart systemd-logind
    
  7. 检查ntp是否配置及nfs是否安装ntp
    配置ntp同步
    vi /etc/chrony.conf
    
    在/etc/chrony.conf中添加以下内容
    server 10.10.47.245 iburst
    driftfile /var/lib/chrony/drift
    makestep 1.0 3
    

集群搭建

  1. 目录规划和端口规划
    目录规划

    数据库安装目录 目录
    数据库安装目录 /home/dmdba/dmdbms
    归档目录 /home/dmdba/amarch
    SQL日志目录 /home/dmdba/sqllog
    备份目录 /home/dmdba/dmbak
    数据目录 /home/dmdba/data
    NMON目录 /home/dmdba/nmon

    端口规划

    实例名 MAL_HOST MAL_PORT MAL_INST_HOST MAL_INST_PORT
    DBSERVER01 192.168.4.5 61141 192.168.4.5 5237
    DBSERVER02 192.168.4.6 61142 192.168.4.6 5237
  2. 主、备库实例初始化
    初始化

     ./dminit path=/home/dmdba/data DB_NAME=DMDB PAGE_SIZE=32 LOG_SIZE=2048 CASE_SENSITIVE=0 CHARSET=0 PORT_NUM=5237   RLOG_GEN_FOR_HUGE=0 SYSAUDITOR_PWD=Dmglydmm@2025 SYSDBA_PWD=Dmglydmm@2025 #安全版数据库还有SYSSSO_PWD=Dmglydmm@2025需要设置
    

    启动dm

     ./dmserver /home/dmdba/data/DMDB/dm.ini mount
    

    拉起数据库

     ./disql SYSDBA/'"Dmglydmm@2025"'@127.0.0.1:5237
     select * from v$version; #查询数据库版本
    
  3. 主库脱机备份
    关闭数据库实例后启动ap服务并备份

     cd /home/dmdba/dmdbms/bin
     ./DmAPService start #启动ap服务
     ./dmrman
    

    在RMAN>下执行以下内容

     backup database '/home/dmdba/data/DMDB/dm.ini' full backupset '/home/dmdba/dmbak/db_full_日期';
     exit;
     scp -P 10022 -r /home/dmdba/dmbak/db_full_日期 dmdba@备机ip:/home/dmdba/dmbak/  #记得先开放备机10022端口(修改/etc/ssh/sshd_config并重启ssh服务)
    
  4. 备库脱机还原
    备库启动ap服务

     ./DmAPService start
     ./dmrman
    

    在RMAN>下执行以下内容

     check backupset '/home/dmdba/dmbak/db_full_日期';
     restore database '/home/dmdba/data/DMDB/dm.ini' from backupset '/home/dmdba/dmbak/db_full_日期';
     recover database '/home/dmdba/data/DMDB/dm.ini' from backupset '/home/dmdba/dmbak/db_full_日期';
     recover database '/home/dmdba/data/DMDB/dm.ini' update db_magic;
    

    备注: 应该在完成主库脱机备份和备库脱机还原后主备库才能通过实时归档同步数据,集群状态恢复正常。

  5. 主库核心文件修改

     /home/dmdba/data/DMDB/dm.ini
     INSTANCE_NAME =DBSERVER01
     MAL_INI = 1
     ARCH_INI = 1
     ALTER_MODE_STATUS = 0
     ENABLE_OFFLINE_TS = 2
     
     /home/dmdba/data/DMDB/dmarch.ini
     [ARCHIVE_REALTIME]
     ARCH_TYPE = REALTIME #实时归档类型
     ARCH_DEST = DBSERVER02 #实时归档目标实例名
     [ARCHIVE_LOCAL1]
     ARCH_TYPE = LOCAL #本地归档类型
     ARCH_DEST =/home/dmdba/dmarch #本地归档文件存放路径
     ARCH_FILE_SIZE = 512 #单位 Mb, 本地单个归档文件最大值
     ARCH_SPACE_LIMIT = 81920 #单位 Mb, 0 表示无限制,范围 1024~2147483647M
     
     /home/dmdba/data/DMDB/dmmal.ini
     MAL_CHECK_INTERVAL = 5 	#MAL 链路检测时间间隔
     MAL_CONN_FAIL_INTERVAL = 5 	#判定 MAL 链路断开的时间
     [MAL_INST1]
     MAL_INST_NAME = DBSERVER01	#实例名,和 dm.ini 中的 INSTANCE_NAME 一致
     MAL_HOST = 192.168.4.5 		#MAL 系统监听 TCP 连接的 IP 地址
     MAL_PORT = 61141 			#MAL 系统监听 TCP 连接的端口
     MAL_INST_HOST = 192.168.4.5 		#实例的对外服务 IP 地址
     MAL_INST_PORT = 5237			#实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
     MAL_DW_PORT = 52141 			#实例本地的守护进程监听 TCP 连接的端口
     MAL_INST_DW_PORT = 33141 		#实例监听守护进程 TCP 连接的端口
     [MAL_INST2]
     MAL_INST_NAME = DBSERVER02
     MAL_HOST =192.168.4.6
     MAL_PORT = 61142
     MAL_INST_HOST = 192.168.4.6
     MAL_INST_PORT = 5237
     MAL_DW_PORT = 52141
     MAL_INST_DW_PORT = 33141
     
     /home/dmdba/data/DMDB/dmwatcher.ini
     [GRP1]
     DW_TYPE = GLOBAL   		#全局守护类型
     DW_MODE = MANUAL 		#手动切换模式
     DW_ERROR_TIME = 120 		#远程守护进程故障认定时间
     INST_RECOVER_TIME = 60 	#主库守护进程启动恢复的间隔时间
     INST_ERROR_TIME = 120 	#本地实例故障认定时间
     INST_OGUID = 453331 		#守护系统唯一 OGUID 值
     INST_INI = /home/dmdba/data/DMDB/dm.ini 	#dm.ini 配置文件路径
     INST_AUTO_RESTART = 0 		#关闭实例的自动启动功能
     INST_STARTUP_CMD = /home/dmdaba/dmdbms/bin/dmserver 	#命令行方式启动
     RLOG_SEND_THRESHOLD = 0 	#指定主库发送日志到备库的时间阈值,默认关闭
     RLOG_APPLY_THRESHOLD = 0 	#指定备库重演日志的时间阈值,默认关闭
    
  6. 备库核心文件修改

     /home/dmdba/data/DMDB/dm.ini
     INSTANCE_NAME =DBSERVER02
     MAL_INI = 1
     ARCH_INI = 1
     ALTER_MODE_STATUS = 0
     ENABLE_OFFLINE_TS = 2
     
     /home/dmdba/data/DMDB/dmarch.ini
     [ARCHIVE_REALTIME]
     ARCH_TYPE = REALTIME #实时归档类型
     ARCH_DEST = DBSERVER01 #实时归档目标实例名
     [ARCHIVE_LOCAL1]
     ARCH_TYPE = LOCAL #本地归档类型
     ARCH_DEST =/home/dmdba/dmarch #本地归档文件存放路径
     ARCH_FILE_SIZE = 512 #单位 Mb, 本地单个归档文件最大值
     ARCH_SPACE_LIMIT = 81920 #单位 Mb, 0 表示无限制,范围 1024~2147483647M
     
     /home/dmdba/data/DMDB/dmmal.ini
     MAL_CHECK_INTERVAL = 5 	#MAL 链路检测时间间隔
     MAL_CONN_FAIL_INTERVAL = 5 	#判定 MAL 链路断开的时间
     [MAL_INST1]
     MAL_INST_NAME = DBSERVER01	#实例名,和 dm.ini 中的 INSTANCE_NAME 一致
     MAL_HOST = 192.168.4.5 		#MAL 系统监听 TCP 连接的 IP 地址
     MAL_PORT = 61141 			#MAL 系统监听 TCP 连接的端口
     MAL_INST_HOST = 192.168.4.5 		#实例的对外服务 IP 地址
     MAL_INST_PORT = 5237			#实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
     MAL_DW_PORT = 52141 			#实例本地的守护进程监听 TCP 连接的端口
     MAL_INST_DW_PORT = 33141 		#实例监听守护进程 TCP 连接的端口
     [MAL_INST2]
     MAL_INST_NAME = DBSERVER02
     MAL_HOST =192.168.4.6
     MAL_PORT = 61142
     MAL_INST_HOST = 192.168.4.6
     MAL_INST_PORT = 5237
     MAL_DW_PORT = 52141
     MAL_INST_DW_PORT = 33141
     
     /home/dmdba/data/DMDB/dmwatcher.ini
     [GRP1]
     DW_TYPE = GLOBAL   		#全局守护类型
     DW_MODE = MANUAL 		#手动切换模式
     DW_ERROR_TIME = 120 		#远程守护进程故障认定时间
     INST_RECOVER_TIME = 60 	#主库守护进程启动恢复的间隔时间
     INST_ERROR_TIME = 120 	#本地实例故障认定时间
     INST_OGUID = 453331 		#守护系统唯一 OGUID 值
     INST_INI = /home/dmdba/data/DMDB/dm.ini 	#dm.ini 配置文件路径
     INST_AUTO_RESTART = 0 		#关闭实例的自动启动功能
     INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver 	#命令行方式启动
     RLOG_SEND_THRESHOLD = 0 	#指定主库发送日志到备库的时间阈值,默认关闭
     RLOG_APPLY_THRESHOLD = 0 	#指定备库重演日志的时间阈值,默认关闭
    
  7. 主备模式修改
    主备依次执行以下内容

     主库:  
     ./dmserver /home/dmdba/data/DMDB/dm.ini mount #启动数据库
     ./disql SYSDBA/'"Dmglydmm@2025"'@127.0.0.1:5237
     SQL> sp_set_para_value(1,'ALTER_MODE_STATUS',1);
     SQL> sp_set_oguid(453331); 
     SQL> alter database primary; 
     SQL> sp_set_para_value(1,'ALTER_MODE_STATUS',0);
     备库:
     ./dmserver /home/dmdba/data/DMDB/dm.ini mount #启动数据库
     ./disql SYSDBA/'"Dmglydmm@2025"'@127.0.0.1:5237
     SQL> sp_set_para_value(1,'ALTER_MODE_STATUS',1);
     SQL> sp_set_oguid(453331); 
     SQL> alter database standby;
     SQL> sp_set_para_value(1,'ALTER_MODE_STATUS',0);
    
  8. 监控器配置

     /home/dmdba/dmdbms/bin/dmmonitor.ini
     MON_DW_CONFIRM    = 0   		#确认监视器模式
     MON_LOG_PATH    = /home/dmdba/dmdbms/log 		#监视器日志文件存放路径
     MON_LOG_INTERVAL  = 60 			#每隔 60 s 定时记录系统信息到日志文件
     MON_LOG_FILE_SIZE   = 32			#每个日志文件最大 32 MB
     MON_LOG_SPACE_LIMIT  = 0 			#不限定日志文件总占用空间
     [GRP1] 
     MON_INST_OGUID    = 453331 			#组 GRP1 的唯一 OGUID 值
     #以下配置为监视器到组 GRP_RW 的守护进程的连接信息,以“IP:PORT”的形式配置
     #IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
     MON_DW_IP     = 192.168.4.5:52141
     MON_DW_IP     = 192.168.4.6:52141
    
  9. 服务启停并查看效果
    启动顺序为:主库实例->备库实例->主库守护->备库守护->监视器
    停止顺序为: 监视器->备库守护->主库守护->备库实例->主库实例

 主库:
 ./dmserver /home/dmdba/data/DMDB/dm.ini mount
 ./dmwatcher /home/dmdba/data/DMDB/dmwatcher.ini
 备库:
 ./dmserver /home/dmdba/data/DMDB/dm.ini mount
 ./dmwatcher /home/dmdba/data/DMDB/dmwatcher.ini
 监视器:
 ./dmmonitor /home/dmdba/dmdbms/bin/dmmonitor.ini
 show #检查主备同步
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服