注册
达梦8.1.3.26版本不停机增加备库
专栏/技术分享/ 文章详情 /

达梦8.1.3.26版本不停机增加备库

干煸牛蛙 2023/07/11 1773 1 1
摘要

样例环境介绍

达梦8.1.3.26版本开始支持open状态下添加实时归档和即时归档归档信息

原系统一主一备集群正常运行,需求增加二备,升级为一主三备

操作系统:Kylin V10

IP规划

主机名 服务IP 心跳IP 数据库名 实例名
dmdb01 10.0.0.1 10.10.10.5 dmdb dw1
dmdb02 10.0.0.2 10.10.10.6 dmdb dw2
dmdb03(新增主机) 10.0.0.3 10.10.10.7 dmdb dw3
dmdb04(新增主机) 10.0.0.4 10.10.10.8 dmdb dw4
监视器主机 192.168.31.7 dmm

端口规划

可以通过查看dmmal.ini查询之前的设置

实例名 实例端口 MAL 系统监听 TCP 连接的端口 实例本地的守护进程监听 TCP 连接的端口 实例监听守护进程 TCP 连接的端口
dw1 5236 7336 7436 7536
dw2 5236 7336 7436 7536
dw3(新增实例) 5236 7336 7436 7536
dw4(新增实例) 5236 7336 7436 7536

扩展步骤简述

1.新主机搭建好环境,拷贝主库配置文件并修改,拷贝主库备份并还原,修改OGUID及模式

2.已有主备库动态增加dmmal.ini和dmarch.ini的新主机信息

3.关闭主备守护进程,四个节点守护进程一起启动

4.修改监听器的配置文件

样例步骤

变更前(新增节点)操作

安装数据库软件,初始化数据库

修改范围:10.0.0.3 10.0.0.4

略,与已有主备库保持一致

修改配文件dm.ini

修改范围:10.0.0.3 10.0.0.4

新实例的服务器配置,安装路径都和目前集群服务器一致,可以直接复制主库的dm.ini文件,复制后,只需要修改 INSTANCE_NAME 属性。例子中要修改成dw03和dw04覆盖前记得备份之前的。

INSTANCE_NAME = DW03 / DW04

修改dmmal.ini 文件

修改范围: 10.0.0.3、10.0.0.4

修改文件前记得备份

直接使用scp命令复制主库配置文件,然后手动添加新节点

[dmdba@dmdb01 dmdb]$ cat dmmal.ini 
MAL_CHECK_INTERVAL   = 5
MAL_CONN_FAIL_INTERVAL  = 15
[MAL_INST1]
  MAL_INST_NAME = dw01
  MAL_HOST     = 10.10.10.5
  MAL_PORT     = 7336
  MAL_INST_HOST   = 10.0.0.1
  MAL_INST_PORT   = 5236
  MAL_DW_PORT   = 7436
  MAL_INST_DW_PORT = 7536
[MAL_INST2]
  MAL_INST_NAME = dw02 
  MAL_HOST      = 10.10.10.6
  MAL_PORT          = 7336
  MAL_INST_HOST         = 10.0.0.2 
  MAL_INST_PORT         = 5236 
  MAL_DW_PORT  = 7436
  MAL_INST_DW_PORT = 7536
[MAL_INST3]
  MAL_INST_NAME = dw03
  MAL_HOST      = 10.10.10.7
  MAL_PORT          = 7336
  MAL_INST_HOST         = 10.0.0.3
  MAL_INST_PORT         = 5236
  MAL_DW_PORT  = 7436
  MAL_INST_DW_PORT = 7536
[MAL_INST4]
  MAL_INST_NAME = dw04
  MAL_HOST      = 10.10.10.8
  MAL_PORT          = 7336
  MAL_INST_HOST         = 10.0.0.4
  MAL_INST_PORT         = 5236
  MAL_DW_PORT  = 7436
  MAL_INST_DW_PORT = 7536

修改dmwatcher.ini 文件

修改范围:10.0.0.3 10.0.0.4

直接复制主库dmwatcher.ini即可

修改dmarch.ini

修改范围:10.0.0.3 10.0.0.4

直接复制主库的,手动添加新节信息,并修改ARCHIVE_REALTIME为他2台主机的实例名 。

修改文件前记得备份

