主从简介
1.主从 – 用法

像MySQL一样,redis是支持主从同步的,而且也支持一主多从以及多级从结构。

主从结构,一是为了纯粹的冗余备份,二是为了提升读性能,比如很消耗性能的SORT就可以由从服务器来承担。
redis的主从同步是异步进行的,这意味着主从同步不会影响主逻辑,也不会降低redis的处理性能。
主从架构中,可以考虑关闭主服务器的数据持久化功能,只让从服务器进行持久化,这样可以提高主服务器的处理性能。
2.主从同步原理

主从 – 同步原理
从服务器会向主服务器发出SYNC指令,当主服务器接到此命令后,就会调用BGSAVE指令来创建一个子进程专门进行数据持久化工作,也就是将主服务器的数据写入RDB文件中。在数据持久化期间,主服务器将执行的写指令都缓存在内存中。
在BGSAVE指令执行完成后,主服务器会将持久化好的RDB文件发送给从服务器,从服务器接到此文件后会将其存储到磁盘上,然后再将其读取到内存中。这个动作完成后,主服务器会将这段时间缓存的写指令再以redis协议的格式发送给从服务器。另外,要说的一点是,即使有多个从服务器同时发来SYNC指令,主服务器也只会执行一次BGSAVE,然后把持久化好的RDB文件发给多个从服务器。而在2.8版本之后,redis支持了效率更高的增量同步策略,这大大降低了连接断开的恢复成本。主服务器会在内存中维护一个缓冲区,缓冲区中存储着将要发给从服务器的内容。从服务器在与主服务器出现网络瞬断之后,从服务器会尝试再次与主服务器连接,一旦连接成功,主服务器就会向从服务器发送增量内容。增量同步功能,需要服务器端支持全新的PSYNC指令。这个指令,只有在redis-2.8之后才具有。
了解:
BGSAVE指令:
在后台异步(Asynchronously)保存当前数据库的数据到磁盘。
BGSAVE 命令执行之后立即返回 OK ,然后 Redis fork 出一个新子进程,原来的 Redis 进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。

3、部署三台机器redis—主从同步

1.首先三台服务器将redis部署完成。
redis-master----192.168.152.140
redis-slave-1-----192.168.152.158
redis-slave-2-----192.168.152.137
2.三台关闭防火墙
systemctl  stop  firewalld
setenforce 0
3.三台下载redis[root@redis-master ~]# mkdir -p /data/application     ---创建工作目录,默认安装在/usr/local[root@redis-master ~]# wget http://download.redis.io/releases/redis-4.0.9.tar.gz   ---下载redis[root@redis-master ~]# tar xzf redis-4.0.9.tar.gz -C /data/application/    ---解压[root@redis-master ~]# cd /data/application/[root@redis-master application]# mv redis-4.0.9/ redis[root@redis-master application]# cd redis/[root@redis-master redis]# yum install -y gcc make  #安装编译工具[root@redis-master redis]# make
注:如果报错请将刚才解压的安装包删除掉,再次重新解压并进行make安装即可。
[root@redis-master redis]# cp redis.conf redis.conf.bak    备份
[root@redis-master redis]# vim redis.conf     ---修改如下
bind 0.0.0.0  #只监听内网IP
daemonize yes     #开启后台模式将on改为yes
port 6379                      #端口号
dir /data/application/redis/data  #本地数据库存放持久化数据的目录该目录-----需要存在
创建存放数据的目录
root@redis-master redis]# mkdir /data/application/redis/data
配置redis为systemctl启动
[root@redis-master redis]# cd /lib/systemd/system
[root@redis-master system]# vim redis.service
[Unit]
Description=Redis
After=network.target[Service]
ExecStart=/data/application/redis/src/redis-server /data/application/redis/redis.conf  --daemonize no
ExecStop=/data/application/redis/src/redis-cli -h 127.0.0.1 -p 6379 shutdown[Install]
WantedBy=multi-user.target
参数详解:
• [Unit] 表示这是基础信息
• Description 是描述
• After 是在那个服务后面启动,一般是网络服务启动后启动• [Service] 表示这里是服务信息
• ExecStart 是启动服务的命令
• ExecStop 是停止服务的指令• [Install] 表示这是是安装相关信息
• WantedBy 是以哪种方式启动:multi-user.target表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。
[root@redis-master system]# systemctl daemon-reload  #重新加载
[root@redis-master system]# systemctl start redis.service
查看端口:netstat  -lntp
三台登陆redis,测试安装是否成功
[root@redis-master system]# cd /data/application/redis/src/
[root@redis-master src]# ./redis-cli -h 192.168.152.140 -p 6379
[root@redis-slave-1 src]# ./redis-cli -h 192.168.152.158 -p 6379
[root@redis-slave-2 src]# ./redis-cli -h 192.168.152.137 -p 6379
4.编辑master的redis配置文件:
[root@redis-master ~]# cd /data/application/redis/
[root@redis-master redis]# vim redis.conf

关闭protected-mode模式,此时外部网络可以直接访问

开启protected-mode保护模式,需配置bind ip或者设置访问密码
5.启动主节点redis服务
[root@redis-master src]# cd /data/application/redis/src
[root@redis-master src]# ./redis-server …/redis.conf & 会加载此文件中的配置信息或者重启服务。

6.修改slave1的配置文件:
[root@redis-slave-1 ~]# cd /data/application/redis/
[root@redis-slave-1 redis]# vim redis.conf      ---修改如下:

7.启动从节点1的redis服务
[root@redis-slave-1 ~]# cd /data/application/redis/src/
[root@redis-slave-1 src]# ./redis-server ../redis.conf & 或者用systemctl  restart redis重启服务
8.修改slave2的配置文件
[root@redis-slave-2 ~]# cd /data/application/redis/
[root@redis-slave-2 redis]# vim redis.conf       ---修改如下

