redis 数据迁移笔记

老服务器上内存一直报警,所以要把一部分redis数据迁移到新服务器上去。 迁移的方式有两种,一种是停服务器,搬迁数据;另一种通过主从同步转移。 停服务器,搬迁数据 首先在原服务器上执行redis-cli shutdown命令,该命令会触发保证写RDB文件以及将AOF文件写入磁盘,不会丢失数

停服务器,搬迁数据

首先在原服务器上执行redis-cli shutdown命令,该命令会触发保证写RDB文件以及将AOF文件写入磁盘,不会丢失数据。 如果是kill -9 pid就会丢失数据。

然后将RDB文件和AOF文件都拷贝到新服务器上,注意需要与redis.conf文件中指定RDB文件名和AOF文件名匹配。

最后在新服务器上启动redis服务器。

主从同步转移

首先在新服务器上直接进入redis-cli,执行从库配置slaveof 192.168.1.100 6379,这里假设要将192.168.1.100的6379端口的redis服务转移过来。这样就已经开始同步了。通过info可以查看当前服务器是slave。

然后通过info命令查看master_link_status,如果为up,表示同步完成。(在同步过程中,执行查询的时候还是会提示"Redis is loading the dataset in memory",这属于正常情况.把数据从磁盘文件加载到内存中可能会消耗很长的一段时间。)

最后断开主从关系,在redis-cli命令行下执行slaveof no one提示OK,再通过info查看,该新服务器已经自己变成master了。

注意:master上面的bind 127.0.0.1,master什么都不配置是不正确的,这个配置是用来限制允许哪些IP访问redis的,将这个配置更改为:bind 0.0.0.0

关于bind:指定redis只接收来自于该IP地址的请求,如果不进行设置,那么将处理所有请求,在生产环境中最好设置该项)

确保旧的服务器的服务已经停止服务

在旧服务器上通过netstat命令查看是否还有请求过来。

$ netstat -an|grep "100:6379"|wc -l

有时候netstat的结果也不一定准,因为有些请求已经不在,但是socket状态还在,比如CLOSE_WAIT状态最长可持续2小时。同时socket请求太快,也会出现netstat没数据,但是实际网卡有流量的情况。

我们可以通过tcdump监控网卡在该端口上确实已经没有流量。

tcpdump  -i em2 -vv -nn host  192.168.1.100 and  port 6379

在命令行查看 info master_link_status:up,则表示同步完成了。

日志文件也可以看

[48864] 12 Jun 11:24:03.549 * The server is now ready to accept connections on port 6310
[48864] 12 Jun 11:31:52.936 * SLAVE OF 192.168.50.17:8004 enabled (user request)
[48864] 12 Jun 11:31:53.467 * Connecting to MASTER 192.168.50.17:8004
[48864] 12 Jun 11:31:53.467 * MASTER <-> SLAVE sync started
[48864] 12 Jun 11:31:53.470 * Non blocking connect for SYNC fired the event.
[48864] 12 Jun 11:31:53.470 * Master replied to PING, replication can continue...
[48864] 12 Jun 11:31:53.470 * Partial resynchronization not possible (no cached master)
[48864] 12 Jun 11:31:53.470 * Master does not support PSYNC or is in error state (reply: -ERR unknown command ‘PSYNC‘)
[48864] 12 Jun 11:31:53.470 * Retrying with SYNC...
[48864] 12 Jun 11:32:13.085 * MASTER <-> SLAVE sync: receiving 484322714 bytes from master
[48864] 12 Jun 11:32:18.498 * MASTER <-> SLAVE sync: Flushing old data
[48864] 12 Jun 11:32:18.498 * MASTER <-> SLAVE sync: Loading DB in memory
[48864] 12 Jun 11:32:32.349 * MASTER <-> SLAVE sync: Finished with succes



时间: 2024-10-31 09:13:21

redis 数据迁移笔记的相关文章

Redis数据迁移方案

场景 Redis实例A ---> Redis实例B,整库全量迁移 方案一: mac环境 brew install npm npm install redis-dump -g 针对RedisA: redis-dump -h host1 -p 6379 -d 1 --json > mydb.json针对RedisB: cat mydb.json | redis-dump --convert | redis-cli 方案二:参考: http://www.zlovezl.cn/articles/mig

MS SQL到Oracle的数据迁移笔记

