Redis常见的主从复制方式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Java_Jsp_Ssh/article/details/82845873

Redis常用复制方式

复制原理:(1)slave启动成功连接到master后会发送一个sync命令

                    (2)Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步;第一次连接会全量复制,后面增量;

全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。

增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步。

但是只要是重新连接master,一次完全同步(全量复制)将被自动执行。

1:一主二仆

行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件。

第一步:三台主机,也可以用一台主机,三份redis.conf 配置文件,将其port端口改掉即可

1:改端口步骤:

  在redis目录中cp三份redis.conf文件,命名为redis6379.conf, redis6380.conf

,redis6381.conf

2:vim 修改其内容,第一修改pid号,port号,logfile 文件名称,例如6379.log

Dump文件,dump6379.rdb

3:启动三个redis窗口 启动命令:redis-server  /myredis/redis6379.conf

Redis-cli  -p 6379

  关闭命令:SHUTDOWN

4:进程查看命令:ps –ef|grep redis

 

5: info replication 查看配置命令;查看redis所处地位,此时三个都为master,同级;

6:主从设置命令:SLAVEOF 127.0.0.1 6379

 

这里可以将SLAVEOF 127.0.0.1 6379设置到redis.conf文件里 ,否则如slave机挂了,需要重新SLAVEOF一下master机;

2 薪火相传

上一个Slave可以是下一个slave的Master,Slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻master的写压力。

中途变更转向:会清除之前的数据,重新建立拷贝最新的。

  1. 设置如下:6380 redis 跟着6379redis,而6381redis跟着6380redis

2:6380 redis  :SLAVEOF 127.0.0.1 6379   role角色还是slave   info replication

6381 redis  :SLAVEOF 127.0.0.1 6380

 

 

 

3 反客为主

使当前数据库停止与其他数据库的同步,转成主数据库;以前的主数据库即是重新起来,也不会再做master了,与其他分开了;

运行命令:SLAVEOF  no one

  80redis : set kye10  v10

4 哨兵模式

反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。

1:自定义的/myredis目录下新建sentinel.conf文件。

2: vim  sentinel.conf

  sentinel monitor 被监控数据库名字(自己起名字) 127.0.0.1 6379 1

上面最后一个数字1,表示主机挂掉后salve投票看让谁接替成为主机,得票数多少后成为主机

3:挂掉的后的主机会变为salve机

启动哨兵:redis-sentinel  /myredis/sentinel.conf

 

 

 

缺点:复制延时,由于所有的写操作都是先写在Master上操作,然后同步更新到Slave上,所以Master同步到Slave机器上有一定的延时,当系统很繁忙时,延时问题会更严重,Slave机器数量的增加也会使之问题更加严重;

猜你喜欢

转载自blog.csdn.net/Java_Jsp_Ssh/article/details/82845873