redis主从复制

1.redis主从同步

  • Redis集群中的数据库复制是通过主从同步来实现的

  • 主节点(Master)把数据分发从节点(slave)

  • 主从同步的好处在于高可用,Redis节点有冗余设计

  • 原理:

    1. 从服务器向主服务器发送 SYNC 命令。
    2. 接到 SYNC 命令的主服务器会调用BGSAVE 命令,创建一个 RDB 文件,并使用缓冲区记录接下来执行的所有写命令。
    3. 当主服务器执行完 BGSAVE 命令时,它会向从服务器发送 RDB 文件,而从服务器则会接收并载入这个文件。
    4. 主服务器将缓冲区储存的所有写命令发送给从服务器执行。 1、在开启主从复制的时候,使用的是RDB方式的,同步主从数据的
    2、同步开始之后,通过主库命令传播的方式,主动的复制方式实现
    3、2.8以后实现PSYNC的机制,实现断线重连

2.环境准备

  • redis支持多实例的功能,一台机器上,可以运行多个单个的redis数据库
  • 环境准备,准备3个redis数据库,达到1主 2从配置
主库:6379
从库:6380
从库:6381 1.创建一个文件夹:
[root@xujunk data]#mkdir msredis
[root@xujunk data]#cd msredis
2.创建配置文件:6379.conf 6380.conf 6381.conf
[root@xujunk msredis]#vim 6379.conf
port 6379
daemonize yes
pidfile /data/6379/redis.pid
loglevel notice
logfile "/data/6379/redis.log"
dbfilename dump.rdb
dir /data/6379
#将6379.conf 里面6379更改,生成新的文件
[root@xujunk msredis]#sed "s/6379/6380/g" 6379.conf > 6380.conf
[root@xujunk msredis]#sed "s/6379/6381/g" 6379.conf > 6381.conf 3.创建文件夹:用于存放数据,日志
mkdir -p /data/{6379,6380,6381}

3.具体实现:

1.启动redis: 在当前配置目录下
[root@xujunk msredis]#redis-server 6379.conf
[root@xujunk msredis]#redis-server 6380.conf
[root@xujunk msredis]#redis-server 6381.conf 2.检查启动情况:#表示启动成功
[root@xujunk msredis]#ps -ef|grep redis
"""
root 28228 1 0 20:04 ? 00:00:00 redis-server *:6379
root 28244 1 0 20:04 ? 00:00:00 redis-server *:6380
root 28252 1 0 20:04 ? 00:00:00 redis-server *:6381
""" #连接之前先学几个命令:
[root@xujunk msredis]#redis-cli -p 6379 info
"""
...
# Replication
role:master 主节点是master
connected_slaves:0 从节点 连接数为0
master_replid:91eb4ec34cb636f61c88c36b3c8736078598644f
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
...
"""
#此方法也可以查看库从属信息
[root@xujunk msredis]#redis-cli info replication
"""
# Replication
role:master 主节点是master
connected_slaves:0 从节点 连接数为0
master_replid:91eb4ec34cb636f61c88c36b3c8736078598644f
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
"""
3.开启主从复制功能(将3个不同端口库连接起来)
#在6380 和6381数据库上 ,配置主从信息,通过参数形式修改配置,临时生效,注意要写入配置文件
#将6380,6381设置6379从库
[root@xujunk msredis]#redis-cli -p 6380 slaveof 127.0.0.1 6379
OK
[root@xujunk msredis]#redis-cli -p 6381 slaveof 127.0.0.1 6379
OK 4.此时检查6379复制信息,以及6380 6381的复制信息
[root@xujunk msredis]#redis-cli -p 6379 info replication
"""
# Replication
role:master #主节点
connected_slaves:2 #2个从节点
slave0:ip=127.0.0.1,port=6380,state=online,offset=98,lag=1
slave1:ip=127.0.0.1,port=6381,state=online,offset=98,lag=1
master_replid:562912ec0c945d538bc093fa93e1e02841666070
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:98
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:98
"""
#连接redis-cli 6379主库
[root@xujunk msredis]#redis-cli -p 6379
127.0.0.1:6379> set title "hello world" #连接redis-cli 6380从库
[root@xujunk msredis]#redis-cli -p 6380
127.0.0.1:6380> keys *
1) "title" #从库只能读,主库可写入,达到读写分离
  • 刚才介绍是通过参数修改情况下达到读写分离,只是临时的,更改配置文件方式,也很简单:
#6380.conf

port 6380
daemonize yes
pidfile /data/6380/redis.pid
loglevel notice
logfile "/data/6380/redis.log"
dbfilename dump.rdb
dir /data/6380
slaveof 127.0.0.1 6379
appendonly yes #实现持久化存储的
appendfsync everysec #实现持久化存储的 #6381.conf
port 6381
daemonize yes
pidfile /data/6381/redis.pid
loglevel notice
logfile "/data/6381/redis.log"
dbfilename dump.rdb
dir /data/6381
slaveof 127.0.0.1 6379
appendonly yes #实现持久化存储的
appendfsync everysec #实现持久化存储的

4.模拟主从故障,手动切换master-slave身份

