目录
先搭建好实时主备集群,参考:
动态增加实时备库
增加一个备库,实例名为 GRP1_RT_03。
配置环境
机器名 | IP 地址 | 初始状态 | 操作系统 | 备注 |
DW_S2 | 192.168.64.133 192.168.169.143 | 备库 GRP1_RT_03 | Linux rh7 x86_64 | 192.168.64.133 外部服务 IP; 192.168.169.143 内部通信 IP |
1、数据准备
对主库进行联机备份操作:
SQL> BACKUP DATABASE BACKUPSET '/dm/data/BACKUP_FILE_02';
- 初始化备机数据库
./dminit path=/dm/data/
- 还原恢复新增备库
拷贝生成的备份集目录 BACKUP_FILE_02 到 143 上/dm/data/目录,使用 DMRMAN 工具脱机还原。
./dmrman CTLSTMT="RESTORE DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/data/BACKUP_FILE_02'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/data/BACKUP_FILE_02'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
2 、配置新备库
2.1配置 dm.ini
在 DW_S3 机器上配置备库的实例名为 GRP1_RT_03
##实例名,建议使用“组名_守护环境_序号”的命名方式,总长度不能超过16
INSTANCE_NAME = GRP1_RT_03
PORT_NUM = 32143 ##数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 ##接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 ##不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 ##不允许备库OFFLINE表空间
MAL_INI = 1 ##打开MAL系统
ARCH_INI = 1 ##打开归档配置
RLOG_SEND_APPLY_MON = 64 ##统计最近64次的日志重演信息
2.2配置 dmmal.ini
拷贝一份原系统dmmal.ini文件,并加上自己一项,最终配置如下:
MAL_CHECK_INTERVAL = 5 ##MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 ##判定MAL链路断开的时间
[MAL_INST1]
MAL_INST_NAME = GRP1_RT_01 ##实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.169.141 ##MAL系统监听TCP连接的IP地址
MAL_PORT = 61141 ##MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.64.131 ##实例的对外服务IP地址
MAL_INST_PORT = 32141 ##实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 52141 ##实例本地的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 33141 ##实例监听守护进程TCP连接的端口
[MAL_INST2]
MAL_INST_NAME = GRP1_RT_02
MAL_HOST = 192.168.169.142
MAL_PORT = 61142
MAL_INST_HOST = 192.168.64.132
MAL_INST_PORT = 32142
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
[MAL_INST3]
MAL_INST_NAME = GRP1_RT_03
MAL_HOST = 192.168.169.143
MAL_PORT = 61143
MAL_INST_HOST = 192.168.64.133
MAL_INST_PORT = 32143
MAL_DW_PORT = 52143
MAL_INST_DW_PORT = 33143
2.3 配置 dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME ##实时归档类型
ARCH_DEST = GRP1_RT_01 ##实时归档目标实例名
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME ##实时归档类型
ARCH_DEST = GRP1_RT_02 ##实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL ##本地归档类型
ARCH_DEST = /dm/data/DAMENG/arch ##本地归档文件存放路径
ARCH_FILE_SIZE = 128 ##单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 ##单位Mb,0表示无限制,范围1024~4294967294M
2.4 配置 dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL ##全局守护类型
DW_MODE = AUTO ##自动切换模式
DW_ERROR_TIME = 10 ##远程守护进程故障认定时间
INST_RECOVER_TIME = 60 ##主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 ##本地实例故障认定时间
INST_OGUID = 453331 ##守护系统唯一OGUID值
INST_INI = /dm/data/DAMENG/dm.ini ##dm.ini配置文件路径
INST_AUTO_RESTART = 1 ##打开实例的自动拉起功能
INST_STARTUP_CMD = /dm/bin/dmserver ##命令行方式启动
RLOG_SEND_THRESHOLD = 0 ##指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 ##指定备库重演日志的时间阈值,默认关闭
2.5 启动备库
以 Mount 方式启动备库
./dmserver /dm/data/DAMENG/dm.ini mount
2.6 设置 OGUID
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(453331);
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
2.7 修改数据库模式
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>alter database standby;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
3、 动态添加 MAL 配置
分别连接原系统中每个实例单独执行:
动态增加 MAL 中 GRP1_RT_03 的相关配置信息:
SF_MAL_CONFIG(1,0);
SF_MAL_INST_ADD('MAL_INST3','GRP1_RT_03','192.168.169.143',61143,'192.168.64.133',32143,52143,0,33143);
SF_MAL_CONFIG_APPLY();
SF_MAL_CONFIG(0,0);
4、 动态添加归档配置
1.关闭守护进程和监视器
动态添加归档要求数据库处于 MOUNT 状态,守护进程处于活动状态下不允许用户手动修改模式状态,因此需要先关闭守护进程,同时也是为了防止手动切换 MOUNT 状态后又被守护进程通知自动 Open,另外监视器配置也需要修改,因此在这里一并关闭。
- 关闭监视器
- 关闭备库守护进程
- 关闭主库守护进程
- 手动修改原系统中所有实例为 MOUNT 状态
必须先修改主库,再修改备库,否则可能会引发主备数据同步失败导致主库挂起。
//临时修改ALTER_MODE_STATUS,允许用户手动修改模式状态,动态添加完毕后需要再改回原值
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
//临时关闭守护进程活动状态检测,允许用户手动修改模式状态,动态添加完毕后需要再改回原值
SQL> SP_SET_PARA_VALUE(1, 'DW_INACTIVE_INTERVAL', 0);
//修改数据库为MOUNT状态
SQL> ALTER DATABASE MOUNT;
- 动态添加归档节点
分别连接原系统中的所有实例,动态添加 dmarch.ini 中归档节点。
SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST= GRP1_RT_03, TYPE= REALTIME';
- 手动修改原系统中所有实例为 OPEN 状态
必须先修改备库,再修改主库,否则可能会引发主备数据同步失败导致主库挂起。
//修改数据库为OPEN状态
SQL> ALTER DATABASE OPEN FORCE;
//将ALTER_MODE_STATUS改回原值
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
//将DW_INACTIVE_INTERVAL改回原值,本例中为60
SQL> SP_SET_PARA_VALUE(1, 'DW_INACTIVE_INTERVAL', 60);
5、 修改监视器 dmmonitor.ini
在 dmmonitor.ini 中添加新增的备库 GRP1_RT_03:
MON_DW_IP = 192.168.169.143:52143
6、 启动所有守护进程以及监视器
分别启动主库和备库(包括 GRP1_RT_03)的所有守护进程,最后启动监视器。达梦技术社区:https://eco.dameng.com/