如果要换多数是经济因素啦~

一、 准备工作

先在华为云上买一台redis数据库,配置一定要注意多数要保持一致,至于4.0还是5.0倒问题不大亲测兼容

可用区要找现有ECS云主机中的相同的机器。记下:这台云主机ECS的基本公网ip和密码、新的redis的连接串和密码。

在阿里云上的原redis数据库创建一个有“复制”权限的账号、记下账号密码和原redis的账号密码

二、配置华为云主机ECS上的nginx以达到公网访问内网redis数据库

安装Nginx

买了ECS后,需要在ECS上安装Nginx。

  1. 执行以下命令,添加Nginx到yum源。

    sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

  2. 添加完之后,执行以下命令,查看是否已经添加成功。

    yum search nginx

  3. 添加成功之后,执行以下命令,安装Nginx。

    sudo yum install -y nginx

  4. 启动Nginx并设置为开机自动运行。

    sudo systemctl start nginx.service

    sudo systemctl enable nginx.service

  5. 在本地浏览器中输入服务器地址(ECS公网IP地址),查看安装是否成功。

    如果出现下面页面,则表示安装成功。

配置Nginx

Nginx安装后,需要配置请求转发规则,告诉Nginx哪个端口收到的请求,应该转发到后端哪个Redis实例。

  1. 修改配置文件。

    cd /etc/nginx

    vi nginx.conf

    配置示例如下,如果有多个redis实例需要公网连接,可以配置多个server,在proxy_pass中配置Redis实例连接地址。

    stream {
    server {
    listen 8080;
    proxy_pass 192.168.0.5:6379;
    }
    server {
    listen 8081;
    proxy_pass 192.168.0.6:6379;
    }
    }
     
    图4 Nginx配置
  2. 重启Nginx服务。

    service nginx restart

  3. 验证启动是否成功。

    netstat -an|grep 808

    图5 启动Nginx及验证

    8080和8081两个端口都在监听状态,Nginx启动成功。

通过Nginx访问Redis

    1. 登录虚拟私有云控制台,确认跳板机的安全组规则是否放开,如果没有,则需要为安全组放开8080和8081两个端口。

      图6 添加安全组入方向规则
    • 在公网环境中打开Redis命令行界面,输入如下命令,登录与查询都正常,大功告成。

      ./redis-cli -h {myeip} -p {port} -a {mypassword}

      其中,命令中的{myeip}为主机连接地址,需要填写ECS的弹性IP,端口需要填写ECS上Nginx的监听端口。

      如下图所示,设置的2个监听端口分别为8080和8081,对应后端2个Redis实例。

      图7 通过Nginx代理连接第一个Redis实例
      图8 通过Nginx代理连接第二个Redis实例

      至此,就完成了通过跳板机的搭建,实现公网访问Redis4.0和Redis5.0的操作了。

三、下载使用阿里云同步工具redis-shake

Redis-shake的sync(同步)模式支持全量数据迁移和增量数据迁移,可实现同一或不同阿里云账号下Redis实例间的数据迁移。

前提条件

源和目标Redis实例需分别满足下述条件:

 
Redis实例 需满足的条件
源Redis实例
目标Redis实例
 
说明

  • 如果尚未创建目标Redis实例,请参见步骤1:创建实例
  • 如需跨版本迁移(例如从4.0迁移至5.0),建议您创建按量付费的Redis实例以进行兼容性验证,验证无误后可转换为包年包月。关于如何转换付费模式,请参见转包年包月

Redis-shake介绍

Redis-shake是阿里云自研的开源Redis数据传输工具,支持对Redis数据进行解析(decode)、恢复(restore)、备份(dump)和同步(sync或rump),易于部署,灵活高效。Redis-shake的sync(同步)模式支持全量数据迁移和增量数据迁移,详细的迁移流程如下图所示:图 1. redis-shake迁移示意图
 
