Kingbase V8R3流复制切换恢复重做备机

流复制切换恢复

集群数据库节点
A 主库 — node1
B 备库 — node2
C 备库 — node3
流复制数据库
● 确认数据库进程已启动
查看每一个节点数据库进程是否正常

ps -ef | grep kingbase

● 确认主备流复制正常
在主库上查询流复制连接是否正常,ksql连接主库查询

select * from sys_stat_replication;

● 确认复制槽正常

select * from sys_replication_slots;

注:主库、备库查询到的复制槽数量、复制槽名称应该一样

手动切换

如果A主库故障,需要手动切换
● 在主库上卸载VIP

#卸载VIP
ip addr del $VIP dev $DEV
#例: ip addr del 192.168.1.222/24 dev eth0

● 选择一个备库升主

#手动将备库升主/opt/Kingbase/ES/V8/Server/bin/sys_ctl -D /opt/Kingbase/ES/V8/data promote
#修改data/kingbase.conf文件,将新主机改为异步
#设置synchronous_standby_names=''
#重载主库配置文件/opt/Kingbase/ES/V8/Server/bin/sys_ctl -D /opt/Kingbase/ES/V8/data reload

● 在新主机上加载VIP

#加载VIP
ip addr add $VIP dev $DEV

#arping广播VIP地址
arping -U $VIP -I $DEV -w 2 -c 2

#注1:VIP指浮动ip地址,DEV指网卡名称
#注2:ip addr命令加载VIP时,vip字符串需要带掩码,arping命令不需要掩码
#例: ip addr del 192.168.1.222/24 dev eth0
#     arping -U 192.168.1.222 -I eth0 -w 2 -c 2

● 使其他备机跟随新主机
在备机上执行以下命令

#修改备库data/recovery.conf,指向新主机
#文件中primary_conninfo中 字段host=主机IP
#重启备库
/opt/Kingbase/ES/V8/Server/bin/sys_ctl -D /opt/Kingbase/ES/V8/data restart

#连接主机查询,确认流复制是否正常
/opt/Kingbase/ES/V8/Server/bin/ksql -h 主机IP -U SYSTEM -W 密码 -p 54321 -c "select * from sys_stat_replication;"

#如果流复制中查询不到备机,查看备库data/sys_log中数据库打印
#错误1:没有对应复制槽$SLOT_NAME
#解决1:在主库上创建复制槽$SLOT_NAME
/opt/Kingbase/ES/V8/Server/bin/ksql -h 主机IP -U SYSTEM -W 密码 -p 54321 -c "select sys_create_physical_replication_slot('$SLOT_NAME');"

#错误2:复制槽$SLOT_NAME_1已被使用
#解决2:使用已有的其他复制槽$SLOT_NAME_2,可以查询主机上有哪些复制槽
#      修改备机的recovery.conf #host修改为现在主节点IP
#      设置primary_slot_name='$SLOT_NAME_2'
#      重启备库
/opt/Kingbase/ES/V8/Server/bin/sys_ctl -D /opt/Kingbase/ES/V8/data restart

#错误3:时间线分叉或LSN报错
#解决3:通过sys_rewind追平数据
#1. 备份recovery.conf文件到data目录外
#2. 关闭备库
/opt/Kingbase/ES/V8/Server/bin/sys_ctl -D /opt/Kingbase/ES/V8/data stop
#3. 执行sys_rewind追平数据
/opt/Kingbase/ES/V8/Server/bin/sys_rewind -D /opt/Kingbase/ES/V8/data --source-server="host=主机IP user=SYSTEM password=密码 dbname=TEST port=54321"
#4. 拷贝刚备份的recovery.conf文件到data目录中,覆盖
#5. 启动备库
/opt/Kingbase/ES/V8/Server/bin/sys_ctl -D /opt/Kingbase/ES/V8/data start

● 恢复原主机为备机,跟随新主机
在故障主库上执行以下命令

#主备先追平数据
/opt/Kingbase/ES/V8/Server/bin/sys_rewind -D /opt/Kingbase/ES/V8/data --source-server="host=主机IP user=SYSTEM password=密码 dbname=TEST port=54321"

#配置备机流复制
#1. 拷贝Server/etc/recovery.done => data/recovery.conf
cp /opt/Kingbase/ES/V8/Server/etc/recovery.conf /opt/Kingbase/ES/V8/data/recovery.conf
#2. 修改recovery.conf中 字段host=主机IP

#启动备数据库
/opt/Kingbase/ES/V8/Server/bin/sys_ctl -D /opt/Kingbase/ES/V8/data start

● 流复制设置为同步

#修改主库data/kingbase.conf文件
#设置synchronous_standby_names='1 (备机1 备机2)'
#查询主库,可以获取 '备机1,备机2' 的名称
/opt/Kingbase/ES/V8/Server/bin/ksql -h 主机IP -U SYSTEM -W 密码 -p 54321 -c "select application_name from sys_stat_replication;"
#例:查询结果为  node1  node3
#设置synchronous_standby_names='1 (node1 node2)'

#重载主库配置文件
/opt/Kingbase/ES/V8/Server/bin/sys_ctl -D /opt/Kingbase/ES/V8/data reload

重做备机

#确认备机已停止运行,如果没有,手动停止备库
/opt/Kingbase/ES/V8/Server/bin/sys_ctl -D /opt/Kingbase/ES/V8/data stop

#备份原data目录
mv /opt/Kingbase/ES/V8/data /opt/Kingbase/ES/V8/data_bak

#重新拉取备库
/opt/Kingbase/ES/V8/Server/bin/sys_basebackup -D /opt/Kingbase/ES/V8/data -h 主机IP -U SYSTEM -W 密码 -p 54321 -X stream -F p -P

