记一次分布式数据库节点恢复思路

简介: 分布式数据库节点恢复思路

前言


前几天又接到一个数据库运维的任务,客户那边是一个 5 节点(两个主表服务器,三个从表服务器)的分布式数据库集群,这次问题是第二个节点所在的服务器(备用主表服务器)硬件坏了,修完之后重装了一个系统,整个服务器就是从零开始光秃秃的一台崭新服务器了。这也是分布式数据库的好处,高可用!坏了一台无所谓,数据有副本,不会丢,整个集群的服务依然跑着好好的,不过毕竟坏了一个节点,所以需要我这个运维去跑一趟,把坏了的那个节点重新加入,继续把保险装上。


正文



我先在公司私有云环境搭建了一个模拟坏境(敲重点,现场调试前,要提前搭环境),然后重置第二个节点所在的服务器(相当于重装系统),好了,现场环境已经复现了。

通过新增节点的步骤,一阵脚本操作,非常顺利,现在新的节点加上了,但这个节点只是一个从表服务器,接下来需要把它变成主表服务器的角色,说白了就是在从表服务器本身提供的 5 个服务之外,额外启动两个主表服务器的服务,就 ok 了。


接下来是思路的重点!


我接触这个分布式数据库也还不久,第一个额外的服务是隶属于 hadoop 的 NameNode 服务,第一印象只是:起不来,不知道为啥。查了下资料,需要手动同步 namenode 的日志,ok,同步完之后就可以了。


第二个额外的服务是隶属于 Zookeeper 的 QuorumPeerMain 服务,第一印象同样是:起不来,不知道为啥。也百度不出结果,但也不是没有收获,我知道了 zookeeper 的日志所在的目录,再次启动集群时,我一直盯着日志文件,报错信息终于出现了:


2021-10-12 13:17:03,570 [myid:4] - ERROR [main:QuorumPeerMain@94] - Unexpected exception, exiting abnormally
java.lang.RuntimeException: My id 4 not in the peer list
        at org.apache.zookeeper.server.quorum.QuorumPeer.startLeaderElection(QuorumPeer.java:479)
        at org.apache.zookeeper.server.quorum.QuorumPeer.start(QuorumPeer.java:411)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.runFromConfig(QuorumPeerMain.java:156)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:116)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:79)


原来我新增节点的操作把 zookeeper 里的 myid 顺延成了 4 (原来是 2),好了,找到问题就好办了,找到新节点的 myid 配置文件,把 4 改成 2。重新启动数据库集群,一切 ok!


这里有个很重要的点就是:程序出现错误时,如果不能本机源代码调试,要学会找错误日志,利用日志的提示信息就指导自己的下一步。


值得一提的是:百度、问人终究只是快餐,需要掌握的技能一定要利用好第三方技术的官方文档(包括书籍),这是我系统学习某个技术时的经验。最近的一次服务器机房网络问题就是通过系统学习网络知识解决的,知识系统掌握之后,问题解决起来就不会摸不着头脑,而且思路会非常清晰!

目录
相关文章
|
8月前
|
存储 关系型数据库 分布式数据库
喜报|阿里云PolarDB数据库(分布式版)荣获国内首台(套)产品奖项
阿里云PolarDB数据库管理软件(分布式版)荣获「2024年度国内首版次软件」称号,并跻身《2024年度浙江省首台(套)推广应用典型案例》。
|
12月前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
阿里云PolarDB云原生数据库在TPC-C基准测试中以20.55亿tpmC的成绩刷新世界纪录,展现卓越性能与性价比。其轻量版满足国产化需求,兼具高性能与低成本,适用于多种场景,推动数据库技术革新与发展。
|
12月前
|
SQL 关系型数据库 数据库
【YashanDB知识库】OM仲裁节点故障后手工切换方案和yasom仲裁重新部署后重新纳管数据库集群方案
本文介绍了主备数据库集群的部署、OM仲裁故障切换及重新纳管的全过程。首先通过解压软件包并调整安装参数完成数据库集群部署,接着说明了在OM仲裁故障时的手动切换方案,包括关闭自动切换开关、登录备节点执行切换命令。最后详细描述了搭建新的yasom仲裁节点以重新纳管数据库集群的步骤,如生成配置文件、初始化进程、执行托管命令等,确保新旧系统无缝衔接,保障数据服务稳定性。
|
6月前
|
算法 调度
【孤岛划分】分布式能源接入弹性配电网模型研究【IEEE33节点】(Matlab代码实现)
【孤岛划分】分布式能源接入弹性配电网模型研究【IEEE33节点】(Matlab代码实现)
594 10
|
11月前
|
安全 网络安全 数据库
YashanDB分布式节点间SSL连接配置
本文介绍YashanDB分布式节点间SSL连接配置方法,确保通信安全。需统一为整个集群配置SSL,使用相同根证书签名的服务器证书,否则可能导致连接失败或数据库无法启动。文章详细说明了使用OpenSSL生成根证书、服务器私钥、证书及DH文件的步骤,并指导如何将证书分发至各节点。最后,通过配置数据库参数(如`din_ssl_enable`)并重启集群完成设置。注意,证书过期需重新生成以保障安全性。
|
存储 容灾 关系型数据库
PolarDB开源数据库进阶课11 激活容灾(Standby)节点
本文介绍了如何激活PolarDB容灾(Standby)节点,实验环境依赖于Docker容器中用loop设备模拟共享存储。通过`pg_ctl promote`命令可以将Standby节点提升为主节点,使其能够接收读写请求。激活后,原Standby节点不能再成为PolarDB集群的Standby节点。建议删除对应的复制槽位以避免WAL文件堆积。相关操作和配置请参考系列文章及视频教程。
295 1
|
8月前
|
存储 NoSQL MongoDB
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
338 8
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
|
6月前
|
并行计算 算法 安全
【ADMM、碳排放】基于分布式ADMM算法的考虑碳排放交易的电力系统优化调度研究【IEEE6节点、IEEE30节点、IEEE118节点】(Matlab代码实现)
【ADMM、碳排放】基于分布式ADMM算法的考虑碳排放交易的电力系统优化调度研究【IEEE6节点、IEEE30节点、IEEE118节点】(Matlab代码实现)
311 0
|
6月前
|
算法 安全 新能源
基于DistFlow的含分布式电源配电网优化模型【IEEE39节点】(Python代码实现)
基于DistFlow的含分布式电源配电网优化模型【IEEE39节点】(Python代码实现)
447 0