说明 通过DTS的数据同步功能也可以实现数据迁移的需求,且支持更加丰富的场景与功能。更多信息,请参见Redis数据同步方案概览

注意事项

  • 如果目标库的数据逐出策略(maxmemory-policy)配置为noeviction以外的值,可能导致目标库的数据与源库不一致。关于数据逐出策略详情,请参见Redis数据逐出策略介绍
  • 如果源库中的某些Key使用了过期(expire)机制,由于可能存在Key已过期但未被及时删除的情形,所以在目标库中查看(如通过info命令)到的Key数量会比源库的Key数量少。
     
    说明 源和目标库中,未设置过期机制或未过期的Key数量是一致的。

适用场景

  • 跨阿里云账号实例间迁移
  • 同一阿里云账号实例间迁移

操作步骤

  1. 确认Redis-shake待安装的位置,并完成下述操作:

    说明

    • 下表中的Redis实例包含源Redis实例和目标Redis实例,即源和目标Redis实例均需要完成下述操作。
    • 推荐在ECS实例上安装Redis-shake,通过专有网络连接源和目标Redis实例,可获得更低的网络延迟和更高的安全性。
    • 如需执行跨阿里云账号迁移,推荐将Redis-shake部署在源Redis实例所属的阿里云账号的ECS中,通过专有网络连接源Redis实例,可通过公网连接目标Redis实例。
    Redis-shake待安装位置 需完成的操作
    ECS实例(推荐)
    1. 确保ECS实例与Redis实例属于同一专有网络(即实例基本信息中的专有网络ID一致)。

      说明

    2. 获取ECS实例的内网IP地址。具体操作,请参见查询ECS实例的IP地址
    3. 将ECS实例的内网IP地址添加至Redis实例的白名单中。具体操作,请参见设置IP白名单
    本地设备
    1. Redis实例默认仅提供内网连接地址,通过公网连接时您需要手动申请公网连接地址。具体操作,请参见申请公网连接地址
    2. 在本地设备上执行curl ipinfo.io |grep ip命令,获取其公网IP地址,返回示例如下:
    3. 将本地设备的公网IP地址添加至Redis实例的白名单中。具体操作,请参见设置IP白名单
  2. 安装Redis-shake。
    1. 登录待安装Redis-shake的设备,例如ECS实例或本地设备。
    2. 执行下述命令下载Redis-shake文件:
      wget 'http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/120287/cn_zh/1608173646665/redis-shake-v2.0.3.tar.gz'
      说明 本文以2.0.3版本为例演示操作流程,您也可以安装其他版本。更多信息,请参见RedisShake版本列表
    3. 执行下述命令解压Redis-shake文件:
      tar xzf redis-shake-v2.0.3.tar.gz
  3. 在安装Redis-shake的设备上,执行数据迁移。
    1. 执行下述命令进入解压后的目录并修改配置文件:

      cd redis-shake-v2.0.3/ && vim redis-shake.conf
      说明 执行命令后,系统将进入编辑界面,输入a可进入编辑模式。
      表 1. 主要参数说明
      参数 是否必选 说明 取值示例
      source.type 根据源Redis实例的架构选择,取值:

      standalone
      source.address 源Redis实例的连接地址与端口号,连接地址和端口号之间使用英文冒号(:)分隔。关于如何获取连接地址和端口号,请参见查看连接地址

      • ECS实例通过专有网络连接:需获取Redis实例的专有网络连接地址。
      • 本地设备通过公网连接:需获取Redis实例的公网连接地址。
      说明 如果源Redis实例为集群架构,您需要通过直连地址连接(网络类型为专有网络),且在填写连接地址时需要添加master@前缀,例如master@r-bp1mfnrflszg75w****.redis.rds.aliyuncs.com:6379。关于如何申请直连地址,请参见开通直连访问
      r-bp1mfnrflszg75w****.redis.rds.aliyuncs.com:6379
      source.password_raw 源Redis实例的账号(需具备复制权限)及其密码,账号和密码之间使用英文冒号(:)分隔。关于如何创建账号,请参见创建与管理账号

      说明 集群架构的实例暂不支持创建复制权限的账号,您需要提交工单申请开通该功能。
      testaccount:Rp829dlwa
      target.type 根据目标Redis实例的架构选择,取值:

      cluster
      target.address 目标Redis实例的连接地址与端口号,连接地址和端口号之间使用英文冒号(:)分隔。关于如何获取连接地址和端口号,请参见查看连接地址

      • ECS实例通过专有网络连接:需获取Redis实例的专有网络连接地址。
      • 本地设备通过公网连接:需获取Redis实例的公网连接地址。
      说明 如果目标实例为集群架构,您需要通过直连地址连接(网络类型为专有网络),且在填写连接地址时需要添加master@前缀,例如master@r-bp1mfnrflszg75w****.redis.rds.aliyuncs.com:6379。关于如何申请直连地址,请参见开通直连访问
      master@r-bp1mfnrflszg75w****.redis.rds.aliyuncs.com:6379
      target.password_raw 目标Redis实例的账号(需具备读写权限)及其密码,账号和密码之间使用英文冒号(:)分隔。关于如何创建账号,请参见创建与管理账号 testaccount:Rp829dlwa
      target.db 是否将源Redis实例中所有库的数据都迁移至目标Redis实例的指定库中,取值:

      • -1(默认值):不启用该功能。
      • 0~255:启用该功能并将取值作为目标Redis实例的指定库。例如取值为0,表示将源Redis实例中所有库的数据汇总迁移至目标Redis实例的数据库0中。
      说明 如果源Redis实例为标准架构,目标Redis实例为集群架构,此场景仅会同步数据库0,其他数据库的数据不会被迁移。此时,将该参数设置为0,可将源实例的所有数据库全部迁移至目标实例的数据库0中。
      -1
      key_exists 当源Redis实例中的Key与目标Redis实例中的Key相同时,采取的数据写入策略,取值:

      • rewrite:覆盖写入至目标库。
      • none:默认值,停止运行Redis-shake程序并提示冲突的Key。
      • ignore:直接跳过当前迁移的Key,保留目标库的数据,继续执行数据迁移。
      rewrite
      filter.db.whitelist 需要迁移的库名,多个库名间用英文分号(;)分隔,默认为空,即迁移所有库。 0;1
      filter.db.blacklist 不需要迁移的库名(即黑名单),多个库名间用英文分号(;)分隔。默认为空,即不设置黑名单。 1;2
      parallel Redis-shake执行迁移的并发线程数,适当调大该值可提高同步性能。

      说明 默认值为32,最小值为1,最大值取决于Redis-shake所在服务器的性能。
      32
      说明 其他参数如无特殊需求不需要配置,如需了解更多,请查看redis-shake.conf文件中各参数的注释。
    2. 按下ECS键退出编辑模式,输入:wq并按回车键保存配置并退出编辑界面。
    3. 执行下述命令启动Redis-shake,开始执行数据迁移:
      ./redis-shake.linux -type=sync -conf=redis-shake.conf
      Redis-shake将在屏幕上打印运行的日志信息。

      说明 如果出现提示报错,相关原因及解决方法,请参见常见报错及解决方法
  4. 可选:选择合适的时机,结束数据迁移任务。
    说明 如果您需要长期运行Redis-shake用于实时迁移数据,无需执行本步骤。
    1. 观察打印的日志,等待迁移任务进入增量数据迁移状态。

      迁移任务阶段 对应打印的日志
      全量数据迁移
      2020/12/16 21:02:36 [INFO] DbSyncer[0] total = 4.00MB -       2.18MB [ 54%]  entry=52199
      2020/12/16 21:02:36 [INFO] DbSyncer[0] total = 4.00MB - 4.00MB [100%] entry=97531
      2020/12/16 21:02:36 [INFO] DbSyncer[0] sync rdb done
      说明 当打印的日志出现sync rdb done,表示完成全量数据迁移,接下来进入增量数据迁移阶段。
      增量数据迁移
      2020/12/16 21:03:07 [INFO] DbSyncer[0] sync:  +forwardCommands=5      +filterCommands=0      +writeBytes=5095
      2020/12/16 21:03:08 [INFO] DbSyncer[0] sync: +forwardCommands=7 +filterCommands=0 +writeBytes=7133
      2020/12/16 21:03:09 [INFO] DbSyncer[0] sync: +forwardCommands=0 +filterCommands=0 +writeBytes=0
      2020/12/16 21:03:10 [INFO] DbSyncer[0] sync: +forwardCommands=645 +filterCommands=0 +writeBytes=657255
      2020/12/16 21:03:11 [INFO] DbSyncer[0] sync: +forwardCommands=28 +filterCommands=0 +writeBytes=28532
      2020/12/16 21:03:12 [INFO] DbSyncer[0] sync: +forwardCommands=0 +filterCommands=0 +writeBytes=0
      日志信息中各参数说明如下:

      • forwardCommands:源Redis实例发送过来的命令数。
      • filterCommands:被过滤的命令数,例如在Redis-shake配置文件中设置了过滤某些库。
      • writeBytes:源Redis实例发送过来的字节数。

