ITPub博客

首页 > 数据库 > 国内数据库 > 当KingbaseES高可用共享集群部署遭遇文件系统损坏

当KingbaseES高可用共享集群部署遭遇文件系统损坏

原创 国内数据库 作者:chengqiang 时间:2022-04-02 13:52:02 0 删除 编辑

编者按:
在某次部署KingbaseES高可用共享集群过程中,遇到一些问题,尤其是文件系统损坏问题,值得记录。因此编写此文,记录问题的解决方法, 方便后续查找,也分享出来,希望帮到更多的人。

KingbaseES高可用集群可用性极高,一直备受客户好评。在高可用集群的基础上,经过持续的研发投入,诞生了的KingbaseES高可用共享集群,具备高可用和高性能的特点,广受客户好评。

(一)在部署KingbaseES高可用共享集群时,需要配置时钟同步、共享磁盘等。
(1) 配置时钟同步
时钟同步可以采用ntpd同步,也可通过timesyncd。
采用timesyncd,需要修改/etc/systemd/timesyncd.conf,配置时钟同步客户端,
通过timedatactl管理
查看命令如下:
timedatectl show-timesync
(2)配置共享磁盘
由于KingbaseES高可用共享集群,需要多节点共享磁盘,因此需要采用DAS、NAS、SAN等存储。 本次采用FC磁盘阵列作为共享磁盘服务,FC磁盘整阵列就是光纤磁盘阵列。
在共享磁盘客户端制作多路径绑定,可以提高磁盘的可用性,有效防止磁盘故障、网络故障导致的数据丢失或损坏。
首先在配置安装multipathd,修改 /etc/multipath.conf (具体配置参见其他文章,不是本文重点), systemctl restart multipathd启动。
在FC磁盘整列服务端划分磁盘,在磁盘客户端(也就是数据库服务端),执行rescan-scsi-bus.sh后,在主机群可以找到新创建的盘。
这时候进行多路径聚合
multipath –v2
查看多路径绑定
multipath –ll
防止系统重启导致的磁盘名变化,配置udev规则,固定磁盘名,规则如下
udevadm info --query=all --name=/dev/dm-0
vim /etc/udev/rule.d/60-scsi.rules
ENV{ID_SERAIL}=="...",ENV{DM_WWN}=="..."RUN+="/bin/sh -c 'mknod /dev/chmpatha b $major $minor; chmod 0644 /dev/chmpatha; rm -f /dev/block/$major\:$minor; ln -s /dev/chmpatha /dev/block/$major\:$ninor'"
以上配置结束后,就可以愉快的安装KingbaseES高可用共享集群,这里都是集成化部署工具,安装很快。
(二)安装完成后,一般会进行简单测功能测试和可用性测试,以便将问题尽早解决掉。
在进行 断网的测试中,发现数据库一直在不停的切换节点。查看日志,发现是文件系统损坏导致的数据库无法启动。
采用fsck的方法进行修复,
fsck -a /dev/mapper/mpatha
但是未能修复。
再次梳理日志,KingbaseES集群组件在报文件系统异常前,没有任何异常日志。在KingbaseES报错文件系统异常前,仅有kenel相关日志。根据一般经验,怀疑可能是双挂导致的磁盘损坏。
继续分析集群各节点的挂载记录,发现一些mpatha磁盘在系统重启后,在另一节点莫名其妙的挂载上了,目前推断可能是双挂导致的文件系统损坏,但是无法继续敲定重启为何导致双挂?
没有办法,只有将磁盘重新格式化,继续进行复现测试,终于抓住了问题,在异常重启后的机器上出现一条挂载记录
/dev/mappper/mpatha 1007G 146M 956G 1% /media/root/9g0oc559-2d0a-4e88-a1e7-1b1badc9a7
实际上磁盘在另外节点正在被数据库管理进程使用,显然是双挂,那么这条挂载记录怎么来的。
重新思考操作的每一步骤,最终发现了问题的根本原因
没错,正是操作系统的自动挂载导致的双挂问题。
于是我们将"自动挂载"选项去掉,同时为了保险起见,将数据库服务端所在节点的图形界面关掉
在图形模式下使用如下命令可以切换到纯命令行模式:
systemctl isolate multi-user.target
如果需要每次重启都进入纯命令行模式,可以使用如下命令:
systemctl set-default multi-user.target
至此,终于解决了文件系统损坏的问题。
这个问题从开始到结束历时接近2个工作日,虽然有波折,但是通过自行定位为客户解决潜在大问题,内心还是很高兴。总结一下, 由于服务器均部署的国产图形化Linux操作系统,在图形化界面,会默认设置自动挂载(见下图)。由于自动挂载导致的数据库实例盘双挂,导致文件系统损坏。之后,将服务器“自动挂载”取消,同时使用命令“systemctl set-default multi-user.target ”设置默认为命令界面,防止误操作。这样问题得到得到最终解决。

【更多人大金仓数据库信息, 详见 】

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70016212/viewspace-2885523/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2022-04-02

  • 博文量
    1
  • 访问量
    34