16boke - 一路博客

Codis2迁移到Codis3

Codis 3.x 修改了 codis-dashboard 与 codis-proxy 之间的通信方式,因此 Codis 2.x 并不兼容。但是我们提供了手动升级方案。

注意1:升级时,需要保证所有 slot 都处在 online 状态。即没有任何数据迁移操作正在进行。

注意2:升级完成后,需要手动关闭 Codis 2.x 的所有 proxy 和 config 组件。

step 1. 导出配置文件,以下所有命令都在codis3.x的bin安装目录中

$ ./bin/codis-admin --config-dump --product=codis_v2.0 --zookeeper=127.0.0.1:2181 -1 | tee codis_v2.0.json

该命令会从 zookeeper 上拉取 /zk/codis/db_codis_v2.0 下全部的文件,并组织成 json 格式并输出。

选项 -1 表示配置文件是 Codis 1.x 版本,缺省是 Codis 3.x 版本。

step 2. 转换配置文件

$ ./bin/codis-admin --config-convert codis_v2.0.json | tee codis_v3.0.json

该命令会将 Codis 1.x 版本的配置文件中有效信息提取出来,并转成 Codis 3.x 版本的配置文件并输出。

step 3. 更新配置文件

注意:更新配置文件时,请确保 Codis 3.x 中该集群不存在,否则可能导致更新失败或者集群状态异常。

$ ./bin/codis-admin --config-restore=codis_v3.0.json --product=codis_v3.0 --zookeeper=127.0.0.1:2181 --confirm

该命令会将 Codis 3.x 版本的配置文件提交到 /codis3/codis_v3.0 目录下。

选项 --confirm 选项表示确认提交,缺省时该命令仅仅打印配置文件作为调试。

step 4. 启动 Codis 3.x dashboard 以及 proxy

过程参考之前章节。因为集群信息已经存在,所以可以安全启动 codis-dashboard,并逐一添加 codis-proxy 到集群中。

step 5. 关闭 Codis 2.x dashboard 以及 proxy

Codis 3.x 的组件兼容 Jodis 协议。

因为 Codis 2.x 与 Codis 3.x 在外部存储中的组织结构不同,所以可以安全的 kill 掉全部 Codis 2.x 组件。

注意:关闭过程请不要使用 kill -9,因为旧组件在退出时会自动清理部分注册信息。


Codis