乐趣区

关于云原生:5-分钟完成-ZooKeeper-数据迁移

作者:草谷

前言

MSE 提供了托管版的 ZooKeeper,蕴含比开源 ZooKeeper 更弱小更稳固的性能,能帮忙您免去运维 ZooKeeper 集群的懊恼,当咱们须要从自建 ZooKeeper 迁徙到 MSE ZooKeeper 下面时,往往依赖旧集群的数据,MSE 提供了多种数据迁徙的计划,其中支流的计划能够通过 MSE Sync 进行实时同步,这样可能达到平滑不停机的目标,本文将介绍另外一种数据迁徙的形式,次要针对业务反对停机的场景,进行一个补充,操作相比更加简略疾速。

实现原理

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

基于此原理,咱们能够将任意要迁徙集群的快照文件,放到指标集群的快照门路中,而后重启指标集群就能够将迁徙集群的数据加载到本人的内存中了,这样就实现了一次全量数据的迁徙。

数据导入实际

步骤一:获取快照文件

“反对开源 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 个别在目录中会存在多个,拿最近工夫生成那个即可:

步骤二:筹备 MSE 集群

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

步骤三:上传快照文件

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

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

点击“数据导入”,上传 Snapshot 文件,文件大小限度会依据你以后 ZooKeeper 配置主动提醒,例如本次购买的 4C8G,提醒最大不可超过 800M 大小:

上传完了之后,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 享受企业级服务

退出移动版