redis 迁移工具 redis-port 从阿里云迁移到aws
对于 redis 的 迁移我在网上看到了很多方法,有使用redis-dump 的,有使用?aof导入方式,有rdb文件迁移方式,和redis-port。 由于我是将? redis? 从阿里云迁移到AWS,那么很多方法都被pass掉了,最后我想使用的方法是redis-dump? 和redis-port. 1. redis-dumpredis-dump 这款工具需要用到Ruby ,而centos 环境中的yum 工具可以安装的Ruby 版本最高是2.0 的版本,而当前Redis 最新的4.0 版本中需要用到的Ruby >= 2.2 版本,所以我们需要先安装Ruby ,而安装Ruby 有一个很好的命令行工具可以帮助我们,这款工具就是RVM ,RVM 可以提供一个便捷的多版本 Ruby 环境的管理和切换。# 首先老规矩,我们先到tmp下,用来存放下载的安装文件 cd /tmp mkdir rvm cd rvm # 开始安装RVM gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 curl -O https:raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer curl -O https:raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer.asc gpg --verify rvm-installer.asc bash rvm-installer stable source /etc/profile.d/rvm.sh 1.1? 安装Ruby# 查看可以安装的Ruby版本 rvm list known # 这里我们安装2.4.1 rvm install ruby 2.4.1 1.2?安装redis-dump工具# 移除gem自带源 gem sources --remove https:rubygems.org/ # 添加淘宝源 gem sources -a https:ruby.taobao.org/ # 安装redis-dump gem install redis-dump -V 1.3 redis-dump导入导出# 导出命令 redis-dump –u 127.0.0.1:6379 > test.json # 导出指定数据库数据 redis-dump -u 6379 -d 15 > test.json # 如果redis设有密码 redis-dump –u :password@ test.json #导入命令 < test.json redis-load # 如果redis设有密码 < test.json redis-load -u :password@6379 redis-dump 工具我在使用的时候发现dump非常缓慢,所以我最终还是使用了redis-port,方便快捷。 2. redis-port1.1 redis-port的下载redis-port 的下载链接:链接:https://pan.baidu.com/s/1HkGUSjuYVp8i9K5awkVd0A??提取码:9grc 下载好后上传到我们的服务器。 1.2 阿里云redis备份下载我们需要从阿里云将我们的 redis 的备份数据下载下来 我们在redis的控制台的备份与恢复中,找到我们最新的数据备份。点击下载。找到复制外网下载地址 拿到这个链接后,我们在linux 上 直接用 wget 命令下载是会报403错误的。原因是url里面包含特殊字符?比如 &,导致 URL被截断,造成请求 URL 不完整,OSS 中不存在对应的文件信息,所以访问被拒绝提示 403。 因此在 Linux 平台 URL 需要加上英文单引号才可以通过 wget 工具下载。 wget -c 'http://rdslog-bj.oss-cn-beijing.aliyuncs.com/custinsxxxx/hostinsxxxx/mysql-bin.001150.tar?OSSAccessKeyId=cxxzsxxxx&Expires=9999999&Signature=QxxxxxEwD' -O mysql-bin.001150.tar # -c 参数使 wget 工具在连接中断的时候尝试断点续传。 # -O 参数将下载的结果保存为指定的文件(建议使用 URL 中包含的文件名)。 1.3 redis-port的使用我们这里主要使用的redis-port 参数? restore 示例: ./redis-port restore --input=x/dump.rdb --target=dst_host:dst_port --auth=dst_password [--filterkey="str1|str2|str3"] [--targetdb=DB] [--rewrite] [--bigkeysize=SIZE] [--logfile=REDISPORT.LOG] 参数说明 src_host:自建 redis 域名(或者 IP) src_port:自建 redis 端口 src_password:自建 redis 密码 dst_host:云数据库 redis 域名 dst_port:云数据库 redis 端口 dst_password:云数据库 redis 密码 str1|str2|str3:过滤具有 str1 或 str2 或 str3 的 key DB:将同步入云 redis 的 DB rewrite:覆盖已经写入的 key bigkeysize=SIZE:当写入的 value 大于 SIZE 时,走大 key 写入模式 当出现 redis-port 还可以用来进行增量同步,会在我的另外一篇文章写到。 ?注意事项:redis 阿里云迁移到aws 流程: redis?bgsave 到 磁盘? ---》 阿里云备份 ---》下载备份----》 redis-port 导入---》redis数据检查。 遇到的问题: redis-port 导入到99%后报错 parse rdb checksum error: 问题原因: redis 默认是? 关闭了? ?checksum。redis-port 工具进行导入的时候是需要效验的。 解决办法: redis 执行 config set rdbchecksum yes。 这样生成的rdb文件就是可以正常导入的。 注意:阿里云的 redis 默认是开启了???checksum? 参数的,但是具体不同地域的是否开通了,建议提交工单询问。 redis -dump 内容采用:链接:https://www.jianshu.com/p/19b5e7b3bffb redis-port 内容借鉴阿里云文档 链接:https://help.aliyun.com/document_detail/66012.html redis-port? github:https://github.com/CodisLabs/redis-port 层楼终究误少年? ?自由早晚乱余生(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |