炫“库”行动--人大金仓有奖征文--高可用性之集群管理

1.1 集群的概念

集群是由数据节点,管理节点,HA组件构成的一套7*24小时不间断访问数据的管理系统。
金仓数据库管理系统中一套集群只有一个数据节点为primary,其余为standby。
管理节点:金仓数据库为集群提供了管理。V8R3是watchdog,V8R6是repmgr。
读写分离:金仓数据库提供了读写分离槽做,实现了负载均衡,写操作在primary节点上,读的操作在standby节点,由驱动JDBC实现。

1.2 集群同步原理

流复制是实现集群同步的关键。

  1. 实现
    当用户连接进行数据操作,产生对应的WAL日志记录后,walwriter会周期性地把产生的WALpage刷新到磁盘中,如果配置了备库,则walsender会不断将WAL page发给备库的walreceiver进程,walreceiver进程会把对应WAL page直接写到本地磁盘,同时slave上的startup辅助进程会不断地应用xlog日志,改变本地数据,实现与主库之间的数据同步。而且,通过配置,备库是可以接受用户的只读请求。

在这里插入图片描述
2. 基于流复制协议的wal日志从主节点到备节点实时复制与复用。为了实现数据库的高可用性,需要搭建主库和备库。
3. 这两套数据库之间的数据,通过wal日志,后台自动同步。

1.3 集群的脚本部署

1.3.1 部署信息说明

主节点:192.168.0.240
备节点:192.168.0.241
网关:192.168.0.2
浮动IP:192.168.0.245
部署位置:/opt/Kingbase/ES/V8
集群部署工具文件目录:/home/kingbase/cluster_install
db文件位置:/home/kingbase/cluster_db
集群data目录:/home/kingbase/install/kingbase/data

1.3.2 部署集群前的准备

  1. 按照文档步骤部署V8R6 071集群版数据库
  2. 检查防火墙是否关闭
    主机:systemctl status firewalld
    Systemctl stop firewalld
    备机:systemctl statusfirewalld
    Systemctl stop firewalld

1.3.3 部署配置

  1. 安装一个V8R6单机版
  2. 创建集群部署文件目录/home/kingbase/cluster_install和集群db目录
  3. 创建集群db目录:/home/kingabase/cluster_db
  4. 从单机版的 /安装目录/ES/V8/Server/bin下将install.conf,trust_cluster.sh和V8R6_cluster_install.sh文件复制到集群部署文件目录,并授予775权限:chmod 775 /home/kingbase/cluster_install/* 将授权文件也放在此目录下
    在这里插入图片描述
  5. 从集群版安装目录/opt/Kingbase/ES/V8/DeployTools/zip/Lin64下,将db.zip复制到/home/kingbase/cluster_db/目录下
    在这里插入图片描述
  6. 修改install.conf文件
    on_bmj=0
    all_ip=(192.168.0.240 192.168.0.241)
    install_dir="/home/kingbase/cluster"
    zip_package="/home/kingbase/cluster_db/db.zip"
    license_file=(license.dat)
    db_user=“system”
    db_password=“123456”
    db_port=“54321”
    db_mode=“oracle”
    db_auth=“scram-sha-256”
    data_directory="/home/kingbase/cluster/kingbase/data"
    virtual_ip=“192.168.0.245/24”
    net_device=(eno16777728 eno16777728)
    ipaddr_path="/usr/sbin"
    arping_path="/usr/sbin"
    ping_path="/bin"
    super_user=“root”
    execute_user=“kingbase”
    reconnect_attempts=“6”
    reconnect_interval=“10”
    recovery=“standby”
    ssh_port=“22”
  7. 用root用户执行免密脚本
    cd /home/kingbase/cluster_install
    sh trust_cluster_cluster.sh
    在这里插入图片描述
  8. 执行V8R6_cluster_install.sh
    ./V8R6_cluster_install.sh
    在这里插入图片描述
    在这里插入图片描述

2.1 集群高可用性测试

2.1.1 结束主库进程

在主库进程结束时,集群会自动识别,并进行切机操作,保证系统正常运行。
备库会升级成主库。

  1. 查看集群状态
    在这里插入图片描述

  2. 查看主库进程
    ps -ef | grep kingbase
    在这里插入图片描述

  3. Kill 进程10792
    Kill -9 10792
    在这里插入图片描述

  4. 查看集群状态
    主节点查看:
    在这里插入图片描述
    备节点查看:
    在这里插入图片描述
    可以看到集群备节点已经升级为主节点,主节点挂掉。

  5. 重启主机服务
    在这里插入图片描述

  6. 再次查看集群状态
    在这里插入图片描述
    集群恢复正常

2.1.2 主机断电

  1. 查看状态
    在这里插入图片描述
  2. 主机关机
    在这里插入图片描述
  3. 查看状态
    在这里插入图片描述
    刚开始集群会尝试连接主机,此时主备未曾改变,当过了时间未能连接到主库,备机升为主节点。
    在这里插入图片描述
  4. 主机恢复供电
    在这里插入图片描述
    集群恢复正常。

2.1.3 主机断网

  1. 断网
    在这里插入图片描述
  2. 备机查询状态
    在这里插入图片描述
    可以看到主机一经宕机,备机升为主机
  3. 恢复主机网络
    在这里插入图片描述
  4. 查看集群状态
    在这里插入图片描述
    集群恢复正常

2.1.4 主机reboot

  1. reboot
    在这里插入图片描述
  2. 查看集群状态
    在这里插入图片描述
    可以看到主机已经宕机
  3. 当主机重启成功后,查看集群状态
    在这里插入图片描述
    集群恢复正常

2.1.5 修改主机配置文件名称

  1. 修改主机kingbase.conf文件名称
    在这里插入图片描述
  2. 查看集群状态
    在这里插入图片描述
    集群正常

2.2 故障修复

当集群备机出现出现standby as primary 时:
在这里插入图片描述
操作步骤:

  1. 停止备机服务
    在这里插入图片描述
  2. 克隆主机
    在这里插入图片描述
  3. 启动备机
    在这里插入图片描述
  4. 注册备机
    在这里插入图片描述
  5. 查看状态
    在这里插入图片描述
    集群恢复成功

3.1 高可用性总结

集群的高可用性在生产环境中十分重要,为数据库的容灾提供了平台。在日常使用的故障,集群都可以快速的恢复正常,足以应对日常生活中的各种问题。
高可用解决方案有如下几个特性:可靠性,可恢复性,自动故障检测,和连续服务。
• 可靠性:高可用解决方案应该包括可靠的硬件,以及可靠的软件(包括数据库,应用服务器,和客户 端等)。
• 可恢复性:确定在系统中可能发生什么种类的故障,以及如何尽快从这些故障中恢复对于满足业务对 于可用性的需求非常重要。
• 实时故障检测和处理:如果系统中有某个关键组件无法正常工作,系统应能够及时发现并采取相应的 补救措施。
• 连续运转:当进行系统维护且不允许暂停应用时,系统应能够提供持续的服务能力。
高可用系统应具备以下特征:
• 能够在故障发生的情况下,不间断或者极少中断对外提供的服务。
• 能够对用户透明的支持对系统,数据,或者应用的变更。
• 提供监控能力可以快速发现故障
• 提供快速的恢复能力
• 支持自动的检测和恢复操作
• 实施最佳实践来管理环境
• 最大限度减少数据丢失或避免数据丢失

【本文正在参与炫“库”行动-人大金仓有奖征文】
活动链接

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值