注册
主备集群增加备节点
专栏/培训园地/ 文章详情 /

主备集群增加备节点

董镇语 2023/12/22 1129 0 0
摘要

本文主要讲解如何在已有的主备集群中,增加备节点的,以增强集群的健壮性。包含已有集群数据库服务器基本信息的统计,数据库数据文件、归档、备份的路径规划,以及将新节点加入集群在新增服务器与源集群服务器上所需的操作,最后是主节点切换的参考方法。

一.服务器基本信息

1.1 IP地址信息

主机名 服务IP 数据库名 实例名
localhost 192.168.124.129(已有) DMDB DW1
localhost 192.168.124.130(已有) DMDB DW2
localhost 192.168.124.136(新增) DMDB DW3

1.2 端口信息

实例名 实例端口 MAL 系统监听 TCP 连接的端口 守护进程TCP连接端口
DW1 5236 7336 7436 7536
DW2 5236 7336 7436 7536
DW3 5236 7336 7436 7536

1.3 已有实例参数配置

通过如下SQL语句查询已有主备的参数配置

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 ;

示例主库节点初始化参数(192.168.124.129)

./dminit path=/dmdata page_size=32 extent_size=32 charset=1 log_size=2048 db_name=DMDB instance_name=DW1 SYSDBA_PWD="Hn@dameng123" SYSAUDITOR_PWD="Hn@dameng123"

示例备库节点初始化参数(192.168.124.130)

./dminit path=/dmdata page_size=32 extent_size=32 charset=1 log_size=2048 db_name=DMDB instance_name=DW2 SYSDBA_PWD="Hn@dameng123" SYSAUDITOR_PWD="Hn@dameng123" 

1.4 存储路径规划

已有架构与新增节点规划一致,便于后期运维。
数据库软件安装路径:/home/dmdba/dmdbms
数据库数据文件路径:/dmdata/DMDB
数据库归档文件路径:/dmdata/dmarch
数据库备份文件路径:/dmdata/dmbak

二.操作新增节点(192.168.124.136)修改操作系统配置

2.1 关闭防火墙

关闭防火墙 
systemctl stop firewalld 

设置开机禁用防火墙 
systemctl disable firewalld

2.2 关闭selinux

临时性关闭
setenforce 0 

开机不重启 
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

2.3 修改内核参数

/etc/sysctl.conf文件末尾添加以下内容

vim /etc/sysctl.conf 

fs.file-max = 6815744 
fs.aio-max-nr = 1048576 
kernel.shmmni = 4096 
kernel.sem = 250 32000 100 128 
net.ipv4.ip_local_port_range = 9000 65500 
net.core.rmem_default = 4194304 
net.core.rmem_max = 4194304 
net.core.wmem_default = 262144 
net.core.wmem_max = 1048576 
vm.dirty_ratio = 80 
vm.dirty_expire_centisecs = 500 
vm.dirty_writeback_centisecs = 100 
kernel.core_pattern = /dmdata/core.%e.%p 
vm.swappiness=10 
vm.dirty_background_ratio = 0 
vm.min_free_kbytes = 2097152

使参数生效,执行

sysctl -p

2.4 修改操作系统资源限制

/etc/security/limits.conf文件末尾添加如下内容:

vim /etc/security/limits.conf

dmdba soft nice 0 
dmdba hard nice 0 
dmdba soft as unlimited 
dmdba hard as unlimiteddmdba soft fsize unlimited 
dmdba hard fsize unlimited 
dmdba soft nproc 65536 
dmdba hard nproc 65536 
dmdba soft nofile 65536 
dmdba hard nofile 65536 
dmdba soft core unlimited 
dmdba hard core unlimited 
dmdba soft data unlimited 
dmdba hard data unlimited 

2.5 dmdba用户创建以及环境变量修改

从已有架构节点中查询dmdba的组序号,实现备节点与已有架构一致。

[root@localhost ~]# id -u dmdba
2001

新建用户组 dinstall。 
groupadd dinstall -g 2001 

新建用户 dmdba。 
useradd -G dinstall -m -d /home/dmdba -s /bin/bash -u 2001 dmdba 

修改 dmdba 用户密码。 
passwd dmdba 
Hn@dameng123

/home/dmdba/.bash_profile文件末尾添加如下内容:

vi /home/dmdba/.bash_profile 

export DM_HOME=/home/dmdba/dmdbms 
export PATH=$PATH:$DM_HOME/bin 
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin

2.6 数据库软件安装

使用root用户操作

mkdir -p /dmiso 
mount -o loop dmxxx.iso /dmiso 

使用dmdba用户操作

su - dmdba 
cd /dmiso 
./DMInstall.bin -i 

根据提示输入key文件路径,设定时区等基本信息。

安装完成提示使用 root 执行脚本

/home/dmdba/dmdbms/script/root/root_installer.sh

三.新增节点DM配置

3.1 新增节点实例化

参照1.3已有实例参数配置,除INSTANCE_NAME之外,其余参数配置必须保持一致

使用dmdba用户
cd /home/dmdba/dmdbms/bin
./dminit path=/dmdata page_size=32 extent_size=32 charset=1 log_size=2048 db_name=DMDB instance_name=DW3 SYSDBA_PWD="Hn@dameng123" SYSAUDITOR_PWD="Hn@dameng123" 

3.2 备份还原

主库备份(192.168.124.129)

使用dmdba用户
./disql SYSDBA/SYSDBA@localhost:5236
backup database '/dmdata/DMDB/dm.ini' backupset '/home/dmdba/bakfull'; 
scp -r /home/dmdba/bakfull dmdba@192.168.124.136:/home/dmdba/

新增备节点还原(192.168.124.136)

使用dmdba用户
cd /home/dmdba/dmdbms/bin

使用 dmrman 工具还原新增备库,dmdba 用户执行: 
./dmrman use_ap=2

执行 restore
restore database '/dmdata/DMDB/dm.ini' from backupset '/home/dmdba/bakfull'; 

完成后执行 recover: 
recover database '/dmdata/DMDB/dm.ini' from backupset '/home/dmdba/bakfull'; 

最后执行 recover update db_magic。 
recover database '/dmdata/DMDB/dm.ini' update db_magic;

3.3 配置dm.ini

dw3节点的/dmdata/DMDB/dm.ini 上修改以下参数值:

vi /dmdata/DMDB/dm.ini

INSTANCE_NAME = dw3
MAL_INI = 1 
ARCH_INI = 1 
ALTER_MODE_STATUS = 0 
ENABLE_OFFLINE_TS = 2 

3.4 配置dmarch.ini

dw3节点的/dmdata/DMDB/dmarch.ini 上添加以下内容:

vi /dmdata/DMDB/dmarch.ini 

[ARCHIVE_REALTIME1] 
ARCH_TYPE = REALTIME 
ARCH_DEST = dw1 
[ARCHIVE_REALTIME2] 
ARCH_TYPE = REALTIME 
ARCH_DEST = dw2
[ARCHIVE_LOCAL1] 
ARCH_TYPE = LOCAL 
ARCH_DEST = /dmdata/dmarch 
ARCH_FILE_SIZE = 1024 
ARCH_SPACE_LIMIT = 102400 //归档配置为100G(此处//为注释内容,正式配置文件中需要删除)

3.5 配置dmmal.ini

dw3节点的/dmdata/DMDB/dmmal.ini 上添加以下内容:

vi /dmdata/DMDB/dmmal.ini 

MAL_CHECK_INTERVAL = 30
MAL_CONN_FAIL_INTERVAL = 60
[MAL_INST1] 
MAL_INST_NAME = dw1 
MAL_HOST = 192.168.124.129 
MAL_PORT = 7336 
MAL_INST_HOST = 192.168.124.129 
MAL_INST_PORT = 5236 
MAL_DW_PORT = 7436 
MAL_INST_DW_PORT = 7536 
[MAL_INST2] 
MAL_INST_NAME = dw2 
MAL_HOST = 192.168.124.130 
MAL_PORT = 7336 
MAL_INST_HOST = 192.168.124.130 
MAL_INST_PORT = 5236 
MAL_DW_PORT = 7436 
MAL_INST_DW_PORT = 7536
[MAL_INST3] 
MAL_INST_NAME = dw3
MAL_HOST = 192.168.124.136
MAL_PORT = 7336 
MAL_INST_HOST = 192.168.124.136 
MAL_INST_PORT = 5236 
MAL_DW_PORT = 7436 
MAL_INST_DW_PORT = 7536 

3.6 dmwatcher.ini

dw3节点的/dmdata/DMDB/dmwatcher.ini 上添加以下内容:

vi /dmdata/DMDB/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 

3.7 主备环境配置

关闭原有主备集群的数据守护进程,防止有新数据影响数据一致性

