达梦本机主备的安装及报错解决 📅 2026/8/2 4:21:40 本机主备是在单台服务器上部署两个独立的数据库实例通过端口错开、目录分离、独立进程等方式实现逻辑层面的主备隔离使二者能够完成数据同步与故障自动切换。但由于两个实例共享同一套物理资源该架构仅能应对数据库进程或实例级别的故障无法防范服务器硬件损坏、操作系统崩溃、磁盘故障等底层风险。一、环境信息与规划1、基本信息操作系统版本为银河麒麟高级服务器操作系统V10达梦数据库版本为DM8 V8 64位版本dm8_20260428_x86_kylin10_sp3_64虚拟化平台Oracle VM VirtualBox7.1.6远程管理工具MobaXterm数据库管理工具达梦数据库管理工具2、网络规划3、端口规划4、实例路径规划5、归档文件路径规划二、新建虚拟机dm1111、在VirtualBox中新建虚拟机命名为dm111放在D盘使用麒麟操作系统ISO镜像网络连接方式改为Host-Only显示设置放大至250%。启动虚拟机选择中文磁盘分区默认软件选择最小安装。3、网络和主机名中打开以太网开关配置IPv4ip设置成192.168.56.111子网掩码设置成255.255.255.0网关设置成192.168.56.1勾选需要IPv4地址完成这个连接主机名设置为dm111后应用。4、设置root密码后进行安装完成后重启。5、登录root用户并配置网卡自动启动。即vi /etc/sysconfig/network-scripts/ifcfg-enp0s3将ONBOOTno 改成 ONBOOTyes三、系统环境配置1、挂载镜像将虚拟机的光驱从麒麟系统替换成达梦安装包。mount /dev/cdrom /media2、创建用户cd /media/groupadd dinstalluseradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdbapasswd dmdba3、修改存放目录后进行安装export DM_INSTALL_TMPDIR/home./DMInstall.bin -i选择简体中文不输入key时区21典型安装默认路径4、配置环境变量su - dmdbavi .bash_profile在里面添加export PATH$PATH:$DM_HOME/binsource .bash_profile5、给dmdba权限并创建data目录cd /optmkdir datachown -R dmdba:dinstall data/su - dmdba6、关闭防火墙sudo systemctl stop firewalldsudo systemctl disable firewalldsudo systemctl status firewalld四、本机主备集群配置1、创建数据目录并赋权mkdir -p /opt/data/dmdw01mkdir -p /opt/data/dmdw02mkdir -p /opt/data/arch01mkdir -p /opt/data/arch02chown -R dmdba:dinstall /opt/data/2、初始化主库实例 dmdw01端口 5236su - dmdbadminit path/opt/data/dmdw01 db_namedmdw instance_namedmdw01 port_num5236 sysdba_pwdZhangxinyu-0221 sysauditor_pwdZhangxinyu-0221启动实例dmserver /opt/data/dmdw01/dmdw/dm.iniSYSTEM IS READY后退出3、初始化备库实例 dmdw02端口 5237dminit path/opt/data/dmdw02 db_namedmdw instance_namedmdw02 port_num5237 sysdba_pwdZhangxinyu-0221 sysauditor_pwdZhangxinyu-0221启动实例dmserver /opt/data/dmdw02/dmdw/dm.iniSYSTEM IS READY后退出主库备份与备库还原创建备份目录并赋权su - rootmkdir -p /opt/dbfull01chown -R dmdba:dinstall /opt/dbfull01su – dmdba后进行使用dmrman工具进行主库备份dmrmanbackup database /opt/data/dmdw01/dmdw/dm.ini backupset /opt/dbfull01;exit退出使用dmrman工具进行备库还原dmrmanrestore database /opt/data/dmdw02/dmdw/dm.ini from backupset /opt/dbfull01;recover database /opt/data/dmdw02/dmdw/dm.ini from backupset /opt/dbfull01;recover database /opt/data/dmdw02/dmdw/dm.ini update db_magic;exit退出5、修改dmdw01和dmdw02的dm.inivi /opt/data/dmdw01/dmdw/dm.ini6、主备机上都创建dmarch.ini主库vi /opt/data/dmdw01/dmdw/dmarch.ini写入[ARCHIVE_REALTIME]ARCH_TYPE REALTIMEARCH_DEST dmdw02[ARCHIVE_LOCAL1]ARCH_TYPE LOCALARCH_DEST /opt/data/arch01ARCH_FILE_SIZE 1024ARCH_SPACE_LIMIT 51200备库vi /opt/data/dmdw02/dmdw/dmarch.ini写入[ARCHIVE_REALTIME]ARCH_TYPE REALTIMEARCH_DEST dmdw01[ARCHIVE_LOCAL1]ARCH_TYPE LOCALARCH_DEST /opt/data/arch02ARCH_FILE_SIZE 1024ARCH_SPACE_LIMIT 512007、主备机上都创建 dmmal.ini注意单节点主备必须使用真实网卡 IP192.168.56.111不能使用 127.0.0.1否则 MAL 初始化会失败。主库vi /opt/data/dmdw01/dmdw/dmmal.ini备库vi /opt/data/dmdw02/dmdw/dmmal.ini都写入MAL_CHECK_INTERVAL 5MAL_CONN_FAIL_INTERVAL 5[MAL_INST1]MAL_INST_NAME dmdw01MAL_HOST 192.168.56.111MAL_PORT 61141MAL_INST_HOST 192.168.56.111MAL_INST_PORT 5236MAL_DW_PORT 52141MAL_INST_DW_PORT 33141[MAL_INST2]MAL_INST_NAME dmdw02MAL_HOST 192.168.56.111MAL_PORT 61142MAL_INST_HOST 192.168.56.111MAL_INST_PORT 5237MAL_DW_PORT 52142MAL_INST_DW_PORT 331428、主备机上都创建dmwatcher.ini主库vi /opt/data/dmdw01/dmdw/dmwatcher.ini后写入[GRP1]DW_TYPE GLOBALDW_MODE AUTODW_ERROR_TIME 10INST_RECOVER_TIME 60INST_ERROR_TIME 10INST_OGUID 453331INST_INI /opt/data/dmdw01/dmdw/dm.iniINST_AUTO_RESTART 1INST_STARTUP_CMD /opt/dmdbms/bin/dmserver备库vi /opt/data/dmdw02/dmdw/dmwatcher.ini后写入[GRP1]DW_TYPE GLOBALDW_MODE AUTODW_ERROR_TIME 10INST_RECOVER_TIME 60INST_ERROR_TIME 10INST_OGUID 453331INST_INI /opt/data/dmdw02/dmdw/dm.iniINST_AUTO_RESTART 1INST_STARTUP_CMD /opt/dmdbms/bin/dmserver9、启动主备集群分别开启多个终端执行以下命令(1)在终端1上启动主库为 mount 状态dmserver /opt/data/dmdw01/dmdw/dm.ini mount(2)在终端2上登录主库设置 primarydisql sysdba/Zhangxinyu-0221192.168.56.111:5236SQL sp_set_oguid(453331);SQL alter database primary;SQL exit(3)在终端3上启动备库为 mount 状态dmserver /opt/data/dmdw02/dmdw/dm.ini mount(4)在终端4上登录备库设置 standbydisql sysdba/Zhangxinyu-0221192.168.56.111:5237SQL sp_set_oguid(453331);SQL alter database standby;SQL exit(5)在终端5上启动主库守护进程主库dmwatcher /opt/data/dmdw01/dmdw/dmwatcher.ini(6)在终端6上启动备库守护进程备库dmwatcher /opt/data/dmdw02/dmdw/dmwatcher.ini守护进程启动后主备库会自动 open10、验证主备同步连接主库disql sysdba/Zhangxinyu-0221192.168.56.111:5236SQL select * from v$instance;应该显示 MODE PRIMARY, STATUS OPEN连接备库disql sysdba/Zhangxinyu-0221192.168.56.111:5237SQL select * from v$instance;应该显示 MODE STANDBY, STATUS OPEN11、在主库上配置监视器vi /opt/data/dmdw01/dmmonitor.ini后写入MON_DW_CONFIRM 1MON_LOG_PATH /opt/data/logMON_LOG_INTERVAL 60MON_LOG_FILE_SIZE 32MON_LOG_SPACE_LIMIT 0[GRP1]MON_INST_OGUID 453331MON_DW_IP 192.168.56.111:52141MON_DW_IP 192.168.56.111:5214212、注册主备库系统服务可选先进入到root用户cd /opt/dmdbms/script/root/注册主库服务./dm_service_installer.sh -t dmserver -p dmdw01 -dm_ini /opt/data/dmdw01/dmdw/dm.ini./dm_service_installer.sh -t dmwatcher -p dmdw01 -watcher_ini /opt/data/dmdw01/dmdw/dmwatcher.ini注册备库服务./dm_service_installer.sh -t dmserver -p dmdw02 -dm_ini /opt/data/dmdw02/dmdw/dm.ini./dm_service_installer.sh -t dmwatcher -p dmdw02 -watcher_ini /opt/data/dmdw02/dmdw/dmwatcher.ini13、启动监视器su - dmdbadmmonitor /opt/data/dmdw01/dmmonitor.inishow可查看主备状态、OGUID、守护进程状态等信息。五、单节点主备与双节点主备配置对比本机主备与双机主备的核心差异在于故障隔离的层级不同前者仅在数据库实例层面实现主备分离两个实例共享同一台服务器的CPU、内存、磁盘及操作系统因此只能应对数据库进程崩溃等软件级故障一旦硬件损坏或系统宕机则整体失效后者则在物理机器层面完全隔离主备库分属独立服务器各自拥有专属资源既能处理软件故障也能抵御单台机器断电、硬盘损坏、主板故障等硬件级风险是真正具备容灾能力的生产级方案。六、常见问题1、备份时提示 “No space left on device”磁盘空间不足需要扩容虚拟机磁盘或者清理无用文件当清理完后还是没用就需要扩容虚拟机磁盘此处采用的方法是直接扩大现有磁盘(1)关闭dm111虚拟机必须关机才能扩容(2)在虚拟硬盘页面直接拉大磁盘(3)开启虚拟机dm111查看当前分区fdisk -llsblk(4)扩大sda2分区fdisk /dev/sda后依次输入结束后执行partprobe /dev/sdapvresize /dev/sda2lvextend -l 100%FREE /dev/mapper/klas-rootxfs_growfs /dev/mapper/klas-root(5)df -h后可以看到扩容成功2、systemctl 启动服务失败检查是否已有手动启动的进程占用端口如果有则需要先kill掉再启动。ps -ef | grep -E dmserver|dmwatcherkill -9 [进程]3、备库在磁盘空间不足、扩大磁盘还原后启动失败提示需要再次update db_magic即在dmrman中执行recover database 备库路径 update db_magic;