Redis 的 master 可以拥有多个 slave,多个 slave 可以连接同一个 master 外,还可以连接到其他 slave,主从复制在同步数据时,master 可以继续处理 client 请求不会阻塞 master,。

大体机制是这样:slave 与 master 建立连接,然后发送 sync 命令。无论是第一次连接还是重新连接,master 都会启动一个后台进程,将数据库快照保存到文件中,同时 master 主进程会开始收集新的写命令并缓存。后台进程完成写文件后,master 就发送文件给 slave,slave 将文件保存到硬盘上,再加载到内存中,接着 master 就会把缓存的命令转发给 slave,后续 master 将收到的写命令发送给 slave。如果 master 同时收到多个 slave 发来的同步连接命令,master 只会启动一个进程来写数据库镜像,然后发送给所有的 slave。

具体配置比较简单,在 slave 的配置文件中:slaveof master_IP Port slaveof 192.168.1.123 6397

具体配置比较简单,在 slave 的配置文件中:slaveof master_IP Port slaveof 192.168.1.123 6397 启动 master 和 salve 的 redis 服务以后,查看一下 salve 的 info 末尾会看到,

具体配置比较简单,在 slave 的配置文件中:slaveof master_IP Port slaveof 192.168.1.123 6397 启动 master 和 salve 的 redis 服务以后,查看一下 salve 的 info 末尾会看到,

role:slavemaster_host:192.168.1.123master_port:6379master_link_status:upmaster_last_io_seconds_ago:6master_sync_in_progress:0db0:keys=2,expires=0

这样 master-salve 已经成功运行了,可以在 master 中 set 一个然后在 salve 中 get 一下测试看看。

Snapshot 快照存储,是默认的持久化方式。可以在 master 禁用 SNAPSHOTTING 持久化方式的策略,只需在 slave 上配置数据持久化。

save 900 1 #在900秒之内,redis至少发生1次修改则redis抓快照到磁盘
save 300 100 #在300秒之内,redis至少发生100次修改则redis抓快照到磁盘
save 60 10000 #在60秒之内,redis至少发生10000次修改则redis抓快照到磁盘

同时 redis 主从也支持设置身份验证 ,官方文档: To do it on a running instance, use redis-cli and type:

config set masterauth

To set it permanently, add this to your config file:

masterauth

转载请注明: 转载自Ryan 是菜鸟 | LNMP 技术栈笔记

如果觉得本篇文章对您十分有益,何不 打赏一下

谢谢打赏

本文链接地址: Redis 主从复制配置

知识共享许可协议 本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可