首页 > 解决方案 > 如何将 redis 转储从 3.2 版(无 docker)恢复到 6.0(使用 bitnami docker 映像运行)

问题描述

初始目标
目前我们有一个旧版本的 redis 在单个物理服务器上运行(redis v3.2.1)。目标是为 HA 提供一个带有哨兵的 redis/slave 拓扑。实现此目的的一种方法是使用版本 6 创建此单个实例的从属。不幸的是,版本 3 和 6 之间存在不兼容性。

我尝试做什么

如何重现

apt install -y redis-server redis-tools

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_master by 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

标签: dockerredisdocker-composerestorebitnami

解决方案


您是否尝试过直接从 4.0 升级到 5.0?我不认为逐个版本升级是一个好主意,因为我们每天都会发布一个新版本,有时,他们会用另一个版本修补错误。除此之外,我建议您按照官方文档来升级您的数据库。主要版本通常意味着不兼容的更改,因此我很确定您会发现一些问题。仅更改图像标签很可能不起作用。


推荐阅读