用于传输事物日志,确保日志传输的实时性和网络的可靠性 。传输的日志记录主库的所有数据修改操作,通过MAL实时传输到备库,备库解析并应用到主库传输日志,保证数据一致性,而持久化日志用于备库延迟同步或数据恢复。 心跳检测通过MAL定期发送心跳检测,检测节点存活状态,超时未响应触法备库升级主(依赖dmwatcher)
MAL_DW_PORT=7436(MAL 监听端口)
INST_PORT=5236 (数据库实例通信端口)
监控主备实例的运行状态(如进程存活、网络连通性) 触法自动故障切换(当主库故障时,提供备库为新主库) 控制集群模式(自动或手动切换)
提供集群状态的可视化监控(如主备切换、日志同步进去) 支持手动执行主备切换、故障恢复等操作
主库接收写请求,生成Redo log。 MAL系统将日志实时传输到备库。 备库通过Redo apply应用日志,保持数据同步 dmwatcher监控主备状态,异常时触法切换 dmmonitor提供监控和管理入口
达梦数据库单机部署步骤
乔亚博,公众号:在异世界相逢达梦数据库无图形化安装部署
[dmdba@BBBB cdrom]$ cd /data/dmserver/app/bin
[dmdba@BBBB bin]$ ./dminit path=/data/dmserver/data/ CHARSET=1 CASE_SENSITIVE=N EXTENT_SIZE=16 PAGE_SIZE=32 SYSDBA_PWD=Passw0rd@DM SYSAUDITOR_PWD=Passw0rd@DM INSTANCE_NAME=dmrw1
[dmdba@BBBB cdrom]$ cd /data/dmserver/app/bin
[dmdba@BBBB bin]$ ./dminit path=/data/dmserver/data/ CHARSET=1 CASE_SENSITIVE=N EXTENT_SIZE=16 PAGE_SIZE=32 SYSDBA_PWD=Passw0rd@DM SYSAUDITOR_PWD=Passw0rd@DM INSTANCE_NAME=dmrw2
[root@AAAA bin]# cd /data/dmserver/app/script/root/
注册服务,如下所示:
[root@AAAA root]# ./dm_service_installer.sh -t dmserver -dm_ini /data/dmserver/data/DAMENG/dm.ini -p DMSERVER
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER.service → /usr/lib/systemd/system/DmServiceDMSERVER.service.
创建服务(DmServiceDMSERVER)完成
注意:dm.in文件位置可以通过find查找位置
[dmdba@AAAA ~]$ cd /data/dmserver/app/bin/service_template/
[dmdba@AAAA service_template]$ /data/dmserver/app/bin/service_template/DmAPService start
注意:从节点也要执行上面的步骤,确保DMAP服务启动
[dmdba/data/dmserver/app/bin service_template]$ cd
[dmdba./dmrman bin]$
dmrman V8
RMAN> backup database '/data/dmserver/data/DAMENG/dm.ini' backupset '/data/dmserver/backup';
backup database '/data/dmserver/data/DAMENG/dm.ini' backupset '/data/dmserver/backup';
file dm.key not found, use default license!
Processing backupset /data/dmserver/backup
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:04][Remaining:00:00:00]
backup successfully!
time used: 00:00:05.295
RMAN>
[dmdba@AAAA bin]$ scp -r /data/dmserver/backup/* 192.168.5.137:/data/dmserver/backup
dmdba@192.168.5.137's password:
backup.bak 100% 28MB 298.4MB/s 00:00
backup.meta 100% 110KB 41.4MB/s 00:00
在主机BBBB上,使用dmrman工具还原备份文件
[dmdba/data/dmserver/app/bin service_template]$ cd
[dmdba./dmrman bin]$
dmrman V8
RMAN> restore database '/data/dmserver/data/DAMENG/dm.ini' from backupset '/data/dmserver/backup';
restore database '/data/dmserver/data/DAMENG/dm.ini' from backupset '/data/dmserver/backup';
file dm.key not found, use default license!
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
restore successfully.
time used: 00:00:02.451
RMAN>
完成后执行recover(图中报错显示为备份期间没有日志产生,可忽略):
RMAN> recover database '/data/dmserver/data/DAMENG/dm.ini' from backupset '/data/dmserver/backup';
recover database '/data/dmserver/data/DAMENG/dm.ini' from backupset '/data/dmserver/backup';
==============================Error Stack==============================
DM[603]:备份集[/data/dmserver/backup]备份过程中未产生日志
=======================================================================
recover successfully!
time used: 288.652(ms)
最后执行recover update db_magic。
'/data/dmserver/data/DAMENG/dm.ini' update db_magic; recover database
3、修改dm.ini参数
INSTANCE_NAME = DMRW1
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
INSTANCE_NAME = DMRW2
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
[dmdba@AAAA bin]$ cat /data/dmserver/data/DAMENG/dmarch.ini
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMRW2 #实时归档目标实例名(主库则填写备库实例名)
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /data/dmserver/arch #本地归档存放路径
ARCH_FILE_SIZE = 2048 #单位MB,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 102400 #单位MB。0标识无限制,范围1024~4294967294MB
备库:
[dmdba@BBBB bin]$ cat /data/dmserver/data/DAMENG/dmarch.ini
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMRW1 #实时归档目标实例名(主库则填写备库实例名)
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /data/dmserver/arch #本地归档存放路径
ARCH_FILE_SIZE = 2048 #单位MB,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 102400 #单位MB。0标识无限制,范围1024~4294967294MB
5、配置MAL配置文件 dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 15 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DMRW1 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.5.136 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 7336 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.5.136 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 7436 #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 7536
[MAL_INST2]
MAL_INST_NAME = DMRW2
MAL_HOST = 192.168.5.137
MAL_PORT = 7336
MAL_INST_HOST = 192.168.5.137
MAL_INST_PORT = 5236
MAL_DW_PORT = 7436
MAL_INST_DW_PORT = 7536
6、配置守护进程配置文件 dmwatcher.ini
[GRP_DW]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #自动切换模式
DW_ERROR_TIME = 30 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一 OGUID 值
INST_INI = /data/dmserver/data/DAMENG/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /data/dmserver/app/bin/DmServiceDMSERVER start #命令行方式启动
使用 root 用户,到数据库安装目录的script/root下。
注册守护进程服务(主备库都执行)。
./dm_service_installer.sh -t dmwatcher -p DW -watcher_ini /dmdata/dmdb/dmwatcher.ini
[root./dm_service_installer.sh -t dmmonitor -p DW -monitor_ini /data/dmserver/data/DAMENG/dmmonitor.ini root]#
Created symlink /etc/systemd/system/multi-user.target.wants/DmMonitorServiceDW.service → /usr/lib/systemd/system/DmMonitorServiceDW.service.
创建服务(DmMonitorServiceDW)完成
[rootDmMonitorServiceDW.service root]# systemctl status
● DmMonitorServiceDW.service - DM Data Watch Monitor Service(DmMonitorServiceDW).
Loaded: loaded (/usr/lib/systemd/system/DmMonitorServiceDW.service; enabled; vendor preset: disabled)
Active: inactive (dead)
[rootDmMonitorServiceDW.service root]# systemctl start
使用 dmdba 用户,执行以下命令(主备库都执行):
[dmdba@AAAA bin]$ ./dmserver /data/dmserver/data/DAMENG/dm.ini mount
[dmdba@AAAA bin]$ ./disql SYSDBA
密码:
服务器[LOCALHOST:5236]:处于普通配置状态
登录使用时间 : 3.426(ms)
disql V8
SQL>
主备库都修改 oguid,执行以下命令
sp_set_oguid(453331);
DMSQL 过程已成功完成
已用时间: 1.527(毫秒). 执行号:1.
主库dmdb01上修改数据库模式为 primary,执行以下命令:
SQL> alter database primary;
操作已执行
已用时间: 5.289(毫秒). 执行号:0.
SQL> alter database standby;
操作已执行
已用时间: 4.679(毫秒). 执行号:0.
启动守护进程
dmdba 用户下,到数据库安装目录的 bin 下执行以下命令(主备库都执行):
[dmdba@AAAA bin]$ ./dmwatcher /data/dmserver/data/DAMENG/dmwatcher.ini
出现
DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY
守护进程启动后,会将 Mount 的实例 Open。这里是前台启动的方式,因为我们前面注册了服务名称,所以就没必要前台启动,直接配好主从的主备关系后crtl+C退出两个实例的前台mount启动,然后调整实例启动服务脚本里的启动状态,依次按顺序启动主、备库实例、然后再主、备库的守护DmWatcher服务。
9、配置监视器
新建确认监视器配置文件 dmmonitor.ini,执行以下命令:
MON_DW_CONFIRM = 1 #确认监视器模式(0非确认监视器)
MON_LOG_PATH = /data/dmserver/jsq #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔60秒定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 200 #日志文件最大32M
MON_LOG_SPACE_LIMIT = 1024 #不限定日志文件总占用空间
[GRP_DW]
MON_INST_OGUID = 453331 #组GRP1的唯一OGUID值
MON_DW_IP = 192.168.5.136:7436
MON_DW_IP = 192.168.5.137:7436
disql 客户端验证
到实例路径下
[dmdba@BBBB dmserver]$ vim /data/dmserver/data/DAMENG/sqllog.ini
BUF_TOTAL_SIZE = 10240
BUF_SIZE = 1024
BUF_KEEP_CNT = 6
[SLOG_ALL]
FILE_PATH = ../log
PART_STOR = 1
SWITCH_MODE = 2
SWITCH_LIMIT = 512
ASYNC_FLUSH = 1
FILE_NUM = 5
ITEMS = 0
SQL_TRACE_MASK = 2:3:25
MIN_EXEC_TIME = 1500
USER_MODE = 0
USERS =
create table test(id int);
insert into test values (1);
commit;
更改/data/dmserver/data/DAMENG/dmwatcher.ini
将DW_MODE = MANUAL 更改为DW_MODE = AUTO
主备需要将上面的数据库全部重启一下,使用以下两个命令
systemctl stop DmServiceDMSERVER.service
systemctl stop DmWatcherServiceDW.service
之后启动主和备
systemctl start DmServiceDMSERVER.service
systemctl start DmWatcherServiceDW.service
[ ]
[ ]
switchover GRP1(组名).GRP1_RT_02(要切换成主库的备库实例名)
switchover GRP_DW.DMRW1
客户端主机上需要配置 dm_svc.conf 文件(未安装 DM 数据库的机器新建即可),文件路径:
32 位的 DM 安装在 Win32 操作平台下,此文件位于 %SystemRoot%\system32 目录;
64 位的 DM 安装在 Win64 操作平台下,此文件位于 %SystemRoot%\system32 目录;
32 位的 DM 安装在 Win64 操作平台下,此文件位于 %SystemRoot%\SysWOW64 目录;
在 Linux 平台下,此文件位于/etc/dm_svc.conf目录。
文件内容:
#全局配置区
DMDW=(192.168.5.136:5236,192.168.5.137:5236)
TIME_ZONE=(+480) #表示+8:00 时区
LOGIN_ENCRYPT=(0)
DIRECT=(Y)
#服务配置区
[DMDW]
LOGIN_MODE=(1) #只连主库
客户端程序连接数据库时,需要指定 IP 端口处替换为服务名即可,例如:disql SYSDBA/‘“password”’@DMDW。jdbc的url为:jdbc:dm://DMDW
当修改了 dm_svc.conf 内容后,需要重启客户端程序,修改的配置才能生效。

优网科技秉承"专业团队、品质服务" 的经营理念,诚信务实的服务了近万家客户,成为众多世界500强、集团和上市公司的长期合作伙伴!
优网科技成立于2001年,擅长网站建设、网站与各类业务系统深度整合,致力于提供完善的企业互联网解决方案。优网科技提供PC端网站建设(品牌展示型、官方门户型、营销商务型、电子商务型、信息门户型、DIY体验、720全景展厅及3D虚拟仿真)、移动端应用(手机站、APP开发)、微信定制开发(微信官网、微信商城、企业微信)、微信小程序定制开发等一系列互联网应用服务。