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
配置主库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
方式二, 命令行设置
进入从库的命令行
[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中会有详细的报错信息