达梦数据库主备集群添加一个备库节点

学习过程中参考了:参考文章,这篇幅文章

一主一备集群,添加一备库

环境介绍

  1. 原系统一主一备集群正常运行,需求增加一备,升级为一主二备
  2. 操作系统:Kylin V10
  3. IP规划:
主机名服务IP心跳IP数据库名实例名
dmdb01192.168.31.410.10.10.4dmdbdw1
dmdb02192.168.31.510.10.10.5dmdbdw2
dmdb03(新增主机)192.168.31.610.10.10.6dmdbdw3
  1. 端口规划
实例名实例端口MAL 系统监听 TCP 连接的端口实例本地的守护进程监听 TCP 连接的端口实例监听守护进程 TCP 连接的端口
dw15236733674367536
dw25236733674367536
dw3(新增实例)5236733674367536

扩展步骤

  1. 新主机操作系统安装(Kylin V10),安装DM数据库软件、初始化实例(参照单机安装步骤)
    1. 安装软件版本应保持与旧集群版本一致,如果不一致还原时会报错:备份集无效
    2. 初始化实例参数应保持与旧集群一致,实例名指定为dm3
  2. 从主库全库备份,复制备份集到新主机,利用主库的备份集在新主机做还原。
  3. 修改配置文件,涉及四个配置文件,如下详细配置
  4. 修改新主机上数据库的OGUID及模式
  5. 重启集群,刷新归档文件,新库即可添加进集群中

第一步新主机(192.168.31.6) 安装DM软件及初始化实例

  1. 单机安装参考文章

初始化

##通过如下或者,或者查看旧的主库初始化参数文件确定参数值
SELECT '页大小',cast(PAGE()/1024 as varchar) union all   
SELECT '簇大小',cast(SF_GET_EXTENT_SIZE() as varchar) union all
SELECT '字符集',CASE SF_GET_UNICODE_FLAG() WHEN '0' THEN 'GBK18030' WHEN '1' then 'UTF-8' when '2' then 'EUC-KR' end union all
SELECT '大小写敏感',cast(SF_GET_CASE_SENSITIVE_FLAG() as varchar) union all
select 'VARCHAR类型长度是否以字符为单位',para_value from v$dm_ini where para_name='LENGTH_IN_CHAR' union all
select '实例名称' 数据库选项,INSTANCE_NAME 数据库集群相关参数值 FROM v$instance union all
select '数据库名',name from v$database union all
select '端口号',para_value from v$dm_ini where para_name='PORT_NUM' union all
select '数据库产品ID', id_code from dual union all
select '数据库版本',substr(svr_version,instr(svr_version,'(')) FROM v$instance union all 
select '数据库模式',MODE$ from v$instance union all 
SELECT '字符数据类型' NAME, CASE VALUE WHEN 0 THEN 'BYTE' WHEN 1 THEN 'CHAR' end FROM v$parameter WHERE name like '%LENGTH_IN_CHAR%' union all
select '唯一魔数',cast(permanent_magic as varchar) union all
select 'LSN',cast(cur_lsn as varchar) from v$rlog union all
select 'KEY文件属性',  cluster_type from v$license ;
##新主机在安装完软件后,执行如下初始化数据库
$ pwd
/home/dmdba/dmdbms/bin
$ ./dminit path=/dmdata page_size=32 extent_size=32 charset=1 case_sensitive=1 length_in_char=0 log_size=2048 db_name=dmdb instance_name=dw03
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-11-11
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
 log file path: /dmdata/dmdb/dmdb01.log
 log file path: /dmdata/dmdb/dmdb02.log
write to dir [/dmdata/dmdb].
create dm database success. 2022-05-16 15:03:17
##新主机切换root账号,注册服务
# su - root
# cd /home/dmdba/dmdbms/script/root
# ./dm_service_installer.sh -t dmserver -p dw -dm_ini /dmdata/dmdb/dm.ini
Created symlink /etc/systemd/system/multi-user.target.wants/DmServicedw.service → /usr/lib/systemd/system/DmServicedw.service.
创建服务(DmServicedw)完成

备份集恢复

主备备份&传送备份文件

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

新节点停库恢复

  • 在新主机dmdba用户下,关闭服务进入dmrman恢复数据库
$ dmrman use_ap=2
RMAN> restore database '/dmdata/dmdb/dm.ini' from backupset '/dmbak/bakfull';
RMAN> recover database '/dmdata/dmdb/dm.ini' from backupset '/dmbak/bakfull';
RMAN> recover database '/dmdata/dmdb/dm.ini'  update db_magic;

