77百科网
当前位置: 首页 生活百科

redis cluster数据迁移(Redis数据迁移方案分享)

时间:2023-07-14 作者: 小编 阅读量: 2 栏目名: 生活百科

跟着小编一起来看一看吧!rediscluster数据迁移需求场景受疫情影响,公司业务下滑,公司内部开始开源节流。IT基础设施这边要做的就是压缩服务器资源,对线上业务系统、服务等进行整合。此次整合涉及到单机Redis数据的迁移。本文模拟线上redis环境,进行数据进行迁移测试。)也可以暂时不配置该参数,待应用修改配置重新发布,从库与主库数据保持同步后,进行修改。

redis cluster数据迁移?受疫情影响,公司业务下滑,公司内部开始开源节流IT基础设施这边要做的就是压缩服务器资源,对线上业务系统、服务等进行整合,我来为大家讲解一下关于redis cluster数据迁移?跟着小编一起来看一看吧!

redis cluster数据迁移

需求场景

受疫情影响,公司业务下滑,公司内部开始开源节流。IT基础设施这边要做的就是压缩服务器资源,对线上业务系统、服务等进行整合。

此次整合涉及到单机Redis数据的迁移。

本文模拟线上redis环境,进行数据进行迁移测试。

测试环境

Redis实例

角色

说明

10.100.210.33:6380

模拟线上生产环境

10.100.202.248:6381

模拟目标服务器上新部署的redis从库——Redis主从方案迁移数据

完成

10.100.202.248:6382

模拟目标服务器上新部署的redis实例——Redis BGSAVE方案迁移数据

完成

10.100.202.248:6383

模拟目标服务器上新部署的redis实例——redis-dump方案迁移数据

未测试

方案一:Redis从库同步主库的数据

线上环境中redis主实例配置了requirepass Abc@123,搭建从库实例,要想成功获取主库的数据,需在从库配置文件中配置masterauth Abc@123.

从库的配置文件中,requirepass Abc@123配置项目也需要配置,这里配置该参数的目的是当从库的数据与主库的数据保持同步后,会将其与主库断开连接,重启redis实例,使其使用从库本地的RDB文件进行启动,同时将应用中的redis相关配置项指向该实例,保证其与原redis实例的连接方式不变(连接redis密码与使用主库时一致。)

也可以暂时不配置该参数,待应用修改配置重新发布,从库与主库数据保持同步后,进行修改。

从库配置replicaof 10.100.210.33 6380

启动从库,关注日志信息是否从主库同步数据:

1990:C 07 May 2022 13:38:50.341 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo1990:C 07 May 2022 13:38:50.341 # Redis version=5.0.12, bits=64, commit=00000000, modified=0, pid=1990, just started1990:C 07 May 2022 13:38:50.341 # Configuration loaded1991:S 07 May 2022 13:38:50.342 * Increased maximum number of open files to 10032 (it was originally set to 1024)._._ _.-``__ ''-._ _.-```.`_.''-._ Redis 5.0.12 (00000000/0) 64 bit.-`` .-```.```\/_.,_ ''-._(',.-`| `,)Running in standalone mode |`-._`-...-` __...-.``-._|'` _.-'|Port: 6381 |`-._`._/_.-'|PID: 1991`-._`-._`-./_.-'_.-'|`-._`-._`-.__.-'_.-'_.-'||`-._`-.__.-'_.-'| http://redis.io`-._`-._`-.__.-'_.-'_.-'|`-._`-._`-.__.-'_.-'_.-'||`-._`-.__.-'_.-'|`-._`-._`-.__.-'_.-'_.-' `-._`-.__.-'_.-'`-.__.-'`-.__.-'1991:S 07 May 2022 13:38:50.342 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.1991:S 07 May 2022 13:38:50.342 # Server initialized1991:S 07 May 2022 13:38:50.342 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.1991:S 07 May 2022 13:38:50.342 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.1991:S 07 May 2022 13:38:50.343 * DB loaded from disk: 0.000 seconds1991:S 07 May 2022 13:38:50.343 * Ready to accept connections1991:S 07 May 2022 13:38:50.343 * Connecting to MASTER 10.100.210.33:63801991:S 07 May 2022 13:38:50.343 * MASTER <-> REPLICA sync started1991:S 07 May 2022 13:38:50.343 * Non blocking connect for SYNC fired the event.1991:S 07 May 2022 13:38:50.344 * Master replied to PING, replication can continue...1991:S 07 May 2022 13:38:50.344 * Partial resynchronization not possible (no cached master)1991:S 07 May 2022 13:38:50.363 * Full resync from master: dd1b86ecf9302bef9cd8de1daeffe3489ea9ef41:01991:S 07 May 2022 13:38:50.418 * MASTER <-> REPLICA sync: receiving 375972 bytes from master1991:S 07 May 2022 13:38:50.494 * MASTER <-> REPLICA sync: Flushing old data1991:S 07 May 2022 13:38:50.494 * MASTER <-> REPLICA sync: Loading DB in memory1991:S 07 May 2022 13:38:50.497 * MASTER <-> REPLICA sync: Finished with success1991:S 07 May 2022 13:43:51.087 * 10 changes in 300 seconds. Saving...1991:S 07 May 2022 13:43:51.087 * Background saving started by pid 19981998:C 07 May 2022 13:43:51.173 * DB saved on disk1998:C 07 May 2022 13:43:51.173 * RDB: 8 MB of memory used by copy-on-write1991:S 07 May 2022 13:43:51.188 * Background saving terminated with success

