实时主备动态增加实时备库

环境准备
当需要进行系统扩容,希望系统运行不中断,或者影响运行的时间尽可能短时,可通过动态增加节点的方式进行。
一套主备,一个单机,数据库版本一致,初始化参数一致
 
ip 
实例
操作系统
数据库版本
主库
192.168.20.64
RAC64 centos 7.6 DM8 ENT
备库
192.168.20.63
RAC63
centos 7.6
DM8 ENT
单机
192.168.20.65
RAC65
centos 7.6
DM8 ENT
在新增备机节点安装数据库并初始化实例(大小写,数据页大小,字符串等一致)
./dminit  path=/dm8/data  instance_name=rac65
登录主库,执行联机备份
backup database backupset '/dm8/data/backup_file';
将备份文件复制到新增备机节点
scp -r /dm8/data/backup_file dmdba@192.168.20.65:/dm8/data
在新增节点使用dmrman执行脱机还原(注意,新增节点的数据库版本要和集群数据库版本一致)
RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/backup_file';
RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/backup_file';
RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' UPDATE DB_MAGIC;
如果数据规模比较大、联机备份耗时较长、应用压力比较大的情况下,主库联机备份、备库脱机还原过程中,主库可能又新产生了大量归档日志。使用上述步骤重建备库后,主库向备库同步历史数据的时间会比较久,主备库数据会在比较长的一段时间内处于不一致状态。对这种情况,用户可以通过归档备份、还原和归档恢复功能,将备库数据恢复到更加接近主库的最新状态,有效减少备库加入主备系统后的历史数据同步时间
新增节点配置集群
vim dmmal.ini #将主库的dmmal.ini配置复制过来。增加自己的一项
MAL_CHECK_INTERVAL       = 5  #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL   = 5  #判定 MAL 链路断开的时间
[MAL_INST1]
  MAL_INST_NAME     = RAC63 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
  MAL_HOST          = 192.168.20.63#MAL 系统监听 TCP 连接的 IP 地址
  MAL_PORT          = 61141    #MAL 系统监听 TCP 连接的端口
  MAL_INST_HOST     = 192.168.20.63#实例的对外服务 IP 地址
  MAL_INST_PORT = 5236 #实例的对外服务端口,dm.ini 中的 PORT_NUM 一致
  MAL_DW_PORT     = 52141 #实例对应的守护进程监听 TCP 连接的端口
  MAL_INST_DW_PORT  = 33141 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
  MAL_INST_NAME          = RAC64
  MAL_HOST               = 192.168.20.64
  MAL_PORT               = 61141
  MAL_INST_HOST          = 192.168.20.64
  MAL_INST_PORT          = 5236
  MAL_DW_PORT            = 52141
  MAL_INST_DW_PORT       = 33141
[MAL_INST3]
  MAL_INST_NAME          = RAC65
  MAL_HOST               = 192.168.20.65
  MAL_PORT               = 61141
  MAL_INST_HOST          = 192.168.20.65
  MAL_INST_PORT          = 5236
  MAL_DW_PORT            = 52141
  MAL_INST_DW_PORT       = 33141
  
vim  dmarch.ini #添加另外两个节点的目标实例
[ARCHIVE_REALTIME1]
ARCH_TYPE        =  REALTIME #实时归档类型
ARCH_DEST        = RAC63 #实时归档目标实例名
[ARCHIVE_REALTIME2]
ARCH_TYPE        =  REALTIME #实时归档类型
ARCH_DEST        = RAC64 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE        = LOCAL #本地归档类型
ARCH_DEST        = /dm8/data/dmarch #本地归档文件存放路径
ARCH_FILE_SIZE   = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 200000 #单位 Mb,0 表示无限制,范围 1024~4294967294M
 
vim dmwatcher.ini #守护系统配置和原系统一致
[GRP2]
DW_TYPE                =  GLOBAL #全局守护类型
DW_MODE                =  MANUAL#自动切换模式
DW_ERROR_TIME          =  10     #远程守护进程故障认定时间
INST_RECOVER_TIME      =  60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME        =  10 #本地实例故障认定时间
INST_OGUID             =  453331 #守护系统唯一 OGUID 值
INST_INI               =  /dm8/data/DAMENG/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART      =  1 #打开实例的自动启动功能
INST_STARTUP_CMD       =  /dm8/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD   =  0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD   =  0 #指定备库重演日志的时间阀值,默认关闭
 
以 Mount 方式启动新增备库
./dmserver /dm8/data/DAMENG/dm.ini mount
启动命令行工具 DIsql,登录新增备库设置 OGUID 值,修改数据库为 Standby 模式
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
 
原主备集群配置
动态添加 MAL 配置,原系统中每个实例单独执行
SF_MAL_CONFIG(1,0);
SF_MAL_INST_ADD('MAL_INST3','RAC65','192.168.20.65',61141,'192.168.20.65',5236,52141,0,33141);
SF_MAL_CONFIG_APPLY();
SF_MAL_CONFIG(0,0);
 
动态添加归档配置,原系统中每个实例单独执行,先将守护进程关闭
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
alter database mount;
alter database add archivelog 'DEST= RAC65, TYPE= REALTIME ';
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
 
vim  dmmonitor.ini #监视器配置 。添加最后一行
MON_DW_Confirm    =0  #1确认监视器模式
MON_LOG_PATH    = /dm8/data/log #监视器日志文件存放路径
MON_LOG_INTERVAL  = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE   = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT  = 0  #不限定日志文件总占用空间
[GRP2]
MON_INST_OGUID    = 453331 #组 GRP2 的唯一 OGUID 值
#配置为监视器到组 GRP2 的守护进程的连接信息,以―IP:PORT‖的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP     = 192.168.20.63:52141
MON_DW_IP     = 192.168.20.64:52141
MON_DW_IP     = 192.168.20.65:52141
 
 
先将新增备库的实例和守护进程创建服务,以服务的方式启动所有守护进程和实例
登录监视器
./dmmonitor /dm8/data/DAMENG/dmmonitor.ini
查看日志报如下错误。 response message length invalid[ip:127.0.0.1
修改每个节点主机名 vim /etc/hosts
192.168.20.63 redo3
192.168.20.64 redo4
192.168.20.65 redo5
修改之后,重启系统,查看监视器
手工切换测试
 
posted @ 2021-03-25 09:55  fangzpa  阅读(83)  评论(0编辑  收藏  举报