10.0.0.3 - dw03的
[dmdba@dmdb01 dmdb]$ cat /dmdata/dmdb/dmarch.ini 
[ARCHIVE_LOCAL1]
ARCH_TYPE     = LOCAL
ARCH_DEST     = /dmarch  
ARCH_FILE_SIZE    = 2048
ARCH_SPACE_LIMIT  = 102400   

[ARCHIVE_REALTIME1]
ARCH_TYPE     = REALTIME
ARCH_DEST     = dw01

[ARCHIVE_REALTIME2]  
ARCH_TYPE     = REALTIME
ARCH_DEST     = dw02

[ARCHIVE_REALTIME3]  
ARCH_TYPE     = REALTIME
ARCH_DEST     = dw04
[dmdba@dmdb01 dmdb]$ cat /dmdata/dmdb/dmarch.ini 
[ARCHIVE_LOCAL1]
ARCH_TYPE     = LOCAL
ARCH_DEST     = /dmarch  
ARCH_FILE_SIZE    = 2048
ARCH_SPACE_LIMIT  = 102400   

[ARCHIVE_REALTIME1]
ARCH_TYPE     = REALTIME
ARCH_DEST     = dw01

[ARCHIVE_REALTIME2]  
ARCH_TYPE     = REALTIME
ARCH_DEST     = dw02

[ARCHIVE_REALTIME3]  
ARCH_TYPE     = REALTIME
ARCH_DEST     = dw03

主库备份,scp到新备库(记录下备份时间)

操作范围:10.0.0.1 主库

cd /home/dmdba/dmdbms/bin
./disql SYSDBA/密码
SQL> backup database backupset '/dmbak/bakfull';

##在主库执行scp命令复制备份集到新主机
$ scp -r /dmbak/bakfull/ 10.0.0.3:/dmbak/
$ scp -r /dmbak/bakfull/ 10.0.0.4:/dmbak/
##输入新主机的dmdba的密码,如果没设置密码需要在新主机的root账号下设置密码
[root@dmdb04 root]# passwd dmdba
更改用户 dmdba 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

新节点停库恢复(全备数据)

操作范围:10.0.0.3 10.0.0.4 新备库

$ dmrman
RMAN> restore database '/dmdata/dmdb/dm.ini' from backupset '/dmbak/bakfull';
执行完新节点先不要启动数据库,后续还有归档数据的恢复

变更开始(主备不停库)操作

动态添加dmmal.ini信息

修改范围: 10.0.0.1、10.0.0.2

1.设置 MAL 配置状态
SF_MAL_CONFIG(1,0);
2.增加 MAL 配置项
SF_MAL_INST_ADD('配置项名称','实例名','MAL_HOST',MAL_PORT,'MAL_INST_HOST', MAL_INST_PORT,MAL_DW_PORT,MAL_LINK_MAGIC,MAL_INST_DW_PORT);
--例如
SF_MAL_INST_ADD('MAL_INST3','dw03','10.10.10.7',7336,'10.10.10.3',5236,7436,0,7536);
3.将 MAL 配置生效
SF_MAL_CONFIG_APPLY();
4.取消设置 MAL 配置状态
SF_MAL_CONFIG(0,0);

动态添加dmarch.ini信息

修改范围: 10.0.0.1、10.0.0.2

ALTER DATABASE ADD ARCHIVELOG 'DEST=实例名, TYPE=归档类型;
--例如
ALTER DATABASE ADD ARCHIVELOG 'DEST=dw03,TYPE=REALTIME';

新节点停库恢复(归档数据)

修改范围: 10.0.0.1、10.0.0.2

cd /dmdata/dmdb/arch
找到主库备份之后的全备归档文件,复制到新机器,用来追数据
##在主库执行scp命令复制备份集到新主机
$ scp -r /dmdata/dmdb/arch/…… 10.0.0.3:/dmdata/dmdb/arch/
$ scp -r /dmdata/dmdb/arch/…… 10.0.0.4:/dmdata/dmdb/arch/

$ dmrman
RMAN> recover database '/dmdata/dmdb/dm.ini' with archivedir /dmdata/dmdb/arch/;
RMAN> recover database '/dmdata/dmdb/dm.ini' update db_magic;

设置新备库属性

