• 5 分钟完成 ZooKeeper 数据迁移


    作者:草谷

    前言

    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

  • 相关阅读:
    19.Mybatis之动态SQL
    18.Mybatis的配置文件标签属性自动提示
    17.Mybatis的基本使用及入门案例
    16.jQuery属性操作
    15.jQuery淡入淡出效果
    14.jQuery常用方法
    13.jQuery选择器
    12.JavaScript基础知识
    11.浅析Java中的final关键字
    10.基于Tomcat的SmartUplaod文件上传
  • 原文地址:https://www.cnblogs.com/alisystemsoftware/p/16769460.html
Copyright © 2020-2023  润新知