从阿里云迁移分布式redis实例到华为云解决方案(详细)
如果要换多数是经济因素啦~
一、 准备工作
先在华为云上买一台redis数据库,配置一定要注意多数要保持一致,至于4.0还是5.0倒问题不大亲测兼容
可用区要找现有ECS云主机中的相同的机器。记下:这台云主机ECS的基本公网ip和密码、新的redis的连接串和密码。
在阿里云上的原redis数据库创建一个有“复制”权限的账号、记下账号密码和原redis的账号密码
二、配置华为云主机ECS上的nginx以达到公网访问内网redis数据库
安装Nginx
买了ECS后,需要在ECS上安装Nginx。
- 执行以下命令,添加Nginx到yum源。
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
- 添加完之后,执行以下命令,查看是否已经添加成功。
yum search nginx
- 添加成功之后,执行以下命令,安装Nginx。
sudo yum install -y nginx
- 启动Nginx并设置为开机自动运行。
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
- 在本地浏览器中输入服务器地址(ECS公网IP地址),查看安装是否成功。
如果出现下面页面,则表示安装成功。
配置Nginx
Nginx安装后,需要配置请求转发规则,告诉Nginx哪个端口收到的请求,应该转发到后端哪个Redis实例。
- 修改配置文件。
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配置 - 重启Nginx服务。
service nginx restart
- 验证启动是否成功。
netstat -an|grep 808
图5 启动Nginx及验证8080和8081两个端口都在监听状态,Nginx启动成功。
通过Nginx访问Redis
- 登录虚拟私有云控制台,确认跳板机的安全组规则是否放开,如果没有,则需要为安全组放开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-shake介绍
注意事项
- 如果目标库的数据逐出策略(maxmemory-policy)配置为noeviction以外的值,可能导致目标库的数据与源库不一致。关于数据逐出策略详情,请参见Redis数据逐出策略介绍。
- 如果源库中的某些Key使用了过期(expire)机制,由于可能存在Key已过期但未被及时删除的情形,所以在目标库中查看(如通过info命令)到的Key数量会比源库的Key数量少。
说明 源和目标库中,未设置过期机制或未过期的Key数量是一致的。
适用场景
- 跨阿里云账号实例间迁移
- 同一阿里云账号实例间迁移
操作步骤
- 确认Redis-shake待安装的位置,并完成下述操作:
说明
- 下表中的Redis实例包含源Redis实例和目标Redis实例,即源和目标Redis实例均需要完成下述操作。
- 推荐在ECS实例上安装Redis-shake,通过专有网络连接源和目标Redis实例,可获得更低的网络延迟和更高的安全性。
- 如需执行跨阿里云账号迁移,推荐将Redis-shake部署在源Redis实例所属的阿里云账号的ECS中,通过专有网络连接源Redis实例,可通过公网连接目标Redis实例。
Redis-shake待安装位置 需完成的操作 ECS实例(推荐) - 确保ECS实例与Redis实例属于同一专有网络(即实例基本信息中的专有网络ID一致)。
说明
- 如果专有网络不同,您可以更换ECS实例所属的专有网络。具体操作,请参见更换ECS实例的VPC。
- 如果网络类型不同,例如ECS实例为经典网络,Redis实例为专有网络。如何连接,请参见ECS实例与Redis实例的网络类型不同时如何连接。
- 获取ECS实例的内网IP地址。具体操作,请参见查询ECS实例的IP地址。
- 将ECS实例的内网IP地址添加至Redis实例的白名单中。具体操作,请参见设置IP白名单。
本地设备 - 安装Redis-shake。
- 登录待安装Redis-shake的设备,例如ECS实例或本地设备。
- 执行下述命令下载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版本列表。 - 执行下述命令解压Redis-shake文件:
tar xzf redis-shake-v2.0.3.tar.gz
- 在安装Redis-shake的设备上,执行数据迁移。
- 执行下述命令进入解压后的目录并修改配置文件:
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中。
-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文件中各参数的注释。 - 按下ECS键退出编辑模式,输入:wq并按回车键保存配置并退出编辑界面。
- 执行下述命令启动Redis-shake,开始执行数据迁移:
./redis-shake.linux -type=sync -conf=redis-shake.conf
Redis-shake将在屏幕上打印运行的日志信息。说明 如果出现提示报错,相关原因及解决方法,请参见常见报错及解决方法。
- 执行下述命令进入解压后的目录并修改配置文件:
- 可选:选择合适的时机,结束数据迁移任务。
说明 如果您需要长期运行Redis-shake用于实时迁移数据,无需执行本步骤。
- 观察打印的日志,等待迁移任务进入增量数据迁移状态。
迁移任务阶段 对应打印的日志 全量数据迁移 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。
四、检查服务是否正常
略
参考:
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实例到华为云解决方案(详细)的更多相关文章
- 硬核评测:企业上云的极速存储挑战,华为云全新极速IO云硬盘性能评测
来源:至顶网 作者:董培欣 借助华为云全新一代极速IO云硬盘开启邀测的时机,至顶网评测实验室展开了一次华为云极速IO云硬盘与超高IO云硬盘的性能对比测试活动,并且尝试通过相关测试成绩,对云硬盘的应用能 ...
- 不服跑个分:ARM鲲鹏云服务器实战评测——华为云鲲鹏KC1实例 vs. 阿里云G5实例【华为云技术分享】
原文链接:https://m.ithome.com/html/444828.htm 今年一月份,华为正式发布了鲲鹏920数据中心高性能处理器,该处理器兼容ARM架构,采用7纳米制造,最高支持64核,主 ...
- 三伏天里小试牛刀andriod 开发 #华为云·寻找黑马程序员#【华为云技术分享】
2019年07月,北京,三伏天,好热啊.越热自己还越懒得动换(肉身给的信号),但是做为产品经理/交互设计师的,总想着思考些什么(灵魂上给的信号),或者是学习些什么,更有利于将来的职业发展吧,哈哈哈.工 ...
- RDS关系型数据库 入门 01 创建关系型数据库实例【华为云分享】
[摘要] 关系型数据库(Relational Database Service,简称RDS)是一种基于云计算平台的即开即用.稳定可靠.弹性伸缩.便捷管理的在线关系型数据库服务.RDS具有完善的性能监控 ...
- 华为云企业级Redis评测第一期:稳定性与扩容表现
摘要:采用Redis Labs推出的多线程压测工具memtier_benchmark对比测试下GaussDB(for Redis) 和原生Redis的特性差异. 本文分享自华为云社区<华为云企业 ...
- 当MySQL执行XA事务时遭遇崩溃,且看华为云如何保障数据一致性
摘要:当前MySQL所有版本不支持分布式事务的崩溃恢复安全,这严重影响了分布式事务的高可用保障. 华为云数据库内核高级技术专家,拥有十多年MySQL内核研发经验,目前在华为云数据库团队研发华为云数据库 ...
- AWS、阿里云、Azure、Google Cloud、华为云、腾讯云 各种云服务器价格收费对比(上)
他来了,他来了~ 他带着六家公有云厂商的资源价格走来了~ 不久前,我们上线了一款小工具——[多云成本计算器]1.0版,公众号菜单栏可以直接体验.详细介绍可以戳这里<3秒即得最低价,速石上线「多云 ...
- 华为云推UGO:一手抓结构迁移,一手抓SQL转换
摘要:UGO,一款专注于异构数据库对象迁移和应用迁移的专业化工具. 近日,华为云推出数据库和应用迁移 UGO,这是一款专注于异构数据库对象迁移和应用迁移的专业化工具,通过预迁移评估.结构迁移两大核心功 ...
- Cloud Native Weekly | KubeCon首登中国,华为云亮相KubeCon 2018,微软云服务又罢工
1.KubeCon首登中国,Kubernetes将如何再演进? 11月14日,由CNCF发起的云原生领域全球最大的峰会之一KubeCon+CloudNativeCon首次登陆中国,中国已经成为云原生领 ...
随机推荐
- vue & vue router & match bug
vue & vue router & match bug match bugs solution name must be router https://stackoverflow.c ...
- TypeScript & Advanced Types
TypeScript & Advanced Types https://www.typescriptlang.org/docs/handbook/advanced-types.html#typ ...
- js 在浏览器中使用 monaco editor
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- zrender & svg
zrender & svg window.prompt double click https://codepen.io/xgqfrms/pen/jOEGNvw // https://cdn.x ...
- JsBridge & Android WebView
JsBridge & Android WebView webview loadUrl addJavascriptInterface .setJavaScriptEnabled(true); f ...
- hive中更改表impala中不能生效
hive中的更新或者新建表impala 不能实时更新 Impala是基于Hive的大数据实时分析查询引擎,直接使用Hive的元数据库Metadata,意味着impala元数据都存储在Hive的meta ...
- herry菌插件(B站C站)下载与安装(更新中)>>
插件简介: 目前该插件支持chrome浏览器(谷歌浏览器).360极速浏览器等chrome内核的浏览器 最新版插件下载: 点此下载>>>> 安装方法: 1.先下载上面的的插件 ...
- 440. 字典序的第K小数字 + 字典树 + 前缀 + 字典序
440. 字典序的第K小数字 LeetCode_440 题目描述 方法一:暴力法(必超时) package com.walegarrett.interview; /** * @Author WaleG ...
- Mybatis系列全解(七):全息视角看Dao层两种实现方式之传统方式与代理方式
封面:洛小汐 作者:潘潘 一直以来 他们都说为了生活 便追求所谓成功 顶级薪水.名牌包包 还有学区房 · 不过 总有人丢了生活 仍一无所获 · 我比较随遇而安 有些事懒得明白 平日里问心无愧 感兴趣的 ...
- Java 常用类——StringBuffer&StringBuilder【可变字符序列】
一.字符串拼接问题 由于 String 类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象. Demo: 1 public class StringDemo { 2 pub ...