标准启动流程(生产环境下强制)
Ⅰ、主库实例mont启动
Ⅱ、备库实例 mount 启动
Ⅲ、主库、备库分别启动 dmwatcher
Ⅳ、启动 dmmonitor 监视器 (守护进程协商完成后,自动下发 OPEN 命令,数据库对外提供服务。)
这里我把主节点的数据、归档、备份目录设置为 data01、arch01、dmbak01,备节点的设置为data02、arch02、dmbak02 方便后续区分



cd /home/dmdba/dmdbms/bin
./disql SYSDBA/Sysdba123.@127.0.0.1:5236
*ALTER DATABASE MOUNT;*
*ALTER DATABASE ARCHIVELOG;*
ALTER DATABASE ADD ARCHIVELOG 'DEST=/dmdata/arch01, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=51200';
*ALTER DATABASE OPEN;*
ALTER DATABASE MOUNT;达梦数据库三种启动状态:SHUTDOWN关闭 → MOUNT挂载 → OPEN打开
开启 / 修改归档、控制文件、备份配置等操作必须在 MOUNT 阶段执行,OPEN 状态下无法修改归档模式。
前置操作:数据库需要先执行 STARTUP MOUNT; 启动到挂载状态,再执行这条语句。
ALTER DATABASE ARCHIVELOG;默认达梦是非归档(NOARCHIVELOG)模式;
开启归档后:数据库重做日志会持续归档备份,支持时间点恢复、完整备份恢复,生产环境必须开启;
关闭归档用:ALTER DATABASE NOARCHIVELOG;。
ALTER DATABASE ADD ARCHIVELOG 'DEST=/opt/dmdbms/data/DAMENG/arch, TYPE=...';参数说明:
DEST=/opt/dmdbms/data/DAMENG/arch:归档文件存放目录,达梦实例 DAMENG 的 arch 文件夹;
TYPE:归档类型(常用值:FILE本地文件归档、REMOTE远程归档);
这条语句用来指定归档日志保存位置,支持配置多份归档路径实现冗余。
ALTER DATABASE OPEN;完成归档配置后,切换到正常运行 OPEN 状态,应用程序、用户才能连接数据库读写数据。
BACKUP DATABASE BACKUPSET '/dmdata/dmbak01/BACKUP_FILE';
这里是在disql里用sql语句完成
SP_SET_PARA_VALUE (2,'PORT_NUM',5236); //主节点设置为5236 备节点设置为5237
SP_SET_PARA_VALUE (2,'DW_INACTIVE_INTERVAL',60);
SP_SET_PARA_VALUE (2,'ALTER_MODE_STATUS',0);
SP_SET_PARA_VALUE (2,'ENABLE_OFFLINE_TS',2);
SP_SET_PARA_VALUE (2,'MAL_INI',1);
SP_SET_PARA_VALUE (2,'RLOG_SEND_APPLY_MON',64);

vim dmmal.ini
MAL_CHECK_INTERVAL = 10 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 10 #判定 MAL 链路断开的时间
MAL_TEMP_PATH = /malpath #临时文件目录
MAL_BUF_SIZE = 512 #单个 MAL 缓存大小,单位 MB
MAL_SYS_BUF_SIZE = 2048 #MAL 总大小限制,单位 MB
MAL_COMPRESS_LEVEL = 0 #MAL 消息压缩等级,0 表示不压缩
[MAL_INST1]
MAL_INST_NAME = DM_YQ_01 #实例名
MAL_HOST = 192.168.200.50 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5336 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.200.50 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例对外服务端口,和 dm.ini 的 PORT_NUM 一致
MAL_DW_PORT = 5436 #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5536 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = DM_YQ_02
MAL_HOST = 192.168.200.50
MAL_PORT = 5337
MAL_INST_HOST = 192.168.200.50
MAL_INST_PORT = 5237
MAL_DW_PORT = 5437
MAL_INST_DW_PORT = 5537

ARCH_WAIT_APPLY = 0 #0:高性能 1:事务一致
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmdata/arch01 #本地归档存放路径
ARCH_FILE_SIZE = 1024 #单个归档大小,单位 MB
ARCH_SPACE_LIMIT = 51200 #归档上限,单位 MB
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DM_YQ_02 #实时归档目标实例名