暂停向源Redis实例写入数据,等待返回日志中writeBytes对应值连续多次为0时,使用Ctrl+C组合键停止运行Redis-shake。

图 2. 停止运行示例

 
说明 此时源和目标实例的数据完全一致,您可以将业务的数据库服务由源Redis实例切换至目标Redis实例。
 

四、检查服务是否正常

参考:

https://help.aliyun.com/document_detail/117311.html?spm=a2c4g.11186623.6.653.344f3b69KaDUif
https://support.huaweicloud.com/bestpractice-dcs/dcs-bp-0514001.html

从阿里云迁移分布式redis实例到华为云解决方案(详细)的更多相关文章

  1. 硬核评测:企业上云的极速存储挑战,华为云全新极速IO云硬盘性能评测

    来源:至顶网 作者:董培欣 借助华为云全新一代极速IO云硬盘开启邀测的时机,至顶网评测实验室展开了一次华为云极速IO云硬盘与超高IO云硬盘的性能对比测试活动,并且尝试通过相关测试成绩,对云硬盘的应用能 ...

  2. 不服跑个分:ARM鲲鹏云服务器实战评测——华为云鲲鹏KC1实例 vs. 阿里云G5实例【华为云技术分享】

    原文链接:https://m.ithome.com/html/444828.htm 今年一月份,华为正式发布了鲲鹏920数据中心高性能处理器,该处理器兼容ARM架构,采用7纳米制造,最高支持64核,主 ...

  3. 三伏天里小试牛刀andriod 开发 #华为云·寻找黑马程序员#【华为云技术分享】

    2019年07月,北京,三伏天,好热啊.越热自己还越懒得动换(肉身给的信号),但是做为产品经理/交互设计师的,总想着思考些什么(灵魂上给的信号),或者是学习些什么,更有利于将来的职业发展吧,哈哈哈.工 ...

  4. RDS关系型数据库 入门 01 创建关系型数据库实例【华为云分享】

    [摘要] 关系型数据库(Relational Database Service,简称RDS)是一种基于云计算平台的即开即用.稳定可靠.弹性伸缩.便捷管理的在线关系型数据库服务.RDS具有完善的性能监控 ...

  5. 华为云企业级Redis评测第一期:稳定性与扩容表现

    摘要:采用Redis Labs推出的多线程压测工具memtier_benchmark对比测试下GaussDB(for Redis) 和原生Redis的特性差异. 本文分享自华为云社区<华为云企业 ...

  6. 当MySQL执行XA事务时遭遇崩溃,且看华为云如何保障数据一致性

    摘要:当前MySQL所有版本不支持分布式事务的崩溃恢复安全,这严重影响了分布式事务的高可用保障. 华为云数据库内核高级技术专家,拥有十多年MySQL内核研发经验,目前在华为云数据库团队研发华为云数据库 ...

  7. AWS、阿里云、Azure、Google Cloud、华为云、腾讯云 各种云服务器价格收费对比(上)

    他来了,他来了~ 他带着六家公有云厂商的资源价格走来了~ 不久前,我们上线了一款小工具——[多云成本计算器]1.0版,公众号菜单栏可以直接体验.详细介绍可以戳这里<3秒即得最低价,速石上线「多云 ...

  8. 华为云推UGO:一手抓结构迁移,一手抓SQL转换

    摘要:UGO,一款专注于异构数据库对象迁移和应用迁移的专业化工具. 近日,华为云推出数据库和应用迁移 UGO,这是一款专注于异构数据库对象迁移和应用迁移的专业化工具,通过预迁移评估.结构迁移两大核心功 ...

  9. Cloud Native Weekly | KubeCon首登中国,华为云亮相KubeCon 2018,微软云服务又罢工

    1.KubeCon首登中国,Kubernetes将如何再演进? 11月14日,由CNCF发起的云原生领域全球最大的峰会之一KubeCon+CloudNativeCon首次登陆中国,中国已经成为云原生领 ...

