如果要换多数是经济因素啦~
先在华为云上买一台redis数据库,配置一定要注意多数要保持一致,至于4.0还是5.0倒问题不大亲测兼容
可用区要找现有ECS云主机中的相同的机器。记下:这台云主机ECS的基本公网ip和密码、新的redis的连接串和密码。
在阿里云上的原redis数据库创建一个有“复制”权限的账号、记下账号密码和原redis的账号密码
买了ECS后,需要在ECS上安装Nginx。
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum search nginx
sudo yum install -y nginx
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
如果出现下面页面,则表示安装成功。
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; } }
service nginx restart
netstat -an|grep 808
8080和8081两个端口都在监听状态,Nginx启动成功。
./redis-cli -h {myeip} -p {port} -a {mypassword}
其中,命令中的{myeip}为主机连接地址,需要填写ECS的弹性IP,端口需要填写ECS上Nginx的监听端口。
如下图所示,设置的2个监听端口分别为8080和8081,对应后端2个Redis实例。
至此,就完成了通过跳板机的搭建,实现公网访问Redis4.0和Redis5.0的操作了。
Redis-shake的sync(同步)模式支持全量数据迁移和增量数据迁移,可实现同一或不同阿里云账号下Redis实例间的数据迁移。
Redis实例 | 需满足的条件 |
---|---|
源Redis实例 |
|
目标Redis实例 |
说明
|
Redis-shake待安装位置 | 需完成的操作 |
---|---|
ECS实例(推荐) |
|
本地设备 |
|
wget 'http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/120287/cn_zh/1608173646665/redis-shake-v2.0.3.tar.gz'
tar xzf redis-shake-v2.0.3.tar.gz
cd redis-shake-v2.0.3/ && vim redis-shake.conf
参数 | 是否必选 | 说明 | 取值示例 |
---|---|---|---|
source.type | 是 | 根据源Redis实例的架构选择,取值:
|
standalone |
source.address | 是 | 源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实例的连接地址与端口号,连接地址和端口号之间使用英文冒号(:)分隔。关于如何获取连接地址和端口号,请参见查看连接地址。
说明 如果目标实例为集群架构,您需要通过直连地址连接(网络类型为专有网络),且在填写连接地址时需要添加
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实例的指定库中,取值:
说明 如果源Redis实例为标准架构,目标Redis实例为集群架构,此场景仅会同步数据库0,其他数据库的数据不会被迁移。此时,将该参数设置为0,可将源实例的所有数据库全部迁移至目标实例的数据库0中。
|
-1 |
key_exists | 否 | 当源Redis实例中的Key与目标Redis实例中的Key相同时,采取的数据写入策略,取值:
|
rewrite |
filter.db.whitelist | 否 | 需要迁移的库名,多个库名间用英文分号(;)分隔,默认为空,即迁移所有库。 | 0;1 |
filter.db.blacklist | 否 | 不需要迁移的库名(即黑名单),多个库名间用英文分号(;)分隔。默认为空,即不设置黑名单。 | 1;2 |
parallel | 否 | Redis-shake执行迁移的并发线程数,适当调大该值可提高同步性能。
说明 默认值为32,最小值为1,最大值取决于Redis-shake所在服务器的性能。
|
32 |
./redis-shake.linux -type=sync -conf=redis-shake.conf
迁移任务阶段 | 对应打印的日志 |
---|---|
全量数据迁移 |
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 日志信息中各参数说明如下:
|
暂停向源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