(本文为技术分享文档,只是基于个人对达梦数据库环境的片面理解,仅供参考,如果发现记录有误,欢迎指正)
DM数据守护系统采用双机模式,包含1个主库和1个备库,通过MAL(消息通信层)实现实时数据同步。系统配置如下:
主机名 | IP地址 | 实例名 | 数据库名 | 角色 |
---|---|---|---|---|
rac01 | 192.168.56.101 | DMSVR01 | DM01 | 主库 |
rac02 | 192.168.56.102 | DMSVR02 | DM01 | 备库 |
monitor | 192.168.56.103 | - | - | 监控机 |
# 通信参数配置
MAL_CHECK_INTERVAL = 5 # 检查MAL连接的间隔时间(秒)
MAL_CONN_FAIL_INTERVAL = 5 # 判定MAL连接失败的时间(秒)
# 实例1配置(主库)
[MAL_INST1]
MAL_INST_NAME = DMSVR01 # 实例名,需与dm.ini中INSTANCE_NAME一致
MAL_HOST = 192.168.56.101 # 实例对外服务的IP地址
MAL_PORT = 15236 # MAL系统监听端口
MAL_INST_HOST = 192.168.56.101 # 实例的IP地址
MAL_INST_PORT = 5236 # 实例的监听端口
MAL_DW_PORT = 65101 # 守护进程监听端口
MAL_INST_DW_PORT = 45101 # 实例守护进程端口
# 实例2配置(备库)
[MAL_INST2]
MAL_INST_NAME = DMSVR02
MAL_HOST = 192.168.56.102
MAL_PORT = 15236
MAL_INST_HOST = 192.168.56.102
MAL_INST_PORT = 5236
MAL_DW_PORT = 65101
MAL_INST_DW_PORT = 45101
# 本地归档配置
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL # 归档类型:本地归档
ARCH_DEST = /dm8/data/DM01/arch # 归档文件存放路径
ARCH_FILE_SIZE = 64 # 单个归档文件大小(MB)
ARCH_SPACE_LIMIT = 0 # 归档空间上限(0表示无限制)
ARCH_FLUSH_BUF_SIZE = 0 # 归档刷新缓冲区大小(0表示使用默认值)
ARCH_HANG_FLAG = 1 # 归档阻塞标志(1表示允许阻塞)
# 实时归档配置
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME # 归档类型:实时归档
ARCH_DEST = DMSVR02 # 归档目标实例名
[GRP1] # 守护组名称
DW_TYPE = GLOBAL # 守护类型:全局守护
DW_MODE = AUTO # 守护模式:自动切换
DW_ERROR_TIME = 10 # 判定守护进程失败的时间(秒)
INST_RECOVER_TIME = 60 # 实例恢复超时时间(秒)
INST_ERROR_TIME = 10 # 判定实例失败的时间(秒)
INST_OGUID = 8888 # 实例唯一标识,主备必须一致
INST_INI = /dm8/data/DM01/dm.ini # 实例配置文件路径
INST_AUTO_RESTART = 1 # 实例自动重启标志(1表示自动重启)
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver # 实例启动命令
RLOG_SEND_THRESHOLD = 0 # 日志发送阈值(0表示不限制)
RLOG_APPLY_THRESHOLD = 0 # 日志应用阈值(0表示不限制)
MAL_INI = 1 # 启用MAL系统
ARCH_INI = 1 # 启用归档系统
ALTER_MODE_STATUS = 0 # 禁止在线修改模式状态
ENABLE_OFFLINE_TS = 2 # 允许离线表空间的特殊处理
# 关闭生产库服务
[root@rac01 init.d]# service stop DmServiceDMSVR01
# 冷备份数据库
[dmdba@rac01 ~]$ dmrman
RMAN> backup database '/dm8/data/DM01/dm.ini' backupset '/dm8/backup';
# 添加配置文件(dmmal.ini、dmarch.ini、dmwatcher.ini)
# 启动数据库到mount状态
[dmdba@rac01 DM01]$ dmserver /dm8/data/DM01/dm.ini mount &
# 初始化备库
[dmdba@rac02 ~]$ dminit db_name=DM01 instance_name=DMSVR02 path=/dm8/data SYSDBA_PWD=DMsysdba01 SYSAUDITOR_PWD=DMsysdba01
# 恢复数据库
[dmdba@rac02 ~]$ dmrman
RMAN> restore database '/dm8/data/DM01/dm.ini' from backupset '/dm8/backup';
RMAN> recover database '/dm8/data/DM01/dm.ini' from backupset '/dm8/backup';
RMAN> recover database '/dm8/data/DM01/dm.ini' update db_magic;
# 启动备库到mount状态
[dmdba@rac02 DM01]$ dmserver /dm8/data/DM01/dm.ini mount &
-- 主库执行
SQL> sp_set_oguid(8888);
SQL> alter database primary;
-- 备库执行
SQL> sp_set_oguid(8888);
SQL> alter database standby;
# 主库启动守护进程
[dmdba@rac01 ~]$ dmwatcher /dm8/data/DM01/dmwatcher.ini &
# 备库启动守护进程
[dmdba@rac02 ~]$ dmwatcher /dm8/data/DM01/dmwatcher.ini &
# 监控配置文件(dmmonitor.ini)
MON_DW_CONFIRM = 0 # 不确认守护进程状态
MON_LOG_PATH = /dm8/data/log # 监控日志路径
MON_LOG_INTERVAL = 60 # 日志刷新间隔(秒)
MON_LOG_FILE_SIZE = 32 # 单个日志文件大小(MB)
MON_LOG_SPACE_LIMIT = 0 # 日志空间上限(0表示无限制)
[GRP1] # 监控组名称
MON_INST_OGUID = 8888 # 监控实例的OGUID
MON_DW_IP = 192.168.56.101:65101 # 主库守护进程IP:端口
MON_DW_IP = 192.168.56.102:65101 # 备库守护进程IP:端口
# 启动监控进程
[dmdba@monitor ~]$ dmmonitor /dm8/data/dmmonitor.ini &
# 注册备库数据库服务
[root@rac02 ~]# /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p DMSVR02 -dm_ini /dm8/data/DM01/dm.ini
# 注册主备库守护进程服务
[root@rac01 ~]# /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p DMSVR01 -watcher_ini /dm8/data/DM01/dmwatcher.ini
[root@rac02 ~]# /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p DMSVR02 -watcher_ini /dm8/data/DM01/dmwatcher.ini
# 注册监控机服务
[root@monitor ~]# /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmmonitor -p MONITOR -monitor_ini /dm8/data/dmmonitor.ini
# 登录监控系统
[dmdba@monitor ~]$ dmmonitor /dm8/data/dmmonitor.ini
# 在监控系统中查看集群状态
MONITOR> show
# 登录并输入sysdba用户名与密码
MONITOR> login
# 执行主备切换测试
MONITOR> switchover
文章
阅读量
获赞