本文是Redis系列文章的第四篇,将介绍Reids的主从复制配置和搭建的过程,了解更多Redis的知识,可以查看前三篇文章。

1. 概述

像MySQL一样,Redis是支持主从同步的,而且也支持一主多从以及多级从结构。
redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。
通过Redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力。主数据库主要进行写操作,而从数据库负责读操作。
Redis的主从同步是异步进行的,这意味着主从同步不会影响主逻辑,也不会降低Redis的处理性能。

2. 原理

主从复制的原理过程图如下:

master_slave_1

  1. 当一个从数据库启动时,会向主数据库发送sync命令
  2. 主数据库接收到sync命令后会开始在后台保存快照(执行RDB操作),并将保存期间接收到的命令缓存起来;
  3. 当快照完成后,Redis会将快照文件和所有缓存的命令发送给从数据库;
  4. 从数据库收到后,会载入快照文件并执行收到的缓存的命令。

3. 配置

  1. 同时启动两个Redis服务,可以考虑在同一台机器上启动两个Redis服务,分别监听不同的端口,我配置的是6379和6380端口。
  2. 手动修改从服务的配置文件,添加如下命令:
1
slaveof 127.0.0.1 6379

配置修改如图:

master_slave_2

配置完成之后,重启Redis服务,效果图如下:
127.0.0.1 6379:从配置info可以看到,节点状态为master,连接的slave为1:

master_slave_3

127.0.0.1 6380:从配置info可以看到,节点状态为slave,连接到主机127.0.0.1 6379:

master_slave_4

注意事项:
如果你使用主从复制,那么要确保你的master激活了持久化,或者确保它不会在宕机后自动重启。原因:
slave是master的完整备份,因此如果master通过一个空数据集重启,slave也会被清掉。
在配置Redis复制功能的时候,如果主数据库设置了密码,需要在从数据库的配置文件中通过masterauth参数设置主数据库的密码,这样从数据库在连接主数据库时就会自动使用auth命令认证了。

4. 应用实例

配置完成后,现在验证下主从复制:
master主机:

1
2
3
4
5
redis-cli -p 6379
127.0.0.1:6379> set name minhow
OK
127.0.0.1:6379> set minhow redis
OK

slave从机:

1
2
3
4
5
redis-cli -p 6380
127.0.0.1:6380> get minhow
"redis"
127.0.0.1:6380> get name
"minhow"

从上面的执行过程看到,主机执行写命令,从机能同步主机的值,主从复制,读写分离就实现了。

最后更新: 2017年11月19日 20:17

原始链接: http://blog.minhow.com/articles/database/redis-4/

× 请我吃糖~
打赏二维码