修改配置文件

dm.ini

  • 新节点修改配置文件
$ vi /dmdata/dmdb/dm.ini
INSTANCE_NAME = DW03
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2

dmmal.ini&dmwatcher.ini

  • 所有节点内容相同的文件(注意如果配置文件路径不同也是要修改的)
  • 使用vim命令完成编辑,或者直接使用scp命令复制配置文件
[dmdba@dmdb01 dmdb]$ cd /dmdata/dmdb
[dmdba@dmdb01 dmdb]$ cat dmwatcher.ini 
[GRP_DW] 
DW_TYPE    = GLOBAL
DW_MODE    = MANUAL
DW_ERROR_TIME     = 30
INST_RECOVER_TIME  = 60
INST_ERROR_TIME   = 20
INST_OGUID         = 453331
INST_INI           = /dmdata/dmdb/dm.ini
INST_AUTO_RESTART  = 1
INST_STARTUP_CMD   = /home/dmdba/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
[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.4
  MAL_PORT     = 7336
  MAL_INST_HOST   = 192.168.31.4
  MAL_INST_PORT   = 5236
  MAL_DW_PORT   = 7436
  MAL_INST_DW_PORT = 7536
[MAL_INST2]
  MAL_INST_NAME = dw02 
  MAL_HOST      = 10.10.10.5
  MAL_PORT          = 7336
  MAL_INST_HOST         = 192.168.31.5 
  MAL_INST_PORT         = 5236 
  MAL_DW_PORT  = 7436
  MAL_INST_DW_PORT = 7536
[MAL_INST3]
  MAL_INST_NAME = dw03
  MAL_HOST      = 10.10.10.6
  MAL_PORT          = 7336
  MAL_INST_HOST         = 192.168.31.6
  MAL_INST_PORT         = 5236
  MAL_DW_PORT  = 7436
  MAL_INST_DW_PORT = 7536
  • 复制到其他节点
  • dmmal.ini文件三个节点的一致,可以通过scp命令复制
  • dmwatcher.ini文件三个节点的一致,可以通过scp命令复制
  • dmmonitor.ini文件可以配置多个,最后一个scp命令复制一份到新主机,配置多一个
[dmdba@dmdb01 dmdb]$ scp -r /dmdata/dmdb/dmmal.ini 192.168.31.6:/dmdata/dmdb/dmmal.ini
[dmdba@dmdb01 dmdb]$ scp -r /dmdata/dmdb/dmwatcher.ini 192.168.31.6:/dmdata/dmdb/dmwatcher.ini
--有守护文件了可以创建自动启动服务
[root@dmdb03 ~]# cd /home/dmdba/dmdbms/script/root
[root@dmdb03 root]# ./dm_service_installer.sh -t dmwatcher -p dw -watcher_ini /dmdata/dmdb/dmwatcher.ini
[dmdba@dmdb01 dmdb]$ scp -r /dmdata/dmdb/dmmal.ini 192.168.31.5:/dmdata/dmdb/dmmal.ini
[dmdba@dmdb01 dmdb]$ scp -r /dmdata/dmdb/dmmonitor.ini 192.168.31.6:/dmdata/dmdb/dmmonitor.ini

dmarch.ini

  • 主库的归档文件配置
[dmdba@dmdb01 dmdb]$ cat /dmdata/dmdb/dmarch.ini 
ARCH_WAIT_APPLY = 1
[ARCHIVE_REALTIME1]  
ARCH_TYPE     = REALTIME 
ARCH_DEST     = dw02
[ARCHIVE_LOCAL1]
ARCH_TYPE     = LOCAL
ARCH_DEST     = /dmarch  
ARCH_FILE_SIZE    = 2048
ARCH_SPACE_LIMIT  = 102400   
[ARCHIVE_REALTIME2]
ARCH_TYPE     = REALTIME
ARCH_DEST     = dw03
  • 旧的备库归档文件的配置
[dmdba@dmdb01 dmdb]$ cat /dmdata/dmdb/dmarch.ini 
ARCH_WAIT_APPLY = 1
[ARCHIVE_REALTIME1]  
ARCH_TYPE     = REALTIME 
ARCH_DEST     = dw01
[ARCHIVE_LOCAL1]
ARCH_TYPE     = LOCAL
ARCH_DEST     = /dmarch  
ARCH_FILE_SIZE    = 2048
ARCH_SPACE_LIMIT  = 102400   
[ARCHIVE_REALTIME2]
ARCH_TYPE     = REALTIME
ARCH_DEST     = dw03
  • 新的备库归档文件的配置
[dmdba@dmdb01 dmdb]$ cat /dmdata/dmdb/dmarch.ini 
ARCH_WAIT_APPLY = 1
[ARCHIVE_REALTIME1]  
ARCH_TYPE     = REALTIME 
ARCH_DEST     = dw01
[ARCHIVE_LOCAL1]
ARCH_TYPE     = LOCAL
ARCH_DEST     = /dmarch  
ARCH_FILE_SIZE    = 2048
ARCH_SPACE_LIMIT  = 102400   
[ARCHIVE_REALTIME2]
ARCH_TYPE     = REALTIME
ARCH_DEST     = dw02

dmmonitor.ini

  • 监视器文件也可以添加新的节点进行监控
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 值
#以下配置为监视器到组 GRP_DW 的守护进程的连接信息,以“IP:PORT”的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
 MON_DW_IP     = 10.10.10.4:7436
 MON_DW_IP     = 10.10.10.5:7436
 MON_DW_IP     = 10.10.10.6:7436

设置新节点数据库属性

  • 查看主库的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-11-11
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);

