ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

redis主从

2021-10-10 18:04:24  阅读:120  来源: 互联网

标签:slave redis 主从 master 服务器 数据 节点


单机瓶颈

1 虽然Redis可以实现单机的数据持久化,但是无论是RDB还是AOF,都解决不了单点宕机问题。

2 即一台单机Redis服务器本身出现系统故障,硬件故障等问题后,就会直接造成数据的丢失,

3 此外,单机的性能也是有极限的,因此需要使用另外的技术来解决单点故障和性能扩展的问题

主从复制原理

1 salve 向master发送sync命令

2 master启动后台存盘进程,并手机所有修改数据命令

3 master完成存盘后,传送整个数据文件到slave

4 slave接受数据文件,加载到内存中完成首次完全同步

5 后续有新数据产生时,master继续将新的数据命令传递给slave完成同步

主从复制架构特点

三种结构模式:
一主一从
一主多从
主从从

一个master可以有多个slave

一个slave只能有一个master

数据流向是单向的,master到slave

主从复制实现

一旦某个slave成为一个master的slave,redis slave服务会清空当前的redis服务器上的所有数据并将master的数据导入到自己的内存,但是如果只是断开同步关系后,则不会删除当前已经同步过的数据
redis slave 也要开始持久化并设置和master同样的连接密码,因为后期slave会有提升为master的可能,slave切换为master同步后会丢失之前的所有数据,而通过持久化可以恢复数据

当配置redis复制功能时,强烈建议打开主服务器的持久化功能,否则的话,由于延迟等问题,部署的服务应该要避免自动启动

参考案例:

导致主从服务器数据全部丢失

1.假设节点a为主服务器,并且关闭了持久化。并且节点b和节点c都从a节点复制数据

2.节点a崩溃,然后由自动拉起服务重启了节点a,由于节点a的持久化被关闭了,所以重启之后没有任何数据

3.节点b和节点c 将从a节点复制数据,但是a的数据是空的,于是就把自身保存的数据副本删除

在关闭主服务器的持久化,并且同时开启自动拉起进程的情况下,即使使用sentinel来实现redis高可用,也是非常危险的。因为主服务器可能拉起的非常快,以至于sentinel在配置心跳时间间隔内没有检测主服务器已被重启,然后还是会执行上面的数据丢失流程无论何时,数据安全都是极其重要的,所以应该禁止主服务器关闭持久化的同时自动启动

redis主从其中服务器不需要设置密码并且要关闭防火墙  /etc/selinux/conf要设置到disabled模式

在第一台服务器上第一步:在/etc/redis.conf中修改protected-mode no 以及bind  0.0.0.0

第二步:重启服务service redis restart

第三步:[root@localhost ~]# redis-cli

127.0.0.1:6379> slaveof 192.168.0.121 6379
OK

127.0.0.1:6379> keys *
(empty list or set)查看是否有数据

在第二台服务器上:

[root@localhost redis]# redis-cli -h 127.0.0.1 -p 6379 -a 1234
127.0.0.1:6379> keys *
1) "1"

复制第一台服务器检测端口telnet 192.168.0.121

 netstat -tnlp查看端口

在第一台服务器上slaveof 192.168.0.121 6379

注意关闭自动拉起服务和持久化

一主两从在第三台服务器的/etc/redis.cong中搜索slaveof添加 

slaveof 192.168.0.121 6379  修改bind 0.0.0.0

级联复制:在第三台服务器/etc/redis.conf中搜索120修改IP为第一台服务器的IP 在第一台服务器上关闭防火墙systemctl stop firewalld在第三台服务器上重启redis   登录redis  查看keys* 

slaveof no one 切断主从  检测是否切断主从info replication 

 

标签:slave,redis,主从,master,服务器,数据,节点
来源: https://www.cnblogs.com/cnds168/p/15389704.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有