![](https://csdnimg.cn/release/download_crawler_static/85978607/bg4.jpg)
在多台服务器上简单实现 Redis 的数据主从复制
Redis 的主从复制功能非常强大,一个 master 可以拥有多个 slave,而一个 slave
又可以拥有多个 slave,如此下去,形成了强大的多级服务器集群架构。下面我演示下怎样在
多台服务器上进行 Redis 数据主从复制。这里我假设有两台服务器,一台是 Windows
操作
系统(局域网IP:192.168.3.82),一台是Linux
操作系统(局域网IP:192.168.3.90),
在两
个操作系统都安装 redis,Windows 操作系统使用 cygwin 工具进行安装,命令为:
view sourceprint?
1 $ tarxzf redis-2.2.2.tar.gz
9Redis 是否支持集群
支持
redis 主从复制配置和使用都非常简单。通过主从复制可以允许多个 slave server 拥有
和 master server 相同的数据库副本。下面是关于redis 主从复制的一些特点
1. master 可以有多个 slave
2. 除了多个 slave 连到相同的 master 外,slave 也可以连接其他 slave 形成图状结构
3. 主从复制不会阻塞 master。也就是说当一个或多个 slave 与 master 进行初次同步数据
时,master 可以继续处理 client 发来的请求。相反 slave 在初次同步数据时则会阻塞不能
处理 client 的请求。
4. 主从复制可以用来提高系统的可伸缩性,我们可以用多个slave 专门用于client 的读请求,
比如 sort 操作可以使用 slave 来处理。也可以用来做简单的数据冗余
5. 可以在 master 禁用数据持久化,只需要注释掉 master 配置文件中的所有 save 配置,
然后只在 slave 上配置数据持久化。
下面介绍下主从复制的过程
当设置好 slave 服务器后,slave 会建立和 master 的连接,然后发送 sync 命令。无
论是第一次同步建立的连接还是连接断开后的重新连接,master 都会启动一个后台进程, 将
数据库快照保存到文件中,同时 master 主进程会开始收集新的写命令并缓存起来。后台进程
完成写文件后,master 就发送文件给 slave,slave 将文件保存到磁盘上,然后加载到内存
恢复数据库快照到 slave 上。接着 master 就会把缓存的命令转发给 slave。而且后续
master 收到的写命令都会通过开始建立的连接发送给slave。从 master 到 slave 的同步数
据的命令和从 client 发送的命令使用相同的协议格式。当master 和 slave 的连接断
开时 slave 可以自动重新建立连接。如果 master 同时收到多个 slave 发来的同步连接命
令,只会使用启动一个进程来写数据库镜像,然后发送给所有slave。
可以通过"make test”命令判断是否安装成功。