docker - 如何将 redis 转储从 3.2 版(无 docker)恢复到 6.0(使用 bitnami docker 映像运行)
问题描述
初始目标
目前我们有一个旧版本的 redis 在单个物理服务器上运行(redis v3.2.1)。目标是为 HA 提供一个带有哨兵的 redis/slave 拓扑。实现此目的的一种方法是使用版本 6 创建此单个实例的从属。不幸的是,版本 3 和 6 之间存在不兼容性。
我尝试做什么
如何重现
- 使用以下命令安装单个 redis 实例:
apt install -y redis-server redis-tools
- 使用这个 docker-compose.yml 文件创建一个 redis 容器
version: '2' services: redis-master: #image: 'bitnami/redis:6.0' #image: 'bitnami/redis:4.0.2-r1' image: 'bitnami/redis:4.0.2-r0' container_name: redis-master volumes: - 'redis_data_master:/bitnami/redis/data' ports: - '6379:6379' environment: - REDIS_REPLICATION_MODE=master - ALLOW_EMPTY_PASSWORD=yes - REDIS_DISABLE_COMMANDS=FLUSHDB,FLUSHALL volumes: redis_data_master: driver: local
docker-compose up -d
docker stop redis-master
# Replace
test_redis_data_masterby the right folder
sudo cp dump.rdb /var/lib/docker/volumes/test_redis_data_master/_data/dump.rdb
使用这个 docker compose 文件,它适用于 v4.0.2-r0,但不适用于 v4.0.2-r1。
cf日志在这里:
v4.0.2-r0
30:M 12 月 13:52:55.993 # 服务器初始化 30:M 12 月 13:52:58.049 * 从磁盘加载的数据库:2.056 秒 30:M 12 月 13:52:58.049 * 准备接受连接
数据库已加载成功地
v4.0.2-r1
20:M 01 Dec 13:49:05.472 # 服务器初始化 20:M 01 Dec 13:49:05.472 * 准备接受连接
数据库为空
结论
你能帮忙解决这个问题吗?有人遇到过同样的问题或同样的情况吗?
提前感谢您的帮助:D
解决方案
您是否尝试过直接从 4.0 升级到 5.0?我不认为逐个版本升级是一个好主意,因为我们每天都会发布一个新版本,有时,他们会用另一个版本修补错误。除此之外,我建议您按照官方文档来升级您的数据库。主要版本通常意味着不兼容的更改,因此我很确定您会发现一些问题。仅更改图像标签很可能不起作用。
推荐阅读
- scala - Scala:值 _2 不是 scala.concurent.Future[(String, Float)] 的成员
- sql - 使用 powershell 执行查询
- ruby - 让它更简单,所以它会更快
- javascript - 使空 div 的绝对内容高度相同
- javascript - HTML/JS 多个饼图问题
- arrays - 如何通过powershell将每一行文本文件保存为数组
- http - http是否为请求和响应建立连接
- node.js - 掌握 VPS 主机技术的人是否可以在所有或大量在线 VPS 主机上部署其 NodeJS _ ReactJS 应用程序?
- excel - 使用 Excel VBA 更改图表中源数据的工作表名称
- arrays - Array.Max 打印包含最大值的整个数组(C#)