redis的 replication 可以极其简单的实现redis从一个地方到另外一个地方的迁移。在新服务器上启动一个redis实例首先我们先在需要迁移到的服务器上启动一个新的redis实例,配置没有
redis的 replication 可以极其简单的实现redis从一个地方到另外一个地方的迁移。
在新服务器上启动一个redis实例
首先我们先在需要迁移到的服务器上启动一个新的redis实例,配置没有什么特别的地方,值得注意的是, 从redis2.6以后,redis的slave默认变得不再接受写操作,所以我们需要修改conf中的
#slave-read-only yesslave-read-only no
这样slave才能正常的接受写操作,不然之后写的时候会报错。
** 使新的redis服务成为slave**
当新的redis起来后,我们使用redis-cli连进去,然后使用 slaveof 命令使这个redis成为我们的旧 redis的
slave:redis 127.0.0.1:6379> SLAVEOF 192.168.81.122 6379OK
查看迁移是否完成登录到主redis服务器的命令行,执行info replication
127.0.0.1:6379> info replication# Replicationrole:masterconnected_slaves:1slave0:ip=192.168.80.149,port=6379,state=online,offset=1793,lag=0master_repl_offset:1793repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:2repl_backlog_histlen:1792
role:master表示这是一个master,master_repl_offset:939 可以得到当前master记录的复制偏移量。而”slave0:ip=192.168.80.149,port=6379,state=online,offset=939,lag=0”是当前连接到这个master的slave的信息,offset=939 是当前slave的复制偏移量。master和slave的offset相同,说明此刻slave已经复制到最新的数据。
** 完成迁移**
等master和slave之间的同步完成后,我们就可以修改我们的应用,让它们使用新的redis server地址了。 把地址全部修改完以后,在新的redis上执行
redis 127.0.0.1:6379> SLAVEOF no one
让它重新变成老大,这样整个迁移就完成了。之后关闭调旧的redis旧ok了