redis主从架构

复制的工作过程:

主库会基于pingcheck方式检查从库是否在线,如果在线则直接同步数据文件至从服务端,从服务端也可以主动发送同步请求到主服务端,主库如果是启动了持久化功能时,会不断的同步数据到磁盘上,主库一旦收到从库的同步请求时,主库会将内存中的数据做快照,然后把数据文件同步给从库,从库得到以后是保存在本地文件中(磁盘),而后则把该文件装载到内存中完成数据重建,链式复制也同步如此,因为主是不区分是真正的主,还是另外一个的从

 

1、启动一slave

2slave会向master发送同步命令,请求主库上的数据,不论从是第一次连接,还是非第一次连接,master此时都会启动一个后台的子进程将数据快照保存在数据文件中,然后把数据文件发送给slave

3slave收到数据文件以后会保存到本地,而后把文件重载装入内存

 

  特点:

       1、一个Master可以有多个Slave

       2、支持链式复制(一个slave也可以是其他的slaveslave)

       3Master以非阻塞方式同步数据至slave(master可以同时处理多个slave的读写请求,salve端在同步数据时也可以使用非阻塞方式)

 

我个人简单理解就是去要就去找它本身的硬盘数据传到放进硬盘在重载装入内存

 

在从服务器中定义主服务:

方法一:

127.0.0.1:6379> slaveof 主的IP 主的端口(6379             //成为从库

                     OK

方法二:

# vim /etc/redis.conf  //使用配置配置(在从库上操作)

                     # slaveof <masterip> <masterport> //修改此项如下

                     slaveof 主的IP 主的端口(6379

 

info Replication  # 能查询自己是主还是从

实验:

主:私有ip:172.17.196.224 、公网ip:112.126.63.155

从:ip:192.168.1.5

 

主配置:


[root@ml ~]# yum -y install redis

[root@ml ~]# vim /etc/redis.conf

bind 172.17.196.224

 

从配置:


[root@ml2 ~]# yum -y install redis

[root@ml2 ~]# vim /etc/redis.conf

 slaveof 112.126.63.155 6379

[root@ml2 ~]# redis-cli
127.0.0.1:6379> info Replication

# Replication
role:slave
master_host:112.126.63.155
master_port:6379
master_link_status:up
master_last_io_seconds_ago:9
master_sync_in_progress:0
slave_repl_offset:309
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

 

注意:如果master使用requirepass开启了认证功能,从服务器要使用masterauth <PASSWORD>来连入服务请求使用此密码进行认证;

 

主从常用相关配置:

       slave-serve-stale-data yes         //表示当主服务器不可以用时,则无法判定数据是否过期,此时从服务器仍然接收到读请求时,yes表示仍然响应(继续使用过期数据)

       slave-read-only yes             //启用slave时,该服务器是否为只读

       repl-diskless-sync no   //是否基于diskless机制进行sync操作,一般情况下如果disk比较慢,网络带宽比较大时,在做复制时,此项可以改为Yes

       repl-diskless-sync-delay 5          //指定在slave下同步数据到磁盘的延迟时间,默认为5秒,0表示不延迟

       slave-priority 100               //指定slave优先级,如果有多个slave时,那一个slave将优先被同步

       # min-slaves-to-write 3              //此项表示在主从复制模式当中,如果给主服务器配置了多个从服务器时,如果在从服务器少于3个时,那么主服务器将拒绝接收写请求,从服务器不能少于该项的指定值,主服务器才能正常接收用户的写请求

       # min-slaves-max-lag 10            //表示从服务器与主服务器的时差不能够相差于10秒钟以上,否则写操作将拒绝进行

posted @ 2020-04-07 17:17  meml  阅读(202)  评论(0)    收藏  举报