1.杀死主库
[root@xujunk msredis]#kill -9 30159
2.手动切换 6381为新的主库,需要先关闭它的从库身份
[root@xujunk msredis]#redis-cli -p 6381 slaveof no one
OK
3.修改6380的新主库是 6381
[root@xujunk msredis]#redis-cli -p 6380 slaveof 127.0.0.1 6381
OK

Part_four:redis主从复制的更多相关文章

  1. [原]Redis主从复制各种环境下测试

    Redis 主从复制各种环境下测试 测试环境: Linux ubuntu 3.11.0-12-generic 2GB Mem 1 core of Intel(R) Core(TM) i5-3470 C ...

  2. NoSQL初探之人人都爱Redis:(4)Redis主从复制架构初步探索

    一.主从复制架构简介 通过前面几篇的介绍中,我们都是在单机上使用Redis进行相关的实践操作,从本篇起,我们将初步探索一下Redis的集群,而集群中最经典的架构便是主从复制架构.那么,我们首先来了解一 ...

  3. 【转】 NoSQL初探之人人都爱Redis:(4)Redis主从复制架构初步探索

    一.主从复制架构简介 通过前面几篇的介绍中,我们都是在单机上使用Redis进行相关的实践操作,从本篇起,我们将初步探索一下Redis的集群,而集群中最经典的架构便是主从复制架构.那么,我们首先来了解一 ...

  4. redis+Keepalived实现Redis主从复制

    redis+Keepalived实现Redis主从复制: 环境:CentOs6.5Master: 10.10.10.203Slave:   10.10.10.204Virtural IP Addres ...

  5. 深入剖析 redis 主从复制

    主从概述 redis 支持 master-slave(主从)模式,redis server 可以设置为另一个 redis server 的主机(从机),从机定期从主机拿数据.特殊的,一个 从机同样可以 ...

  6. 谈谈redis主从复制的重点

    Redis主从复制的配置十分简单,它可以使从服务器是主服务器的完全拷贝.下面是关于Redis主从复制的几点重要内容: Redis使用异步复制.但从Redis 2.8开始,从服务器会周期性的应答从复制流 ...

  7. 配置Redis主从复制

    [构建高性能数据库缓存之redis主从复制][http://database.51cto.com/art/201407/444555.htm] 一.什么是redis主从复制? 主从复制,当用户往Mas ...

  8. Redis主从复制及状态监测

    参考链接:http://www.cnblogs.com/morvenhuang/p/4184262.html #配置redis主从复制: #安装redis- master slave #修改slave ...

  9. Redis主从复制(Master/Slave)

    Redis主从复制(Master/Slave) 修改配置文件 拷贝多个redis.conf文件分别配置如下参数: 开启daemonize yes pidfile port logfile dbfile ...

随机推荐

  1. 刷题记录:2018HCTF&admin

    目录 刷题记录:2018HCTF&admin 一.前言 二.正文 1.解题过程 2.解题方法 刷题记录:2018HCTF&admin 一.前言 经过一个暑假的学习,算是正经一条web狗 ...

  2. TICK/TIGK运维栈安装运行 docker【中】

    InfluxDB docker search influxdb docker pull influxdb docker run -d -p 8086:8086 -v /var/lib/influxdb ...

  3. Cesium的Property机制总结[转]

    https://www.jianshu.com/p/f0b47997224c 前言 Cesium官方教程中有一篇叫<空间数据可视化>(Visualizing Spatial Data).该 ...

  4. postMan下使用xdebug

    增加 ?XDEBUG_SESSION_START=PHPSTORM 例: {{url}}/manage/getuserinfo?XDEBUG_SESSION_START=PHPSTORM

  5. spring boot jar包替换报错之Unable to open nested entry 'BOOT-INF/lib/cache-api-0.4.jar'.

    spring boot用layout ZIP打出来的包能够支持外部classpath,但是当用rar/7zip替换其中的jar后,报下列错误: Unable to open nested entry ...

  6. Xamarin图表开发基础教程(3)OxyPlot框架

    Xamarin图表开发基础教程(3)OxyPlot框架 Xamarin.Android中使用OxyPlot框架 在Xamarin.Android平台上实现图表显示需要完成以下的步骤: 1.添加OxyP ...

  7. SpringMVC返回JSON数据时日期格式化问题

    https://dannywei.iteye.com/blog/2022929 SpringMVC返回JSON数据时日期格式化问题 博客分类: Spring   在运用SpringMVC框架开发时,可 ...

  8. (mac)Idea安装配置maven

    一.mac安装配置maven 1)官网下载(http://maven.apache.org/download.cgi) binary   .tar.gz 下载解压到某处 2)配置环境变量 $ open ...

  9. 位运算在 PHP 实际项目当中的高级运用

    我们首先来看一个系统中常见的需求: 有一个广告表,我们要对广告做显示控制: 手动上下线. 只允许 VIP 查看. 可能的表结构如下: CREATE TABLE `finger_ad` ( `ad_id ...

  10. linux查找文件利器

    查找文件 比如:找nginx.conf配置文件 locate nginx.conf /usr/local/etc/nginx/nginx.conf /usr/local/etc/nginx/nginx ...