随机推荐

  1. how to design a search component in react

    how to design a search component in react react 如何使用 React 设计并实现一个搜索组件 实时刷新 节流防抖 扩展性,封装,高内聚,低耦合 响应式 ...

  2. React Big Changes All in One

    React Big Changes All in One React 重大更新 React Versions React 版本变更 https://reactjs.org/versions/ sema ...

  3. Vue & mobile UI components

    Vue & mobile UI components https://github.com/vuejs/awesome-vue https://awesome-vue.js.org/ http ...

  4. Redis all in one

    Redis all in one Redis: REmote DIctionary Server https://redis.io/topics/quickstart Download, extrac ...

  5. NGK:价值对标比特币,上线暴涨4558%,下一个财富暴增风口

    近期,美股行情多变,一直饱受争议的比特币也成了其中的"弄潮儿".看多者认为,机构的兴趣有助于支撑比特币作为对冲美元疲软和通胀的工具. 特别是今年1月底的时候,马斯克将推特简介更改为 ...

  6. Mybatis-Plus插件配置

    yml配置 1 # Mybatis-Plus 2 mybatis-plus: 3 # 配置mapper的扫描,找到所有的mapper.xml映射文件 4 mapper-locations: com.x ...

  7. 由剑指offer引发的思考——对象中虚函数指针的大小

    先看一个简单的问题: 一.定义一个空的类型,对于其对象我们sizeof其大小,是1字节.因为我们定义一个类型,编译器必须为其分配空间,具体分配多少是编译器决定,vs是1字节,分配在栈区. 那,这一个字 ...

  8. 后端程序员之路 22、RESTful API

    理解RESTful架构 - 阮一峰的网络日志http://www.ruanyifeng.com/blog/2011/09/restful.html RESTful API 设计指南 - 阮一峰的网络日 ...

  9. Hi3559板载u-boot、kernel及rootfs烧录过程及心得

    这一篇随笔讲叙述下基于Hi3559AV100的BOXER-8410AI板载u-boot.kernel及rootfs烧录具体过程及遇到问题的解决方法与心得. 1.前期板载启动测试和烧录手段 1.1.烧写 ...

  10. 剑指 Offer 31. 栈的压入、弹出序列 + 入栈顺序和出栈顺序的匹配问题

    剑指 Offer 31. 栈的压入.弹出序列 Offer_31 题目详情: 解析: 这里需要使用一个栈来模仿入栈操作. package com.walegarrett.offer; /** * @Au ...