1. 环境准备
1.1 硬件要求
- CPU:Intel Pentium4或更高(建议Pentium 4 1.6G以上)
- 内存:至少256MB(建议512MB以上)
- 硬盘:5GB以上可用空间
- 网络:TCP/IP协议,主备服务器间网络通畅
1.2 软件要求
- 操作系统:Linux(glibc2.3+,内核2.6+)
- 系统盘:至少1GB剩余空间
- 数据库版本:DM8试用版
1.3 环境描述
- 操作系统:Oracle Linux Server release 7.6 (Maipo)
- 内存:两台4GB虚拟机
- 数据库软件:dm8_20250506_x86_rh7_64.zip
- 下载连接:https://eco.dameng.com/download/
1.3 系统配置优化
# 关闭SELinux vi /etc/selinux/config SELINUX=disabled setenforce 0 # 关闭防火墙 systemctl stop firewalld systemctl disable firewalld # 优化内核参数,根据机器内存优化这里每台机器4GB vi /etc/sysctl.conf # 添加以下内容: fs.file-max = 6815744 fs.aio-max-nr = 1048576 net.ipv4.ip_local_port_range = 1024 65535 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 vm.overcommit_memory = 2 vm.overcommit_ratio = 95 vm.swappiness = 0 vm.min_free_kbytes=51200 kernel.shmall = 470898 kernel.shmmax = 1928798208 kernel.shmmni = 4096 kernel.sem = 500 2048000 200 4096 vm.dirty_background_ratio = 3 vm.dirty_ratio = 20 vm.dirty_expire_centisecs = 500 vm.dirty_writeback_centisecs = 100 # 生效配置 sysctl -p # 调整资源限制 vi /etc/security/limits.conf * soft nproc 65536 * hard nproc 65536 * soft nofile 65536 * hard nofile 65536 #启用资源限制 # vi /etc/pam.d/login #session required pam_limits.so echo "session required pam_limits.so" >>/etc/pam.d/login # 禁用透明大页和NUMA vi /etc/default/grub GRUB_CMDLINE_LINUX="... numa=off transparent_hugepage=never" grub2-mkconfig -o /etc/grub2.cfg #根据磁盘类型调整。 SSD:磁盘调度算法推荐设置为noop或none HDD:磁盘调度算法推荐设置为deadline或mq-deadline 临时生效: #SSD echo "noop" >/sys/block/sd*/queue/scheduler #HDD echo "deadline" >/sys/block/sd*/queue/scheduler 永久生效: #SSD # vi /etc/default/grub GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=ol/root rd.lvm.lv=ol/swap rhgb quiet numa=off transparent_hugepage=never elevator=noop" #HDD # vi /etc/default/grub GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=ol/root rd.lvm.lv=ol/swap rhgb quiet numa=off transparent_hugepage=never elevator=deadline" 生效 grub2-mkconfig -o /etc/grub2.cfg 重启服务器 reboot复制
2. 数据库安装部署
2.1 创建用户和目录
groupadd -g 10001 dinstall useradd -u 10001 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba passwd dmdba mkdir -p /dm/dmdbms mkdir -p /dmdata/{data,backup,arch} chown dmdba.dinstall -R /dm/dmdbms chown dmdba.dinstall -R /dmdata复制
2.2 设置环境变量
su - dmdba vi ~/.bash_profile # 添加: export DM_HOME=/dm/dmdbms export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm/dmdbms/bin" export DM_INSTALL_TMPDIR=/tmp export PATH=$DM_HOME/bin:$PATH source ~/.bash_profile复制
2.3 安装数据库软件
# 解压安装包 unzip dm8_20250506_x86_rh7_64.zip mount -o loop dm8_20250506_x86_rh7_64.iso /mnt # 命令行安装 cd /mnt ./DMInstall.bin -i # 按提示完成安装 # root用户执行脚本 /dm/dmdbms/script/root/root_installer.sh复制
2.4 初始化数据库实例
cd /dm/dmdbms/bin ./dminit path=/dmdata/data/ db_name=DAMENG INSTANCE_NAME=DMSERVER PORT_NUM=32141 SYSDBA_PWD=Dameng123 SYSAUDITOR_PWD=Dameng123复制
3. 主备集群搭建(主备都需要以上章节操作)
3.1 主备搭建规划
目录规划
| 目录类型 | 路径 | 说明 |
|---|---|---|
| 数据库安装路径 | /dm/dmdbms/bin | 数据库软件安装位置,包含可执行文件 |
| 实例安装路径 | /dmdata/data/DAMENG | 数据库实例文件存放位置(包含dm.ini等配置文件) |
| 归档目录 | /dmdata/arch | 数据库归档日志存储位置 |
| 备份目录 | /dmdata/bak | 数据库备份文件存放位置 |
| 数据目录 | /dmdata/data | 数据库数据存储位置 |
端口规划
| 实例名 | PORT_NUM(数据库端口) | MAL_INST_DW_PORT(实例守护端口) | MAL_HOST(MAL通信IP) | MAL_PORT(MAL通信端口) | MAL_DW_PORT(守护监听端口) | MAL_INST_HOST(实例服务IP) |
|---|---|---|---|---|---|---|
| GRP1_RT_01 | 32141 | 33141 | 192.168.**.6 | 61141 | 52141 | 192.168.**.6 |
| GRP1_RT_02 | 32142 | 33142 | 192.168.**.7 | 61142 | 52142 | 192.168.**.7 |
3.2 主库备份并还原到备库
# 主库执行 mkdir /dmdata/fullbak ./dmrman backup database '/dmdata/data/DAMENG/dm.ini' full backupset '/dmdata/fullbak/DB_full_first' compressed level 1 parallel 8; # 拷贝到备库 scp -r /dmdata/fullbak/DB_full_first root@备库IP:/dmdata/ # 备库执行 chown -R dmdba:dinstall /dmdata/DB_full_first ./dmrman restore database '/dmdata/data/DAMENG/dm.ini' from backupset '/dmdata/DB_full_first' task thread 16; recover database '/dmdata/data/DAMENG/dm.ini' from backupset '/dmdata/DB_full_first'; recover database '/dmdata/data/DAMENG/dm.ini' update db_magic;复制
3.2 主库配置
# dm.ini INSTANCE_NAME = GRP1_RT_01 PORT_NUM = 32141 ALTER_MODE_STATUS = 0 ENABLE_OFFLINE_TS = 2 MAL_INI = 1 ARCH_INI = 1 # dmarch.ini [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME ARCH_DEST = GRP1_RT_02 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /dmdata/arch ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 51200 # dmmal.ini [MAL_INST1] MAL_INST_NAME = GRP1_RT_01 MAL_HOST = 192.168.**.6 MAL_PORT = 61141 MAL_INST_HOST = 192.168.31.6 MAL_INST_PORT = 32141 MAL_DW_PORT = 52141 MAL_INST_DW_PORT = 33141 [MAL_INST2] MAL_INST_NAME = GRP1_RT_02 MAL_HOST = 192.168.**.7 MAL_PORT = 61142 MAL_INST_HOST = 192.168.**.7 MAL_INST_PORT = 32142 MAL_DW_PORT = 52142 MAL_INST_DW_PORT = 33142 # 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 = /dmdata/data/DAMENG/dm.ini INST_AUTO_RESTART = 1 INST_STARTUP_CMD = /dm/dmdbms/bin/dmserver复制
3.3 备库配置
# dm.ini INSTANCE_NAME = GRP1_RT_02 PORT_NUM = 32142 ALTER_MODE_STATUS = 0 ENABLE_OFFLINE_TS = 2 MAL_INI = 1 ARCH_INI = 1 # dmarch.ini [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME ARCH_DEST = GRP1_RT_01 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /dmdata/arch ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 51200 # dmmal.ini [MAL_INST1] MAL_INST_NAME = GRP1_RT_01 MAL_HOST = 192.168.**.6 MAL_PORT = 61141 MAL_INST_HOST = 192.168.31.6 MAL_INST_PORT = 32141 MAL_DW_PORT = 52141 MAL_INST_DW_PORT = 33141 [MAL_INST2] MAL_INST_NAME = GRP1_RT_02 MAL_HOST = 192.168.**.7 MAL_PORT = 61142 MAL_INST_HOST = 192.168.**.7 MAL_INST_PORT = 32142 MAL_DW_PORT = 52142 MAL_INST_DW_PORT = 33142 # 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 = /dmdata/data/DAMENG/dm.ini INST_AUTO_RESTART = 1 INST_STARTUP_CMD = /dm/dmdbms/bin/dmserver复制
3.4 启动集群
# 主库 ./dmserver /dmdata/data/DAMENG/dm.ini mount ./disql SYSDBA/SYSDBA@localhost:32141 SP_SET_OGUID(453331); ALTER DATABASE PRIMARY; # 备库 ./dmserver /dmdata/data/DAMENG/dm.ini mount ./disql SYSDBA/SYSDBA@localhost:32142 SP_SET_OGUID(453331); ALTER DATABASE STANDBY; # 启动守护进程(主备都执行) ./dmwatcher /dmdata/data/DAMENG/dmwatcher.ini # 配置监视器(dmmonitor.ini) MON_DW_CONFIRM = 1 MON_LOG_PATH = /dmdata/monitor/log [GRP1] MON_INST_OGUID = 453331 MON_DW_IP = 192.168.**.6:52141 MON_DW_IP = 192.168.**.7:52142 # 启动监视器 ./dmmonitor /dmdata/monitor/dmmonitor.ini复制
4. 服务注册与管理
4.1 注册服务
# 主库 cd /dm/dmdbms/script/root ./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/DAMENG/dm.ini -p GRP1_RT_01 -m mount ./dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini -p GRP1_RT_01 # 备库 ./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/DAMENG/dm.ini -p GRP1_RT_02 -m mount ./dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini -p GRP1_RT_02 ./dm_service_installer.sh -t dmmonitor -monitor_ini /dmdata/monitor/dmmonitor.ini -p GRP1复制
4.2 服务启停顺序
# 启动顺序 systemctl start DmServiceGRP1_RT_01 # 主库实例 systemctl start DmServiceGRP1_RT_02 # 备库实例 systemctl start DmWatcherGRP1_RT_01 # 主库守护 systemctl start DmWatcherGRP1_RT_02 # 备库守护 systemctl start DmMonitorGRP1 # 监视器 # 停止顺序 systemctl stop DmMonitorGRP1 # 监视器 systemctl stop DmWatcherGRP1_RT_02 # 备库守护 systemctl stop DmWatcherGRP1_RT_01 # 主库守护 systemctl stop DmServiceGRP1_RT_02 # 备库实例 systemctl stop DmServiceGRP1_RT_01 # 主库实例复制
5. 集群状态检查
-- 检查实例状态 SELECT STATUS$, MODE$ FROM V$INSTANCE; -- 检查归档状态 SELECT ARCH_MODE FROM V$DATABASE; -- 检查主备同步 SELECT * FROM V$ARCH_STATUS;复制
6. 前台运行监视器确认状态
-- 进入数据库安装路径 cd /dm/dmdbms/bin -- 前台启动监视器(注意MON_DW_CONFIRM = 1的确认监视器只能开启一个) /dm/dmdbms/bin/dmmonitor path=/dmdata/data/monitor/dmmonitor.ini -- 检查主备同步 show复制
总结
本文档详细介绍了DM8主备集群的安装部署流程,包括:
- 环境准备与系统优化
- 数据库软件安装与实例初始化
- 主备集群配置与启动
- 服务注册与启停管理
通过以上步骤,可以搭建一个高可用的DM8主备集群环境。实际部署中需要根据具体硬件配置和业务需求调整参数,建议在测试环境验证后再进行生产部署。