上面的日志信息显示已经从主库同步完成数据。

接下来,修改从库配置文件,重启从库实例,使原从库独立运行。

vim /etc/redis/6381.conf # replicaof 10.100.210.33 6380# 注释掉该配置项 :wq [root@c7-8 redis]# service redis_6381 restart Stopping ... Redis stopped Starting Redis server... [root@c7-8 redis]# redis-cli -p 6381 127.0.0.1:6381> keys *1) "HzAccessToken:e2184a0878934858989d8caa34c621a1"2) "boxState:860730050772392"3) "wallet:trans_money_5614485601059840"4) "HzAccessToken:8f3eb26f0d064703a90b97d9d552a5da" ... ...127.0.0.1:6381> info replication # Replication role:master# 当前以master角色运行 connected_slaves:0 master_replid:97f166e9ab74833f1abc265cf6c946313d36709b master_replid2:0000000000000000000000000000000000000000 master_repl_offset:0 second_repl_offset:-1 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0

此时,将相关联的应用配置改为目标主机上的redis实例——10.100.202.248:6381,启动即可。

方案二:BGSAVE命令生成RDB文件进行迁移

通过redis-cli命令行工具连接redis实例,执行BGSAVE命令。

[root@develop ~]# redis-cli -p 6380 -h 10.100.210.33 10.100.210.33:6380>10.100.210.33:6380>10.100.210.33:6380>10.100.210.33:6380> bgsave (error) NOAUTH Authentication required. 10.100.210.33:6380> auth Abc@123 OK 10.100.210.33:6380> bgsave Background saving started

redis_6380实例运行日志中输出信息如下:

26504:M 07 May 14:31:39.167 * Background saving started by pid 21451 21451:C 07 May 14:31:39.173 * DB saved on disk 21451:C 07 May 14:31:39.174 * RDB: 0 MB of memory used by copy-on-write 26504:M 07 May 14:31:39.259 * Background saving terminated with success

拷贝dump.rdb文件到目标服务器上:

[root@develop ~]# scp /var/lib/redis/6380/dump.rdb 10.100.202.248:/var/lib/redis/ The authenticity of host '10.100.202.248 (10.100.202.248)' can't be established. ECDSA key fingerprint is f4:f9:34:70:6c:85:9d:6c:65:ec:5f:1b:fd:62:9f:b3. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '10.100.202.248' (ECDSA) to the list of known hosts. root@10.100.202.248's password:dump.rdb

新建redis_6382实例:

[root@c7-8 utils]# ./install_server.shWelcome to the redis service installer This script will help you easily set up a running redis serverPlease select the redis port for this instance: [6379] 6382 Please select the redis config file name [/etc/redis/6382.conf]Selected default - /etc/redis/6382.conf Please select the redis log file name [/var/log/redis_6382.log]Selected default - /var/log/redis_6382.log Please select the data directory for this instance [/var/lib/redis/6382]Selected default - /var/lib/redis/6382 Please select the redis executable path [/usr/local/bin/redis-server]Selected config: Port : 6382 Config file: /etc/redis/6382.conf Log file: /var/log/redis_6382.log Data dir: /var/lib/redis/6382 Executable: /usr/local/bin/redis-server Cli Executable : /usr/local/bin/redis-cli Is this ok? Then press ENTER to go on or Ctrl-C to abort. Copied /tmp/6382.conf => /etc/init.d/redis_6382 Installing service... Successfully added to chkconfig! Successfully added to runlevels 345! Starting Redis server... Installation successful!

停止redis_6382实例,避免拷贝过来的rdb文件被进程覆盖

service redis_6382 stop

[root@c7-8 utils]# mv /var/lib/redis/dump.rdb /var/lib/redis/6382/

修改配置文件,启动redis_6382实例:

vim /etc/redis/6382.conf requirepass Abc@123 :wq service redis_6382 start[root@c7-8 6382]# redis-cli -p 6382 127.0.0.1:6382> auth Abc@123 OK 127.0.0.1:6382>127.0.0.1:6382>127.0.0.1:6382> keys *1) "GPS:{862370051630949}:20210527-1"2) "GPS:{862370051630949}:20210531-1"3) "HzAccessToken:0bc7db7327184fdda009f411fa2457b7" ... ...

该方法会存在差异数据,差异数据的多少取决于业务繁忙程度和执行BGSAVE命令后到启动新实例并加载完成之间的时间差。

时间越长,业务越繁忙,差异数据越大。

方案三:redis-dump进行数据迁移

redis-dump &redis-load工具目前仍为BETA版本。是一个将 Redis 数据导入/导出为 json 格式数据的小工具。

其数据导出/导入通过redis-dump、redis-load命令来实现,其中,redis-dump命令将redis数据输出到json格式的文件中;

redis-load命令则是将json格式数据导入到Redis数据库中。

gitee地址。

redis-dump的目的之一是能够将数据还原到已知状态。当从redis-dump文件还原数据到redis实例中时,expire 将会被重置为使用redis-dump命令创建转储文件时的值。这也是该命令与BGSAVE 生成本地RDB文件或者AOF文件进行还原数据的方案的最大不同点。

redis-dump工具支持按db进行转储,相比BGSAVE和主从模式更灵活。