整个集群重启即可测试是否成功

启动新节点观察

[dmdba@dmdb03 bin]$ DmServicedw start
Starting DmServicedw:                                      [ OK ]
[dmdba@dmdb03 bin]$ DmWatcherServicedw start
Starting DmWatcherServicedw:                               [ OK ]
  1. 此时监视器显示新节点归档无效
  2. 状态也有可能是mount,无法open
  3. 查看归档还会有可能是报错mal无法打开
show arch send info grp_dw.dw03
[monitor]         2022-04-09 22:19:38: 实例(DW03)的归档信息在实例(DW01)中没有找到

重启集群

关闭集群

一定要按照顺序

  • 监控服务器(关闭确认监视器)
[dmdba@dmdb01 ~]$ cd /home/dmdba/dmdbms/bin
[dmdba@dmdb01 bin]$ ./DmMonitorServicedw stop
[dmdba@dmdb02 ~]$ cd /home/dmdba/dmdbms/bin
[dmdba@dmdb02 bin]$ ./DmMonitorServicedw stop
[dmdba@dmdb03 ~]$ cd /home/dmdba/dmdbms/bin
[dmdba@dmdb03 bin]$ ./DmMonitorServicedw stop
  • 主备都执行(关闭守护服务)
[dmdba@dmdb01 dmdb]$ cd /home/dmdba/dmdbms/bin
[dmdba@dmdb01 bin]$ ./DmWatcherServicedw stop
[dmdba@dmdb02 dmdb]$ cd /home/dmdba/dmdbms/bin
[dmdba@dmdb02 bin]$ ./DmWatcherServicedw stop
[dmdba@dmdb03 dmdb]$ cd /home/dmdba/dmdbms/bin
[dmdba@dmdb03 bin]$ ./DmWatcherServicedw stop

启动集群

一定要按照顺序

  • 主备都执行(启动数据库服务)
[dmdba@dmdb01 dmdb]$ cd /home/dmdba/dmdbms/bin
[dmdba@dmdb01 bin]$ ./DmServicedw start
[dmdba@dmdb02 dmdb]$ cd /home/dmdba/dmdbms/bin
[dmdba@dmdb02 bin]$ ./DmServicedw start
[dmdba@dmdb03 dmdb]$ cd /home/dmdba/dmdbms/bin
[dmdba@dmdb03 bin]$ ./DmServicedw start
  • 主备都执行(启动守护服务)
[dmdba@dmdb01 dmdb]$ cd /home/dmdba/dmdbms/bin
[dmdba@dmdb01 bin]$ ./DmWatcherServicedw start
[dmdba@dmdb02 dmdb]$ cd /home/dmdba/dmdbms/bin
[dmdba@dmdb02 bin]$ ./DmWatcherServicedw start
[dmdba@dmdb03 dmdb]$ cd /home/dmdba/dmdbms/bin
[dmdba@dmdb04 bin]$ ./DmWatcherServicedw start

集群验证

  • 在主库中创建表插入一条数据,记得要commit;
SQL> create table test (id int);
executed successfully
SQL> insert into test values(1);
affect rows 1
SQL> commit;
executed successfully
SQL> select * from test;
LINEID     ID         
---------- -----------
1          1
  • 分别去另两个备库上执行查询,都能查到test表的数据
SQL> select * from test;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值