使用dmdba用户
cd /home/dmdba/dmdbms/bin
关闭主库守护进程(129):./DmWatcherServiceDW stop
关闭备库守护进程(130):./DmWatcherServiceDW stop

以 mount 方式启动数据库实例(192.168.124.136)

使用 dmdba 用户
cd /home/dmdba/dmdbms/bin
./dmserver /dmdata/DMDB/dm.ini mount 

必须将数据库启动到mount模式,如果启动到open可能导致数据库的LSN编号增长,与主库不一致无法进行正常的启动备库

在新的终端使用 disql 工具连接数据库:

./disql SYSDBA/@localhost:5236

执行以下命令:

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);
exit

执行之后关闭前台启动的136服务器数据库

动态添加MAL设置

./disql SYSDBA/'"Hn@dameng123"'@192.168.124.129:5236
SF_MAL_CONFIG(1,0);
SF_MAL_INST_ADD('MAL_INST3','dw3','192.168.124.136',7336,'192.168.124.136',5236,7436,0,7536);
SF_MAL_CONFIG_APPLY();
SF_MAL_CONFIG(0,0);
alter database add archivelog 'DEST=dw3, TYPE=REALTIME';
exit

./disql SYSDBA/'"Hn@dameng123"'@192.168.124.130:5236
SF_MAL_CONFIG(1,0);
SF_MAL_INST_ADD('MAL_INST3','dw3','192.168.124.136',7336,'192.168.124.136',5236,7436,0,7536);
SF_MAL_CONFIG_APPLY();
SF_MAL_CONFIG(0,0);
alter database add archivelog 'DEST=dw3, TYPE=REALTIME';
exit

3.8 注册服务

使用 root 用户,到数据库安装目录的 script/root 下。

./dm_service_installer.sh -t dmwatcher -p dw -watcher_ini /dmdata/DMDB/dmwatcher.ini 
./dm_service_installer.sh -t dmserver -p dw -dm_ini /dmdata/DMDB/dm.ini 

3.9 重启集群

cd /home/dmdba/dmdbms/bin
要严格按照以下顺序操作
关闭主库守护进程(129):./DmWatcherServiceDW stop
关闭备库守护进程(130):./DmWatcherServiceDW stop
关闭备库守护进程(136):./DmWatcherServiceDW stop
关闭主库实例(129):./DmServicedmdb stop
关闭备库实例(130):./DmServicedmdb stop
关闭备库实例(136):./DmServicedmdb stop
启动主库实例(129):./DmServicedw start	
启动备库实例(130):./DmServicedw start
启动备库实例(136):./DmServicedw start
启动主库守护进程(129):./DmWatcherServicedw start	
启动备库守护进程(130):./DmWatcherServicedw start
启动备库守护进程(136):./DmWatcherServicedw start

3.10 验证一主两备搭建情况

集群任意节点,配置普通监视器配置文件 dmmonitor.ini

vi /dmdata/DMDB/dmmonitor.ini 

MON_DW_Confirm = 0  
MON_LOG_PATH = /home/dmdba/dmdbms/log 
MON_LOG_INTERVAL = 60  
MON_LOG_FILE_SIZE = 200 
MON_LOG_SPACE_LIMIT = 1024  
[GRP_DW] 
MON_INST_OGUID = 453331 
MON_DW_IP = 192.168.124.129:7436 
MON_DW_IP = 192.168.124.130:7436 
MON_DW_IP = 192.168.124.136:7436

执行以下命令,启动监视器:

使用dmdba用户
cd /home/dmdba/dmdbms/bin
./dmmonitor /dmdata/DMDB/dmmonitor.ini 

四.集群主节点切换

4.1 查看节点状态

Show
image.png

4.2 登录监视器

login
用户名:SYSDBA
密码:Hn@dameng123

4.3 正常切换

正常情况节点切换语法
switchover [group_name[.]] [inst_name]
image.png
switchover GRP_DW.DW2
此时DW2已经切换为主库
image.png

4.4 故障异常切换

主库发生故障后,可以通过监视器的 Takeover 命令,将备库切换为主库,继续对外提供服务。如果配置为自动切换模式,确认监视器可以自动检测主库故障,并通知备库接管,这个过程不需要人工干预。

故障异常切换语法

takeover [group_name[.]] [inst_name]

takeover GRP1.DMSERVER_02

备注:切换之前一定要先检查主备库的数据一致性:FLSN序列号是否一致

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服