最近需要把一个redis服务从一台服务器上迁移到另外一台上,所以找了一下迁移的方案,有说在第一台 把数据Dump完然后复制数据文件过去,之后在新机器上起来redis实例,但是这样redis将会有一段无法 使用的时间。
后来发现使用redis的 replication 可以极其简单的实现redis从一个地方到另外一个地方的迁移。
1. 在新服务器上启动一个redis实例
首先我们先在需要迁移到的服务器上启动一个新的redis实例,配置没有什么特别的地方,值得注意的是, 从redis2.6以后,redis的slave默认变得不再接受写操作,所以我们需要修改conf中的
#slave-read-only yes slave-read-only no
这样slave才能正常的接受写操作,不然之后写的时候会报错。
2. 使新的redis服务成为slave
当新的redis起来后,我们使用redis-cli连进去,然后使用 slaveof 命令使这个redis成为我们的旧 redis的slave:
redis 127.0.0.1:6379> SLAVEOF 192.168.1.100 6379 OK
在这之后,这两个redis会自动开始同步,如果需要查看同步的状态,可以使用info命令。
3. 完成迁移
等master和slave之间的同步完成后,我们就可以修改我们的应用,让它们使用新的redis server地址了。 把地址全部修改完以后,在新的redis上执行
redis 127.0.0.1:6379> SLAVEOF no one
让它重新变成老大,这样整个迁移就完成了。之后关闭调旧的redis旧ok了
😊 如果你喜欢这篇文章,也欢迎了解我的书: 《Python 工匠:案例、技巧与工程实践》 。它专注于编程基础素养与 Python 高级技巧的结合,是一本广受好评、适合许多人的 Python 进阶书。