修改范围: 10.0.0.3、10.0.0.4

查看主库的OGUID是多少,有多种方法查看

查看主库的oguid的设置,新的主机也设置为一致

[dmdba@dmdb01 dmdb]$ cat dmwatcher.ini | grep INST_OGUID
INST_OGUID    = 453331

启动为mount状态(如果启动窗口有限,可以修改启动脚本的启动状态为mount)

[dmdba@dmdb03 dmdb]$ cd /home/dmdba/dmdbms/bin
[dmdba@dmdb03 bin]$ ./dmserver /dmdata/dmdb/dm.ini mount
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-2-94-21.11.11-150650-10038-ENT  startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2022-12-12
file lsn: 39845
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.

在新的窗口登陆disql 修改属性

需要修改的参数(联机恢复过来的备份,需要打开配置才可以修改)

[dmdba@dmdb04 ~]$ cd /home/dmdba/dmdbms/bin
[dmdba@dmdb04 bin]$ ./disql SYSDBA/SYSDBA
Server[LOCALHOST:5236]:mode is normal, state is mount
login used time : 2.052(ms)
disql V8
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> sp_set_oguid(453331);
SQL> alter database standby;
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

关闭新备库

操作范围:10.0.0.3 10.0.0.4

直接kill 新备库的数据库进程即可。

新备库注册服务

操作范围:10.0.0.3 10.0.0.4

注册服务要使用root用户

cd /home/dmdba/dmdbms/script/root

./dm_service_installer.sh -t dmserver -p dw -dm_ini /dmdata/dmdb/dm.ini

./dm_service_installer.sh -t dmwatcher -p dw -watcher_ini /dmdata/dmdb/dmwatcher.ini

修改监视器的配置文件

操作范围:192.168.31.7

登录监视器的服务器(确认监视器和非确认监视器),修改配置文件

在原来的基础上添加新备库的信息即可。

vi /dmdata/dmdb/dmmonitor.ini

MON_DW_CONFIRM    = 0 #普通监视器模式
MON_LOG_PATH    = /home/dmdba/dmdbms/log  #监视器日志文件存放路径
MON_LOG_INTERVAL  = 60 #每隔 60 s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE   = 200 #每个日志文件最大 32 MB
MON_LOG_SPACE_LIMIT  = 1024  #0不限定日志文件总占用空间
[GRP_DW] 
MON_INST_OGUID    = 453331 #组 GRP_DW 的唯一 OGUID 值
MON_DW_IP     = 10.10.10.5:7436
MON_DW_IP     = 10.10.10.6:7436
MON_DW_IP     = 10.10.10.7:7436
MON_DW_IP     = 10.10.10.8:7436

重启主备守护进程,启动集群启动并验证

1.停止确认监视器模式:
  cd /home/dmdba/dmdbms/bin
  ./DmMonitorServicedw stop

2.在备库 IP:10.0.0.4 开启数据库服务
  cd /home/dmdba/dmdbms/bin
  ./DmServicedw start

3.在备库 IP:10.0.0.3 开启数据库服务
  cd /home/dmdba/dmdbms/bin
  ./DmServicedw start

4.在主库 IP 10.0.0.1关闭守护进程服务:
  cd /home/dmdba/dmdbms/bin
  ./DmWatcherServicedw stop

5.在备库 IP:10.0.0.2 关闭守护进程服务
  cd /home/dmdba/dmdbms/bin
  ./DmWatcherServicedw stop

6.在主库 IP:10.0.0.1 开启守护进程服务
  cd /home/dmdba/dmdbms/bin
  ./DmWatcherServicedw start

7.在备库 IP:10.0.0.2 开启守护进程服务
  cd /home/dmdba/dmdbms/bin
  ./DmWatcherServicedw start

8.在备库 IP:10.0.0.3 开启守护进程服务
  cd /home/dmdba/dmdbms/bin
  ./DmWatcherServicedw start

9.在备库 IP:10.0.0.4 开启守护进程服务
  cd /home/dmdba/dmdbms/bin
  ./DmWatcherServicedw start

10.在 监视器 上面 开启确认监视器模式:
  cd /home/dmdba/dmdbms/bin
  ./DmMonitorServicedw start

验证集群切换

登录非确认监视器,进行主备切换,验证集群

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服