redis集群中的数据库复制就是通过主从同步实现的

主节点Master把数据分发给节点Salve

主从同步的好处在高可用, redis节点有冗余设计

 

redis主从同步的原理

1. 从服务器向主服务器发送 SYNC 命令。
2. 接到 SYNC 命令的主服务器会调用BGSAVE 命令,创建一个 RDB 文件,并使用缓冲区记录接下来执行的所有写命令。
3. 当主服务器执行完 BGSAVE 命令时,它会向从服务器发送 RDB 文件,而从服务器则会接收并载入这个文件。
4. 主服务器将缓冲区储存的所有写命令发送给从服务器执行。

-------------
1、在开启主从复制的时候,使用的是RDB方式的,同步主从数据的
2、同步开始之后,通过主库命令传播的方式,主动的复制方式实现
3、2.8以后实现PSYNC的机制,实现断线重连

 

环境准备

准备两台装有redis的服务器,或两个redis实例

查看各个redis的角色信息

默认redis的角色就是master

Redis主从备份是部署在一台服务器上么 redis的主从复制是什么_主从同步

 

配置主库master

主库其实没有什么需要配置的, 但是需要注意一下几点

1. protected-mode no    # 关闭
2. 查看主库有没有设置密码  # 如果主库设置密码, 从库中需要指定主库的密码
3. bing 192.168.1.1 # 绑定自己的IP, 不要使用127.0.0.1回环地址

 

配置从库Salve

设置从库的方式有两种, 一种是在redis命令行修改, 另一种是配置文件中修改

 

方式一: 在配置文件中(推荐使用)

[root@web01 04:15 /data/6379]# cat /opt/redis-4.0.10/conf/redis-v1.conf 
port 6379
daemonize yes
pidfile /data/6379/redis.pid
loglevel notice
logfile "/data/6379/redis.log"
dir /data/6379
slaveof 192.168.233.130 6379  # 主库的ip + 端口    
masterauth 123456    # 主库的密码, 出库有密码的时候才需要配置

再次查看从库的角色信息, 看到master_link_status为on

Redis主从备份是部署在一台服务器上么 redis的主从复制是什么_主从同步_02

 

 方式二, 命令行设置

进入从库的命令行

[root@web01 04:21 /data/6379]# redis-cli 
127.0.0.1:6379> ping
PONG

在命令行设置要同步的主库

127.0.0.1:6389> SLAVEOF 192.168.233.130 6379

查看从库和主库的连接状态也是on, 就表示成功

 

测试主从同步

在主库中去set一个键值, 然后在从库中去查看是不是同步的, 

 

 

遇到问题怎么办

去查看redis的log, 在redis.log中会有详细的报错信息