在Slave启动并连接到Master之后,它将主动发送一个SYNC命令。此后Master将启动后台存盘进程,同时收集所有接收到的用于修改数据集的命令,在后台进程执行完毕后,Master将传送整个数据库文件到Slave,以完成一次完全同步。而Slave服务器在接收到数据库文件数据之后将其存盘并加载到内存中。此后,Master继续将所有已经收集到的修改命令,和新的修改命令依次传送给Slaves,Slave将在本次执行这些数据修改命令,从而达到最终的数据同步。
如果Master和Slave之间的链接出现断连现象,Slave可以自动重连Master,但是在连接成功之后,一次完全同步将被自动执行。
配置说明:
主从实现案例(本案例是通过一主机多端口的方式实现的)
1.创建redis主从目录
# mkdir /redis/{master_6379,slave_6380}/{conf,log,data} -p
# cp /root/redis-3.0.5/redis.conf master_6379/conf/master.conf
# cp /root/redis-3.0.5/redis.conf slave_6380/conf/slave.conf
2. 修改redis主从服务器的配置文件
# vim master_6379/conf/master.conf #修改主服务器的配置文件
pidfile /redis/master_6379/redis_master.pid
port
logfile "/redis/master_6379/log/master.log"
dir /redis/master_6379/data/
appendfilename "appendonly.aof"
# vim /redis/slave_6380/conf/slave.conf #修改从服务器的配置文件
pidfile /redis/slave_6380/redis_slave.pid
port 6380
logfile "/redis/slave_6380/log/slave.log"
dir /redis/slave_6380/data/
slaveof 127.0.0.1 6379
appendfilename "appendonly.aof"
3.启动主、从服务器
# redis-server /redis/master_6379/conf/master.conf
# redis-server /redis/slave_6380/conf/slave.conf
4.向主服务器添加数据
# redis-cli -p 6379
127.0.0.1:6379> set key1 hello
OK
127.0.0.1:6379> set key2 world
OK
127.0.0.1:6379> set key3 !!!
OK
127.0.0.1:6379> keys *
1) "key2"
2) "key1"
3) "key3"
127.0.0.1:6379> quit
5.在从服务器上查看数据信息是否已同步
# redis-cli -p 6380
127.0.0.1:6380> get key1
"hello"
127.0.0.1:6380> get key2
"world"
127.0.0.1:6380> get key3
"!!!"
127.0.0.1:6380> keys *
1) "key1"
2) "key2"
3) "key3"
127.0.0.1:6380> quit
参考文献链接:http://www.linuxidc.com/Linux/2016-03/129301.htm