9.启动从节点2的redis服务
[root@ansible-web2 ~]# cd /data/application/redis/src/
[root@ansible-web2 src]# ./redis-server …/redis.conf &

或者,配置到了系统管理工具里面直接可以以下操作
10.重启三台redis
[root@redis-master redis]# systemctl restart redis.service
[root@redis-slave-1 ~]# systemctl restart redis.service
[root@redis-slave-2 ~]# systemctl restart redis.service

11.测试主从
1.在master上面执行
[root@redis-master redis]# cd src/
[root@redis-master src]# ./redis-cli

12.分别在slave-1和slave-2上面执行:
[root@redis-slave-1 redis]# cd src/
[root@redis-slave-1 src]# ./redis-cli
[root@redis-slave-2 src]# ./redis-cli


13.查看复制状态
master执行:
127.0.0.1:6379> info replication

slave上面执行:
127.0.0.1:6379> info replication

注意:从服务器一般默认禁止写入操作:slave-read-only yes
主从同步部署完成!

Redis主从配置(主从同步)相关推荐

  1. MySQL主从配置 主从数据库不同步的原因

    MySQL主从配置中,主从数据库不同步的原因可能有以下几种: 主库的binlog格式或版本与从库不匹配. 主库和从库之间网络问题导致数据传输中断. 主库和从库之间的时间不同步. 主从复制用户权限设置不 ...

  2. Nagios深入进阶之四:主从配置的同步

    转载本博客文章请注明,转载自: 小明明's à domicile () 本文地址: http://www.dongwm.com/archives/nagios%e6%b7%b1%e5%85%a5%e8 ...

  3. Redis离线搭建主从结构

    最近给跟总公司那边做项目,权限管理比较严个,服务器不能链接外网没办法yum安装redis服务,写下这篇记录下离线搭建redis过程. 本次搭建的机器属性:centos7.2  root权限下,由于保密 ...

  4. mysql主从配置实现_MySQL主从配置实现

    //MySQL主从配置 首先,两边都要安装MySQL,启动两边的MySQL 接着,配置主从,要保证主从数据都一样的 可以用rsync弄过去 在主上配置/etc/my.cnf server-id=1 l ...

  5. Redis——学习之路三(初识redis config配置)

    我们先看看config 默认情况下系统是怎么配置的.在命令行中输入 config get *(如图) 默认情况下有61配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息. 我们就 ...

  6. Redis单机配置多实例,实现主从同步

    版权声明:本文为博主原创文章,欢迎转载,转载请保留或注明出处 本文转自:http://www.cnblogs.com/lgeng/p/6623336.html 一,单机多实例: Redis官网: ht ...

  7. Redis数据库搭建主从同步(主从概念、主从配置、主从数据操作)

    1. 主从概念 ⼀个master可以拥有多个slave,⼀个slave⼜可以拥有多个slave,如此下去,形成了强⼤的多级服务器集群架构 master用来写数据,slave用来读数据,经统计:网站的读 ...

  8. Redis配置主从数据,实现主从库之间数据同步

    一.背景 需求来源:在现代网络时代,随着用户访问量增加,网站并发量增加,数据库面临压力倍增,当并发到达一个巅峰值,服务器会宕机,那么如何避免这种现象出现呢? 下面是个人总结的几点解决方案: 1.增加服 ...

  9. Redis——学习之路四(初识主从配置)

    首先我们配置一台master服务器,两台slave服务器.master服务器配置就是默认配置 端口为6379,添加就一个密码CeshiPassword,然后启动master服务器. 两台slave服务 ...

最新文章

  1. 基于蚂蚁金服「如何管理好10万行代码」搭建了 Vue 项目架构
  2. 我的图床设置PicGo
  3. 工作经验教训_在设计工作五年后获得的经验教训
  4. OAuth 2.1 的进化之路
  5. 在使用angularjs过程,ng-repeat中track by的作用
  6. 一个通用的makefile写法,自动推导文件的依赖关系
  7. Windows上SVN服务器搭建【转】
  8. 解决兼容低版本浏览的痛:IE中的CSS3不完全兼容方案
  9. php html转ubb,php实现转换ubb代码的方法
  10. openwrt信号弱掉线_QCA9880 openwrt 信号非常差
  11. 用计算机进行废物回收,回收旧的显示器以进行废物利用
  12. 基于Android汽车违章查询app系统
  13. 解决winrar压缩文件或文件夹时,文件拒绝访问问题
  14. 互联网公司刻板印象合集:程序员都秃头,商务个个是人精
  15. 【信息安全】信息安全风险评估-实践指南
  16. 用m1 pro的MacBook Pro,安装 Anaconda arm 图形版
  17. 学习社会工程学需要什么前置知识
  18. 百度金融独立分拆,不过朱光透露的这个信息更值得关注
  19. 【java开发】快速搭建java开发环境(离线开发、在线开发)
  20. 利用SparkSQL Logical Plan Parse 打造大数据平台SQL诊断利器

热门文章

  1. 120亿美元打造 美军战地移动网络被曝存重大漏洞
  2. Redis 定长队列的探索和实践
  3. 华为mate40什么时候上市 华为mate40 参数配置爆光
  4. 小米VR-玩具版开箱试用
  5. vue使用json数据
  6. [附源码]JAVA+ssm计算机毕业设计大众点评管理系统(程序+Lw)
  7. 腾讯文学之路,任重而道远
  8. 单招计算机考试知识点,单招语文考点及技巧
  9. wx.reLaunch和wx.navigateTo区别
  10. iPad白苹果的简单修复方法