MS SQL到Oracle的数据迁移笔记 一.任务背景 旧系统使用MS SQL Server数据库,新系统使用Oracle数据库,现在需要将旧系统中的数据迁移到新系统中,旧数据按照约定的规则转换后,能够在新系统中使用或查询.另外,新系统的实施人员并不清楚旧系统的数据结构,且两个新旧两个系统的使用的数据结构有较大的差异.为了叙述方便,将旧系统维护人员简称为A,新系统实施人员简称为B. 二.总体思路 1.  A与B根据各自了解的信息,一起制定中间表: 2.  A从MS SQL Server提取数据,

数据迁移笔记

[数据迁移前的准备] 1.将两个数据库中对应的表的基本数据一一对应,总结在excel文档中--映射关系表. (1).对于某些特殊数据,新旧系统的处理方式可能不一致,如flg类字段的0,1,2...分别对应的值是否一致:旧系统多个字段对应新系统一个字段的情况. (2).对于某些数据,在旧系统中需要关联多张表才可以获取数据,将关联到的表登记下来. (3).[前处理]在新旧系统中的字段类型不同,如日期,可以做相应的转换:字段大小不同,先将新系统中的字段扩大. (4).[前处理]有些数据在新旧系统的页面

redis 数据迁移

最近有个项目因为要搬迁服务器的原因,去找了服务器公司的运维,需要收费,于是果断决定自己实现这个功能.现在百度上已经一大把redis数据库迁移的教程,大部分是利用主从复制或者利用redis的RDB备份之后在需要迁移到的redis放进去来达到迁移的目的.下面的是两种不同情况下可以用到的命令,比较简单 1.move迁移 迁移之前: 迁移命令: 命令:redis-cli -n 2 keys '*' | xargs -I '{}' redis-cli -n 2 move '{}' 1 迁移结果: move

redis数据迁移

实验环境1.自建redisnode1.purchase268-3.redis.jst.opsbs.intranet.shuyun.com 31691 密码 2.阿里云redisr-vy13fc5bc195fb84.redis.rds.aliyuncs.com 6379 密码 1.直接进入自建redis的后台,因为redis跑在docker里面,本机上没有安装redis客户端,需要先安装个redis客户端wget http://download.redis.io/redis-stable.tar.

redis数据操作笔记

redis是key-value的数据结构,每条数据都是一个键值对键的类型是字符串 注意:键不能重复,值的类型分为五种:字符串string 哈希hash 列表list 集合set 有序集合zset 一.stringstring是redis最基本的类型,最大能存储512MB数据,string类型是二进制安全的,可以存储任何数据,比如数字.图片等.[redis中SDS的实现保证了redis保存的数据是二进制安全的.]1.增加,修改 1.1 如果设置的键不存在则为添加,如果设置的键已经存在则修改 set

redis数据迁移(不同机器间)

参见博文: http://www.cnblogs.com/zhoubaojian/articles/7866595.html 个人脚本文件: #!/bin/bash src_ip=192.168.200.130 src_port=6379 dest_ip=192.168.200.136 dest_port=6379 i=1 ./redis-cli -h $src_ip -p $src_port keys "*" | while read key do ./redis-cli -h $s

redis数据导入导出

在2017年,项目上的redis集群需要从2.8版本更换为3.2版本,此时涉及到redis数据key的迁移,经百度.×××,发现有三种方法可以实现1.第三方工具redis-dump.redis-load实现2.通过aof机制导入导出,需要开启aof功能3.通过rdb存储机制迁移数据,此方法最为简单,直接dump $key.restore $key即可 此篇主要介绍第一种方式,redis-dump.redis-load实现redis的数据导入导出,直接进入主题 redis-dump,要求ruby版

从MySQL到Redis 提升数据迁移的效率

场景是从MySQL中将数据导入到Redis的Hash结构中.当然,最直接的做法就是遍历MySQL数据,一条一条写入到Redis中.这样可能没什么错,但是速度会非常慢.而如果能够使MySQL的查询输出数据直接能够与Redis命令行的输入数据协议相吻合,可能就省事多了.根据测试800w的数据迁移,时间从90分钟缩短到2分钟.具体案例如下:MySQL数据表结构: CREATE TABLE events_all_time (id int(11) unsigned NOT NULL AUTO_INCREM