[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME = 20 #远程守护进程故障认定时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_OGUID = 45331 #守护系统唯一 OGUID 值
INST_INI = /dmdata/data01/DMTESTdm.ini #dm.ini 文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭

scp -r /dmdata/dmbak01/BACKUP_FILE dmdba@192.168.200.50:/dmdata/dmbak02


cd /home/dmdba/dmdbms/script/root
./dm_service_installer.sh -t dmserver -p DM_YQ_01 -dm_ini /dmdata/data01/DMTEST/dm.ini
./dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini/dmdata/data01/DMTEST/dmwatcher.ini

达梦数据库用 dmrman 物理备份还原流程,分为还原(RESTORE) 和恢复(RECOVER) 两步
把已有全量 / 增量备份集里的数据文件、数据页,完整物理拷贝到刚初始化好的 B 机器实例目录;
相当于 “复制一份备份快照”,把历史备份里的表、数据、索引文件还原到本地磁盘;
局限性: 备份时数据库有正在运行的事务,只做 RESTORE 后数据不一致,存在未提交 / 未完成事务,数据库无法正常启动。
重做 REDO 归档日志:把备份结束后产生的归档日志重新执行一遍,补全备份快照之后所有增删改事务;
解决 RESTORE 后的 “数据残缺”,把数据库修正到事务一致状态;
最后更新数据库 DB_MAGIC 魔数,标记恢复完成,数据库才能正常启动;
场景延伸:搭建备库时,通过 RECOVER 持续应用归档,让 B 机器数据和主库保持同步。
B 机器刚用dminit新建空实例,没有业务数据;
先用RESTORE把主库备份数据完整拉到 B 机器本地;
再用RECOVER应用归档日志,补齐备份后新增业务操作,让 B 机器数据和主库一致;
之后修改dmarch.ini归档配置,搭建主备实时同步架构。
RESTORE(还原):物理拷贝备份文件,只拿到某一时间点静态快照;
RECOVER(恢复):回放归档日志,补齐所有事务,让数据完整可用,是数据库能启动的必要步骤。
./dmrman CTLSTMT="RESTORE DATABASE '/dmdata/data02/DMTEST/dm.ini' FROM BACKUPSET '/dmdata/dmbak01/BACKUP_FILE'"
./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data02/DMTEST/dm.ini' FROM BACKUPSET '/dmdata/dmbak01/BACKUP_FILE'"
./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data02/DMTEST/dm.ini' UPDATE DB
ARCH_WAIT_APPLY = 0 #0:高性能 1:事务一致
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dmdata/arch02 #本地归档存放路径
ARCH_FILE_SIZE = 1024 #单个归档大小,单位 MB
ARCH_SPACE_LIMIT = 51200 #归档上限,单位 MB
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DM_YQ_01 #实时归档目标实例名

INSTANCE_NAME = DM_YQ_02
PORT_NUM = 5237 #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间
MAL_INI = 1 #打开 MAL 系统
ARCH_INI = 1 #打开归档配置
RLOG_SEND_APPL
MAL_CHECK_INTERVAL = 10 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 10 #判定 MAL 链路断开的时间
MAL_TEMP_PATH = /malpath #临时文件目录
MAL_BUF_SIZE = 512 #单个 MAL 缓存大小,单位 MB
MAL_SYS_BUF_SIZE = 2048 #MAL 总大小限制,单位 MB
MAL_COMPRESS_LEVEL = 0 #MAL 消息压缩等级,0 表示不压缩
[MAL_INST1]
MAL_INST_NAME = DM_YQ_01
MAL_HOST = 192.168.200.50 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5336 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.200.50 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例对外服务端口,和 dm.ini 的 PORT_NUM 一致
MAL_DW_PORT = 5436 #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5536 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = DM_YQ_02
MAL_HOST = 192.168.200.50
MAL_PORT = 5337
MAL_INST_HOST = 192.168.200.50
MAL_INST_PORT = 5237
MAL_DW_PORT = 5437
MAL_INST_DW_PORT = 5537
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME = 20 #远程守护进程故障认定时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_OGUID = 45331 #守护系统唯一 OGUID 值
INST_INI = /dmdata/data02/DMTESTdm.ini #dm.ini 文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭

./dm_service_installer.sh -t dmserver -p DM_YQ_02 -dm_ini /dmdata/data02/DMTEST/dm.ini ./dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dmdata/data02/DMTEST/dmwatcher.ini

cd /home/dmdba/dmdbms/bin
./DmServiceDM_YQ_01 start
./disql SYSDBA/Sysdba123.@127.0.0.1:5236
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(45331);
ALTER DATABASE PRIMARY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

cd /home/dmdba/dmdbms/bin
./DmServiceDM_YQ_02 start
./disql SYSDBA/Sysdba123.@127.0.0.1:5237
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(45331);
ALTER DATABASE STANBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

cd /home/dmdba/dmdbms/bin
./DmWatcherServiceWatcher start

在没有监视器的时候必须关闭守护进程才可关闭两个实例服务DM_YQ_01和DM_YQ_02 ,否则守护进程会检测到实例宕机-进行重启动作
MON_DW_CONFIRM = 1 #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH = ../log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 512 #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT = 2048 #日志上限,单位 MB
[GRP1]
MON_INST_OGUID = 45331 #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 192.168.200.50:5336 #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP = 192.168.200.50:5337

./dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /home/dmdba/dmdbms/bin/dmmonitor.ini

MON_DW_CONFIRM = 0 #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH = ../log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 512 #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT = 2048 #日志上限,单位 MB
[GRP1]
MON_INST_OGUID = 45331 #组 GRP1 i的唯一 OGUID 值
MON_DW_IP = 192.168.200.50:5336 #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP = 192.168.200.50:5337
非确认监视器无需注册服务

在打开监视器之前须先打开两个数据库的实例,然后打开相对应的守护进程,最后打开监视器进行查看
su dmdba
cd /home/dmdba/dmdbms/bin
./dmmonitor dmmonitor.ini
show


https://eco.dameng.com
文章
阅读量
获赞
