vlambda博客
学习文章列表

【经验与坑】搭建Redis主从复制

什么是主从复制?

即主机数据更新后根据配置和策略,自动同步到备机的 master->slave 机制中,其中Master以写为主,Slave以读为主。

这种架构的优点:

  • 读写分离:假如只有一台server的话,读和写都在这一台server中进行,这台server的压力十分巨大,会导致宕机的危险。

  • 容灾快速恢复:在客户端读取的场景下,如果某一个从服务器挂掉了,不用慌张,因为还有另外两台内容完全一致的从服务器供客户使用。在学习的过程中可能会有疑问,为什么只能有一个主服务器,用一个生动的比喻来解释这个疑问,就是一个团队只能有一个领导,有好几个老大的话,下属听谁的这也是一个问题,可能会导致团队的命令崩溃。所以只能是 “一主多从” 的架构模式。


如何配置主从复制
方便起见,使用轻量云服务器进行配置。

这里只是用一台服务器通过变换端口号设置了三台伪集群redis服务器。

1.在根目录下创建 /myredis 文件夹

mkdir /myredis

2.复制 redis.conf 配置文件到文件夹中

cp /etc/redis.conf /myredis/redis.conf

3.配置一主两从,创建三个配置文件

  • 根据不同的端口号来命名文件

  • 例如 redis16751.conf  redis16752.conf redis16753.conf

4.在三个配置文件写入内容

首先把公共部分的 conf 文件中的redis持久化设置为no

【经验与坑】搭建Redis主从复制

拓展一下:redis可以实现数据的持久化存储,也就是把数据存在磁盘上。Redis的持久化存储有两种方式:RDB(默认配置)和AOF(手动开启)

目前Redis的配置中默认是关闭AOF模式的。


下一步,配置每个文件的具体内容

include /myredis/redis.confpidfile /var/run/redis_16751.pidport 16751dbfilename dump16751.rdb

【经验与坑】搭建Redis主从复制

以同样的方式创建另外两个配置文件。

【经验与坑】搭建Redis主从复制

下一步:启动三台redis服务器

【经验与坑】搭建Redis主从复制

这样启动之后,三台服务器之间是没有关系的,通过连接redis客户端输入命令:

info replication

来查看当前服务器的状态属性等。

【经验与坑】搭建Redis主从复制

其他两个服务器现在也是 master 状态。

下一步配置从(库)不用配主(库),命令:

slaveof <ip> <port>

成为 <ip><port> 实例的从服务器

实践:在 16752 和 16753上执行命令:

slaveof 127.0.0.1 16751

使其成为 16751 的从服务器。

【经验与坑】搭建Redis主从复制

同样的方式配置16753。

【经验与坑】搭建Redis主从复制


验证主从读写机制:

在主服务器中测试写入

【经验与坑】搭建Redis主从复制

两台从服务器已成功复制了数据

【经验与坑】搭建Redis主从复制

而且,在从服务器中是无法写入数据的。

报错信息:

(error) READONLY You can't write against a read only replica.