踩坑之路——Redis迁移遇到的一路坑

男娘i 2022-06-06 08:07 379阅读 0赞

坑点

redis-Docker 里面没有redis.conf ?

redis 从 rdb 无缝切换到 aof 备份方式

redis 迁移命令


1. Redis-Docker 里面没有 redis.conf

需求是,公司要上云,把之前的机房的redis迁移到云redis。阿里的数据库redis版只支持aof方式,而公司之前的redis用的是rdb,所以首先需要把 rdb 转换成 aof ,所以需要改 redis.confappendonly 的选项,但是在docker中查找,没有发现conf 文件,一番检查发现,使用的官方 redis docker 的 dockefile 中是这样写的。

  1. RUN mkdir /data && chown redis:redis /data
  2. VOLUME /data
  3. WORKDIR /data
  4. COPY docker-entrypoint.sh /usr/local/bin/
  5. ENTRYPOINT ["docker-entrypoint.sh"]
  6. EXPOSE 6379
  7. CMD ["redis-server"]

怀疑是当时run的时候参数不对,或者是后来被删除了,正确的run 方法

  1. docker run -d -it \
  2. -p 6379:6379 \ -v /path to redis.conf:/etc/redis/redis.conf \ -v /expose path data:/data \ --restart always \ --name some_redis \ redis-server /etc/redis/redis.conf

这样就带了conf 进去,同时使用conf 来启动 ,这里要注意,conf 文件中的 daemonize yes 要改为no ,这个参数代表着 redis-server 会 运行在后台,docker 会自动退出 。conf文件可以从其他地方copy一份过来.

这里有很多解决方案,如果你想重新跑一个新的容器,你需要先将 rdb.dump 文件 copy 到容器外面。如果你不想重新跑一个新的容器, 你也可以直接在之前的reids容器里面创建配置文件。


2. redis 从 rdb 无缝切换到 aof 备份方式

既然 redis.conf 文件的问题解决了,就可以开始考虑开启aof 生成 appendonly.aof文件,然后提交给远端redis服务器就好了,思路很简单,这里就不描述我没有找到正确方法之前的一堆狗屎操作了,直接贴上正确的步骤,很简单:

  1. //在docker 内执行 redis-cli 切换到客户端,设置aof 开启,这时候已经有了aof文件了
  2. config set appendonly yes
  3. config set save ""

这样,就有了aof 文件了,这也说明了,这样开启aof 不是增量的,而是所有的数据。

这里做操作之前记得先备份 rdb.dump 文件,以免误操作了,还能恢复数据。如果你的rdb文件是在docker 内的 那么你可以这样来备份。

  1. docker cp <containerId>:/docker-inner/rdb.dump /dokcer-outer/rdb.dump.back

3. redis 迁移命令

接下来两步是针对迁移到 阿里云的云数据库redis,如果只是普通迁移,直接拷贝持久化文件即可。

  1. redis-cli -h <-填写云redishost地址-> -a <-云redis密码-> --pipe < appendonly.aof

由于云数据库 Redis 版仅支持从阿里云内网访问,所以此操作方案仅在阿里云 ECS 上执行才生效。 若您的 Redis 不在阿里云 ECS 服务器上,您需要将原有的 AOF 文件复制到 ECS 上再执行以上操作。所以这里还需要把aof 从之前的服务器放到 关联的ecs上来执行上面的迁移命令,真是全是坑!

吐槽一下没有运维的坏处,就是作为一只后端狗,搞起来真的很烦啊!!而且日渐感觉到运维的重要性就是,服务了很多下游,其中真的有很多门道,膜拜一下运维大大。还有要吐槽的就是 docker 里面的初识环境一定要记得带上一些基础套件,不然 vim 、ping 什么都没有! ~ 全部需要手动安装,等到用的时候真的想死的心都有了~

最终!redis 上云迁移完成!!~

这里写图片描述


发表评论

表情:
评论列表 (有 0 条评论,379人围观)

还没有评论,来说两句吧...

相关阅读

    相关 OSS文件下载

    过年过的在家带着无聊但是什么也不想干,哎,废了废了 今天做OSS文件下载的时候,怎么整都是乱码,整崩溃了。 官网给的例子也是有点狗(如下) // Endpoint

    相关 GraphQL

    为了更好的支持前端能够自由组合、展示收到的数据,笔者使用[graphql-go][] 框架开发了负责的模块,但测试过程中发现,使用GraphQL会有n+1 query的问题。经

    相关 html2canvas

    前言 早有耳闻这个[html2canvas][]比较坑,但无奈于产品需求的压迫,必须实现html转图片的功能,自此走上了填坑之路,好在最后的效果还算令人满意,这才没有误了

    相关 Redis遇到

    1.Redis连接不上的问题 1.1 首先查看applicaiton.yml文件中是否设置了密码password: 123456,然后看redis本身是否有密码(redis第