此处不再进行测试,感兴趣的可以参考redis-dump作者的手册进行测试。

    推荐阅读
  • 联想笔记本bios设置图解中文(联想笔记本InsydeH2o类型)

    操作步骤:一、设置硬盘密码1、设置硬盘密码(注:截图都来自bios模拟器,实际以操作为准,仅供参考。)2、硬盘密码已设置好。

  • 怎么做虾才能好吃(虾这样做原汁原味最好吃)

    我们一起去了解并探讨一下这个问题吧!怎么做虾才能好吃可以清蒸虾:主料:虾300克。虾用盐水洗净,去泥肠,排放在盘中;加入葱姜盐,滴料酒,覆上微波薄膜,高火4分钟至熟后可蘸色拉酱、芥末酱或米醋食用。

  • 草果和什么不能一起吃(草果禁忌)

    草果和什么不能一起吃草果是姜科植物草果的干燥成熟果实,它可单独整个炖肉吃,也可磨成粉末和其他香料搭配一起做调料,其中整个主要用于炖肉,磨成粉的调味料烹饪其他食物也可用,能与任何食物搭配一起炖煮,并没有禁忌搭配食物。气虚或血亏,无寒湿实邪者忌服草果。大耗元阳,老弱虚羸,切宜戒草果。气虚或者血虚的体弱者切勿多食草果,以免耗伤正气;阴虚火旺者也不可以服草果,防其温燥伤阴。

  • 如何设置电脑桌面密码(电脑桌面密码如何设置)

    首先,在桌面上右键点击“计算机”,点击“管理”,接下来我们就来聊聊关于如何设置电脑桌面密码?以下内容大家不妨参考一二希望能帮到您!接着,在窗口中选择“用户”,点击打开。最后,在窗口中设置好密码,点击确定,电脑屏幕密码设置完成。

  • 板栗泡酒怎么泡(板栗泡酒方法)

    下面更多详细答案一起来看看吧!板栗泡酒怎么泡首先,我们需要原材料,板栗100-200克,50度以上的纯高粱白酒1000毫升。第二次浸泡:将第一次浸泡后的板栗残渣,继续用400ml白酒室温下浸泡7天,每天搅拌一次。过滤,弃其残渣,保留清液,为第二次过滤液。合并滤液:将2次的过滤液合并,即为板栗浸泡酒,食用方法及用量:100ml/日,可分次饮用。

  • kubernetes底层系统选择(运维面试题总结)

    锁服务有两种使用方式,一是保持独占,二是控制时序。HAProxy是可提供高可用性、负载均衡以及基于tcp和HTTP应用的代理,是免费、快速并且可靠的一种解决方案。HAProxy的运行模式使得它可以很简单安全的整合至当前的架构中,同时可以保护web服务器不被暴露到网络上。heartbeat最核心的功能包括两个部分,心跳监测和资源接管。在一个LVS服务集群中通常有主服务

  • 蜂蜜放久了有一层白色泡沫(蜂蜜放久了有一层白色泡沫是什么原因)

    蜂蜜放久了有一层白色泡沫蜂蜜上面出现一层白色泡沫,是正常现象,并不是蜂蜜变质了!这是因为蜂蜜中的活性酶在不断分解。这些气泡会逐渐聚集在蜂蜜表层,形成一层白色泡沫,按照蜜源、季节的不同,这层泡沫有多有少,甚至可能会造成包装鼓胀。一般蜂蜜厂家都会用浓缩机将蜂蜜中的水分去掉,加热到60℃杀死所有的活性酶,同时添加一些别的成分。但这样就会破坏蜂蜜的营养成分。

  • 黄河源头季节性积雪融水(黄河源头季节性积雪融水是什么)

    黄河源头季节性积雪融水季节性冰雪融水主要是指在高纬度地区的积雪,春初时节,气温升高,积雪融化,补给河流及湖泊,地下水,是季节性的,水量的大小与当年下雪量及气温有关。而东北地区属于半湿润和湿润地区,降水较为丰富,而且纬度较高气温低,冬季的积雪大量累积,积雪量十分可观。

  • 江苏省苏州市吴中区(苏州市吴中区获江苏首个)

    中华文学基金会和吴中区签订了合作协议。目前吴中区作协会员已达140余名,其中中国作协会员12名、省作协会员13名。现场,吴中区少年文学院向范小青颁发名誉院长聘书。经过前期申请、资料审核、现场考察、理事会研究并报中国作协同意等程序,中华文学基金会此次决定授予吴中区中国“文学之乡”称号。今天的授牌仪式上,中华文学基金会、吴中区还签订了合作协议,双方决定共同主办“东吴文学奖”。

  • 虹猫蓝兔七侠传的真正身份(虹猫蓝兔七侠传)

    有黑心虎,黑小虎,马三娘,猪无戒,牛旋风等。黑小虎为了称霸武林,苦苦寻找麒麟,所以派马三娘去当卧底。黑小虎为了父亲的安危阻止七剑合璧,顺道爱上蓝兔,引发一系列感情纠纷。而猪无戒坏事做尽,只为自己。牛旋风虽然是反派,到根本不坏,他只是执行上级领导的命令。所以猪无戒真正是整个动画中纯粹的反派,说他纯粹是因为他只是做到了身为一个反派应该做的事。黑小虎到最后,蓝兔也没有给出回答。