5 分钟完成 ZooKeeper 数据迁移

本文涉及的产品
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
云原生网关 MSE Higress,422元/月
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: MSE 提供了多种数据迁移的方案,其中主流的方案可以通过 MSE Sync 进行实时同步,这样能够达到平滑不停机的目的,本文将介绍另外一种数据迁移的方式,主要针对业务支持停机的场景,进行一个补充,操作相比更加简单快速。

作者:草谷


前言


MSE 提供了托管版的 ZooKeeper,包含比开源 ZooKeeper 更强大更稳定的功能,能帮助您免去运维 ZooKeeper 集群的烦恼,当我们需要从自建 ZooKeeper 迁移到 MSE ZooKeeper 上面时,往往依赖旧集群的数据,MSE 提供了多种数据迁移的方案,其中主流的方案可以通过 MSE Sync 进行实时同步,这样能够达到平滑不停机的目的,本文将介绍另外一种数据迁移的方式,主要针对业务支持停机的场景,进行一个补充,操作相比更加简单快速。


实现原理


1.png


在对 ZooKeeper 进行了若干次事务操作之后,ZooKeeper 会将内存数据全量写入到本地磁盘中,生成一个 snapshot 开头的快照文件,这个快照文件就包含了该集群的全量数据。同时 ZooKeeper 在节点启动的时候,会首先加载该快照文件进行一次数据初始化。


基于此原理,我们可以将任意要迁移集群的快照文件,放到目标集群的快照路径中,然后重启目标集群就可以将迁移集群的数据加载到自己的内存中了,这样就完成了一次全量数据的迁移。


数据导入实践

2.png


步骤一:获取快照文件


“支持开源 ZooKeeper 3.4.x~3.8.x 的数据迁移导入到 MSE ZooKeeper”


我们先找到自建 ZooKeeper 的 Snap 缓存文件:


文件名为 “snapshot.xxx”格式的:是 ZooKeeper 某个时刻的全量数据,ZooKeeper 会定时写到磁盘中的。


  • 文件路径
     

snapshot.xxx 文件的存储路径:会配置在 ZooKeeper 的 zoo.cfg(zoo.cfg 默认放在 zookeeper 目录的 conf 文件夹下)配置文件中,dataDir 项,例如:


dataDir=/home/admin/zookeeper/zkData

  • 获取文件


snapshot.xxx 一般在目录中会存在多个,拿最近时间生成那个即可:

3.png


步骤二 :准备 MSE 集群


以下表格供参考,购买还需要参考 QPS/TPS 等维度的约束,例如读写数据较小,QPS/TPS 相应也能提高,具体以业务场景为准:


4.jpeg


步骤三:上传快照文件


从注册配置中心列表页点击你购买的实例,进入 ZooKeeper 的基础信息页:


5.png

从“节点管理”进入管理页面:


6.png

点击“数据导入”,上传 Snapshot 文件,文件大小限制会根据你当前 ZooKeeper 配置自动提示,例如本次购买的 4C8G,提示最大不可超过 800M 大小:


7.png

上传完了之后,3 个节点的集群大概 5 分钟左右,数据即可导入重启完成。


结果验证


数据导入完成之后,即可通过 endpoint 进行 MSE ZooKeeper 的访问,获取到迁移数据。


“mse-xxxx-p.zk.mse.aliyuncs.com” 为集群的 endpoint:


 CuratorFrameworkFactory.builder().connectString("mse-xxxx-p.zk.mse.aliyuncs.com:2181")
                    .sessionTimeoutMs(10000).retryPolicy(
                    retryPolicy).
                    build().start();
   ZooKeeper zk = new ZooKeeper("mse-xxxx-p.zk.mse.aliyuncs.com:2181", 30000,
                new Watcher() {
                    @Override
                    public void process(WatchedEvent event) {
                        System.out.println("ZooKeeper=====" + event);
                    }
                });


购买 MSE Zookeeper 享受企业级服务


8.png


9.png

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
缓存 Java Linux
ZooKeeper从单机到集群
ZooKeeper从单机到集群
81 1
|
消息中间件 Java Kafka
zookeeper+kafka 集群和高可用
zookeeper+kafka 集群和高可用
|
存储 分布式计算 资源调度
使用内置zookeeper搭建Hbase集群
使用内置zookeeper搭建Hbase集群
|
存储 分布式计算 资源调度
搭建基于Zookeeper服务的Hbase集群
搭建基于Zookeeper服务的Hbase集群
|
缓存 Java Linux
Zookeeper系列 (二) [单机版]
官方资源包可在 http://zookeeper.apache.com 站点中下载。
87 0
Zookeeper系列 (二) [单机版]
|
Apache 数据库
Apache ZooKeeper - ZooKeeper 集群中 Leader 与 Follower 的数据同步策略
Apache ZooKeeper - ZooKeeper 集群中 Leader 与 Follower 的数据同步策略
310 0
|
存储 消息中间件 分布式计算
Zookeeper 集群
你好看官,里面请!今天笔者讲的是Zookeeper 集群。不懂或者觉得我写的有问题可以在评论区留言,我看到会及时回复。 注意:本文仅用于学习参考,不可用于商业用途,如需转载请跟我联系。
358 1
|
缓存 Cloud Native Dubbo
5分钟完成 ZooKeeper 数据迁移
微服务引擎MSE面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持Nacos/ZooKeeper/Eureka)、云原生网关(原生支持Ingress/Envoy)、微服务治理(原生支持Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。
5分钟完成 ZooKeeper 数据迁移
|
存储 消息中间件 负载均衡
zookeeper集群 +kafka 集群部署(上)
Zookeeper 定义 zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目 Zookeeper 工作机制 Zookeeper是–个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册, 一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些客户端做出相应的反应。 也就是说Zookeeper =文件系统+通知机制
zookeeper集群 +kafka 集群部署(上)