达梦主备集群动态增加备库

一、环境

原有主库:10.172.147.33  备库:10.172.147.34  新增备库:10.172.147.35

二、操作步骤

1. 从主库进行全库备份

BACKUP DATABASE BACKUPSET '/dm/data/DAMENG/bak/BACKUP_FILE';

2. 新备库初始化实例并进行恢复

实例化实例

dminit PATH=/dm/data PAGE_SIZE=32 EXTENT_SIZE=32 DB_NAME=DAMENG LOG_SIZE=2048 PORT_NUM=1521

前台启动然后退出

将主库的备份复制到新增备库

scp -r /dm/data/DAMENG/bak/BACKUP_FILE 10.172.147.35:/dm/data/DAMENG/bak/
 

然后开始进行恢复

dmrman use_ap=2 CTLSTMT="RESTORE DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/data/DAMENG/bak/BACKUP_FILE'"

注:如果此处报错提示【-4558】:文件已存在,再次恢复提示system.dbf文件不存在,是和dm.ini有关,可将主库的复制过来用一下

dmrman use_ap=2 CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/data/DAMENG/bak/BACKUP_FILE'"

dmrman use_ap=2 CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' UPDATE DB_MAGIC"

3. 新增备库配置 dm.ini dmarch.ini dmmal.ini dmwatcher.ini

可以复制主库的这几个文件,然后进行修改,主要修改的地方有:

Dm.ini 的instance_name

Dmarch.ini中新增实时归档目标

Dmmal.ini 新增mal_instance

主库和第一个备库的参数文件不需要更新,后面会通过命令动态增加归档和mal_instance。

4. 将新备库以mount方式启动

5. 新备库设置OGUID、修改数据库模式

   SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);

   sp_set_oguid(45330);

   alter database standby;

   SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

6. 主库和旧备库动态添加 mal

SF_MAL_CONFIG(1,0);

SF_MAL_INST_ADD('MAL_INST3','DMSERVER_03', '10.172.147.35',5336,'10.172.147.35',1521,5436,0,5536);

SF_MAL_CONFIG_APPLY();

SF_MAL_CONFIG(0,0);

查看dmmal.ini,多了mal_inst3

7. 主库和旧备库动态添加归档

关闭原系统中所有实例的守护进程和监视器

顺序为:1)关闭监视器 2) 关闭备库守护进程 3) 关闭主库守护进程

手动修改原系统中所有实例为 MOUNT 状态

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_PARA_VALUE(1, 'DW_INACTIVE_INTERVAL', 0);
//临时关闭守护进程活动状态检测,允许用户手动修改模式状态,动态添加完毕后需要再改回原值
ALTER DATABASE MOUNT;

动态添加新的归档节点,在原系统中所有实例都执行

ALTER DATABASE ADD ARCHIVELOG 'DEST=DMSERVER_03, TYPE=REALTIME';

查看dmarch.ini,多了DMSERVER_03

手动修改原系统中所有实例为 OPEN 状态

必须先修改备库,再修改主库,否则可能会引发主备数据同步失败导致主库挂起

ALTER DATABASE OPEN FORCE;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
SP_SET_PARA_VALUE(1, 'DW_INACTIVE_INTERVAL', 60);

8.启动watcher

分别启动主库和备库(包括 新增备库)的所有守护进程,最后修改dmmonitor.ini后启动监视器,查看状态

三、总结

1. 当在添加归档节点时,需要将原系统中所有实例mount,此时,原有的连接不会断开,但是不能进行操作,提示数据库是mount状态,当实例open后,才可以进行操作,所以只能算是伪动态。

2. 如果想暂停主备同步,可以使用detach database dbname将备库摘出去。恢复同步使用attach database dbname,但要保证归档日志不缺失,即使只缺最新的也不会进行同步。

3. 函数解释

SF_MAL_CONFIG设置 MAL 配置状态。
SF_MAL_CONFIG(CFG_FLAG INT,BRO_FLAG INT)

CFG_FLAG1,设置配置状态; 0 取消配置状态
BRO_FLAG1,多节点广播设置; 0 本地设置

SF_MAL_CONFIG_APPLY() MAL 配置生效

SF_MAL_INST_ADD增加 MAL 配置项

SF_MAL_INST_ADD(ITEM_NAME VARCHAR,INST_NAME VARCHAR,MAL_IP VARCHAR,MAL_PORT INT,MAL_INST_IP VARCHAR,MAL_INST_PORT INT)

ITEM_NAME 配置项名称

INST_NAME 实例名

MAL_IP MAL IP 地址

MAL_PORT MAL 端口

MAL_INST_IP 实例 IP 地址

MAL_INST_PORT 实例端口

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值