如果要换多数是经济因素啦~
一、 准备工作
先在华为云上买一台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-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。
- 登录待安装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
说明 执行命令后,系统将进入编辑界面,输入可进入编辑模式。说明 其他参数如无特殊需求不需要配置,如需了解更多,请查看redis-shake.conf文件中各参数的注释。 - 按下ECS键退出编辑模式,输入并按回车键保存配置并退出编辑界面。
- 执行下述命令启动Redis-shake,开始执行数据迁移:
./redis-shake.linux -type=sync -conf=redis-shake.conf
Redis-shake将在屏幕上打印运行的日志信息。说明 如果出现提示报错,相关原因及解决方法,请参见常见报错及解决方法。
- 执行下述命令进入解压后的目录并修改配置文件:
- 可选:选择合适的时机,结束数据迁移任务。说明 如果您需要长期运行Redis-shake用于实时迁移数据,无需执行本步骤。
- 观察打印的日志,等待迁移任务进入增量数据迁移状态。
- 观察打印的日志,等待迁移任务进入增量数据迁移状态。
暂停向源Redis实例写入数据,等待返回日志中writeBytes
对应值连续多次为0时,使用Ctrl+C组合键停止运行Redis-shake。