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

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 分布式数据库节点恢复思路

前言


前几天又接到一个数据库运维的任务,客户那边是一个 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!


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


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

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
5月前
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中如何与事务隔离级别结合使用
乐观锁在分布式数据库中如何与事务隔离级别结合使用
|
3月前
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中如何与事务隔离级别结合使用
乐观锁在分布式数据库中如何与事务隔离级别结合使用
|
5月前
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
542 0
|
1月前
|
Cloud Native 关系型数据库 分布式数据库
PolarDB 分布式版 V2.0,安全可靠的集中分布式一体化数据库管理软件
阿里云PolarDB数据库管理软件(分布式版)V2.0 ,安全可靠的集中分布式一体化数据库管理软件。
|
2月前
|
关系型数据库 分布式数据库 数据库
PostgreSQL+Citus分布式数据库
PostgreSQL+Citus分布式数据库
93 15
|
3月前
|
SQL 关系型数据库 分布式数据库
Citus 简介,将 Postgres 转换为分布式数据库
【10月更文挑战第4天】Citus 简介,将 Postgres 转换为分布式数据库
149 4
|
3月前
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
75 1
|
3月前
|
SQL NoSQL MongoDB
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
74 0
|
5月前
|
存储 缓存 负载均衡
【PolarDB-X 技术揭秘】Lizard B+tree:揭秘分布式数据库索引优化的终极奥秘!
【8月更文挑战第25天】PolarDB-X是阿里云的一款分布式数据库产品,其核心组件Lizard B+tree针对分布式环境优化,解决了传统B+tree面临的数据分片与跨节点查询等问题。Lizard B+tree通过一致性哈希实现数据分片,确保分布式一致性;智能分区实现了负载均衡;高效的搜索算法与缓存机制降低了查询延迟;副本机制确保了系统的高可用性。此外,PolarDB-X通过自适应分支因子、缓存优化、异步写入、数据压缩和智能分片等策略进一步提升了Lizard B+tree的性能,使其能够在分布式环境下提供高性能的索引服务。这些优化不仅提高了查询速度,还确保了系统的稳定性和可靠性。
128 5
|
5月前
|
运维 安全 Cloud Native
核心系统转型问题之分布式数据库和数据访问中间件协作如何解决
核心系统转型问题之分布式数据库和数据访问中间件协作如何解决