####################################################
## 有原来备份data目录的情况下,且原data是备库
####################################################
#从原备份data目录中拷贝recovery.conf,配置流复制
#recovery.conf中需要primary_conninfo中字段host=主机IP
cp /opt/Kingbase/ES/V8/data_bak/recovery.conf /opt/Kingbase/ES/V8/data/recovery.conf

#从备份的data中拷贝复制槽
cp -r /opt/Kingbase/ES/V8/data_bak/sys_replslot/* /opt/Kingbase/ES/V8/data/sys_replslot

#启动备数据库
/opt/Kingbase/ES/V8/Server/bin/sys_ctl -D /opt/Kingbase/ES/V8/data start
--------------------------------------------------

##################################################
## 如果没有备份原data目录,或有其他错误
##################################################
#从etc目录下拷贝recovery.conf,配置流复制
#recovery.conf中需要primary_conninfo中字段host=主机IP
cp /opt/Kingbase/ES/V8/etc/recovery.done /opt/Kingbase/ES/V8/data/recovery.conf

#启动备数据库
/opt/Kingbase/ES/V8/Server/bin/sys_ctl -D /opt/Kingbase/ES/V8/data start

#连接备库创建复制槽
#复制槽名称$SLOT_NAME请参考主库上复制槽名称,复制槽数量和主库相同
/opt/Kingbase/ES/V8/Server/bin/ksql -h localhost -U SYSTEM -W 密码 -p 54321 -c "select sys_create_physical_replication_slot('$SLOT_NAME');"
--------------------------------------------------


#连接主机查询,确认流复制是否正常
/opt/Kingbase/ES/V8/Server/bin/ksql -h 主机IP -U SYSTEM -W 密码 -p 54321 -c "select * from sys_stat_replication;"

#连接本地备机,查看重做后的备机复制槽是否正常
/opt/Kingbase/ES/V8/Server/bin/ksql -h localhost -U SYSTEM -W 密码 -p 54321 -c "select * from sys_replication_slots;"

recovery.conf

standby_mode='on'
primary_conninfo='port=54321 host=192.168.0.230 user=SYSTEM password=MTIzNDU2 application_name=node2'
recovery_target_timeline='latest'
primary_slot_name ='slot_node2'

--主机ip—当前备机node2---备机复制槽名称slot_node2

#standby_mode=on ,表示开启主备复制模式。
#primary_conninfo: 备库连接主库的配置信息。
#其中 port 代表数据库服务端口号;host 代表主库的 ip 地址;user 代表具有 replication 权限的用户;password 代表用户口令(base64 加密);application_name 对应主库 kingbase.conf 文件中“synchronous_standby_names='1(node1,node2)”配置。
#recovery_target_timeline:备库启动后执行 recovery 到指定的 timeline(默认 latest,最近的timeline)
#primary_slot_name:物理复制槽的名称。对应sys_replication_slots视图所查询到的slot_name.
#注意:在主库中的文件名称为 recovery.done,当主备发生切换后,原主库切换为备库后recovery.done 会自动被改为 recovery.conf,并自动修改配置文件内容;而原备库切换为主库后,会自动修改为 recovery.done。
#当集群切换过程中,如果出现“脑裂”双主现象,可以检查备库的 recovery.conf,是不是被修改成了 recovery.done。

查看各节点状态预防双主产生

select sys_is_in_recovery();
 
#函数返回结果“t”表示此节点是备库,“f”表示此节点是主库 

FAQ
若watchdog无法正常加入集群可以通过以下命令尝试

#首先通过pool_nodes 确定节点node_id
ksql -USYSTEM TEST -p 9999
show pool_nodes;
#kingbase用户执行pcp_attach_node
pcp_attach_node -U kingbase -W 123456 -h $PRARMY_HOST -n 0

判断主备

select sys_is_in_recovery();

#函数返回结果“t”表示此节点是备库,“f”表示此节点是主库
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Kingbase V8R3是一款基于PostgreSQL的国产数据库管理系统,适用于Windows操作系统的安装包是指安装Kingbase V8R3的程序文件。在安装该软件之前,首先需要下载Kingbase V8R3 Windows安装包,可以通过Kingbase官方网站或其他合法渠道进行下载。 安装Kingbase V8R3的第一步是运行下载的安装包。双击安装包文件,系统会弹出安装向导界面。按照向导的指示,选择安装路径和其他选项,然后点击“下一步”按钮。 接下来,安装程序将开始复制和解压缩文件到指定的安装路径。这个过程可能需要一些时间,请耐心等待。 完成文件复制后,安装程序会自动配置Kingbase V8R3的相关设置。在此期间,可以选择是否创建数据库实例和设置数据库密码。如果不需要额外的设置,可以选择默认选项。 安装程序开始配置Kingbase V8R3数据库服务器。这个过程包括创建数据库连接、配置网络设置等。配置过程中可能会需要输入一些信息,如服务器端口号、管理员账号等。 安装完成后,可以通过开始菜单或桌面上的快捷方式启动Kingbase V8R3数据库管理系统。在启动后,可以登录数据库管理系统,开始使用Kingbase V8R3进行数据库管理和操作。 需要注意的是,安装Kingbase V8R3之前需要确保系统满足软件的最低系统要求,并且要具备管理员权限。同时,在安装过程中请遵循安装向导提供的指示,确保安装过程顺利进行。 总之,Kingbase V8R3 Windows安装包提供了一种方便的方式来安装和配置Kingbase V8R3数据库管理系统,让用户能够在Windows操作系统上快速搭建和使用自己的数据库环境。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值