redis持久化
RDB
基于快照的持久化
通过save命令,强制持久化 
在redis.conf中
dbfilename  dbmp.rdb
save  900 1
save 300 10
save 60  10000
 
AOF
将修改命令,全部收集写入到一个aof文件中
appendonly yes
appendfsync  everysec   #每秒钟记录一次变化
 
RDB数据切换AOF数据的操作
1.准备redis.conf配置文件,确保开启rdb功能,配置参数如下
 port 6379
 daemonize yes
 pidfile /data/redis.pid
 loglevel notice
 logfile "/data/redis.log"
 dir /data/
 dbfilename  dbmp.rdb
 save  900 1
 save 300 10
 save 60  10000
2.启动redis服务端
 redis-server redis.conf
3.插入redis数据,通过save命令,强制写入持久化rdb文件(此时还是使用rdb持久化)
 set name shahe
 set age 11
 save 
 
4.通过命令,切换到aof持久化,(注意此步只是临时生效,必须将AOF的配置,写入redis.conf)
127.0.0.1:6379> CONFIG set appendonly yes   #开启AOF功能
OK
127.0.0.1:6379> CONFIG SET save ""  #关闭RDB功能
OK
5.修改配置文件,添加aof参数,(此步重启后,rdb持久化完全切换aof持久化,且数据保持一致)
port 6379
daemonize yes
pidfile /data/redis.pid
loglevel notice
logfile "/data/redis.log"
dir /data/
appendonly yes
appendfsync  everysec
6.重启redis服务
********************************************************************************************************
redis主从复制:
1.环境准备3个redis实例
redis-6380.conf
redis-6381.conf
redis-6382.conf
    三个配置文件的区别,仅仅是端口的不同修改即可
port 6380
daemonize yes  
pidfile /data/6380/redis.pid
loglevel notice
logfile "/data/6380/redis.log"
dbfilename dump.rdb
dir /data/6380
protected-mode no
2.启动三个redis实例
redis-server 6380.conf
redis-server 6381.conf
redis-server 6382.conf
3.此时可以查看redis身份信息,通过info参数()此时还未配置主从,因此都是master身份
redis-cli -p 6382 info Replication
redis-cli -p 6381 info Replication
redis-cli -p 6380 info Replication
4.配置从节点的身份(6380为主,6381,6382为从),通过命令指明master节点信息即可
127.0.0.1:6381> SLAVEOF 127.0.0.1 6380
127.0.0.1:6382> SLAVEOF 127.0.0.1 6380
5.查看各个各个节点的身份信息
redis-cli -p 6382 info Replication  从节点
redis-cli -p 6381 info Replication    从节点
redis-cli -p 6380 info Replication  ()主节点
 
#手动切换主从身份
1.将主节点挂掉
kill -9 主节点 6380
2.将6382去掉slave的身份
redis-cli -p 6382 slaveof no one
3.将6381设置新的主人,设置为6382
redis-cli -p 6381 slaveof 127.0.0.1 6382
 
#通过配置文件,决定主从身份
1.在配置文件中,添加一条参数即可(主节点不做配置,从节点指明主人的ip端口信息即可)
port 6380
daemonize yes
pidfile /data/6380/redis.pid
loglevel notice
logfile "/data/6380/redis.log"
dbfilename dump.rdb
dir /data/6380
protected-mode no
slaveof 127.0.0.1 6381
 
 
 
 
 

redis不重启,切换RDB备份到AOF备份

 

确保redis版本在2.2以上

  1. [root@pyyuc /data 22:23:30]#redis-server -v
  2. Redis server v=4.0.10 sha=00000000:0 malloc=jemalloc-4.0.3 bits=64 build=64cb6afcf41664c

本文在redis4.0中,通过config set命令,达到不重启redis服务,从RDB持久化切换为AOF

实验环境准备

redis.conf服务端配置文件

  1. daemonize yes
  2. port 6379
  3. logfile /data/6379/redis.log
  4. dir /data/6379
  5. dbfilename dbmp.rdb
  6. save 900 1 #rdb机制 每900秒 有1个修改记录
  7. save 300 10 #每300秒 10个修改记录
  8. save 60 10000 #每60秒内 10000修改记录

启动redis服务端

  1. redis-server redis.conf

登录redis-cli插入数据,手动持久化

  1. 127.0.0.1:6379> set name chaoge
  2. OK
  3. 127.0.0.1:6379> set age 18
  4. OK
  5. 127.0.0.1:6379> set addr shahe
  6. OK
  7. 127.0.0.1:6379> save
  8. OK

检查RDB文件

  1. [root@pyyuc /data 22:34:16]#ls 6379/
  2. dbmp.rdb redis.log

备份这个rdb文件,保证数据安全

  1. [root@pyyuc /data/6379 22:35:38]#cp dbmp.rdb /opt/

执行命令,开启AOF持久化

  1. 127.0.0.1:6379> CONFIG set appendonly yes #开启AOF功能
  2. OK
  3. 127.0.0.1:6379> CONFIG SET save "" #关闭RDB功能
  4. OK

确保数据库的key数量正确

  1. 127.0.0.1:6379> keys *
  2. 1) "addr"
  3. 2) "age"
  4. 3) "name"

确保插入新的key,AOF文件会记录

  1. 127.0.0.1:6379> set title golang
  2. OK

此时RDB已经正确切换AOF,注意还得修改redis.conf添加AOF设置,不然重启后,通过config set的配置将丢失

redis主从同步

原理:
1. 从服务器向主服务器发送 SYNC 命令。
2. 接到 SYNC 命令的主服务器会调用BGSAVE 命令,创建一个 RDB 文件,并使用缓冲区记录接下来执行的所有写命令。
3. 当主服务器执行完 BGSAVE 命令时,它会向从服务器发送 RDB 文件,而从服务器则会接收并载入这个文件。
4. 主服务器将缓冲区储存的所有写命令发送给从服务器执行。

-------------
1、在开启主从复制的时候,使用的是RDB方式的,同步主从数据的
2、同步开始之后,通过主库命令传播的方式,主动的复制方式实现
3、2.8以后实现PSYNC的机制,实现断线重连

环境准备

6380.conf

  1. 1、环境:
  2. 准备两个或两个以上redis实例
  3.  
  4. mkdir /data/638{0..2} #创建6380 6381 6382文件夹
  5.  
  6. 配置文件示例:
  7. vim /data/6380/redis.conf
  8. port 6380
  9. daemonize yes
  10. pidfile /data/6380/redis.pid
  11. loglevel notice
  12. logfile "/data/6380/redis.log"
  13. dbfilename dump.rdb
  14. dir /data/6380
  15. protected-mode no

6381.conf

  1. vim /data/6381/redis.conf
  2. port 6381
  3. daemonize yes
  4. pidfile /data/6381/redis.pid
  5. loglevel notice
  6. logfile "/data/6381/redis.log"
  7. dbfilename dump.rdb
  8. dir /data/6381
  9. protected-mode no

6382.conf

  1. port 6382
  2. daemonize yes
  3. pidfile /data/6382/redis.pid
  4. loglevel notice
  5. logfile "/data/6382/redis.log"
  6. dbfilename dump.rdb
  7. dir /data/6382
  8. protected-mode no

启动三个redis实例

  1. redis-server /data/6380/redis.conf
  2. redis-server /data/6381/redis.conf
  3. redis-server /data/6382/redis.conf

主从规划

  1. 主节点:6380
  2. 从节点:63816382

配置主从同步

6381/6382命令行

redis-cli -p 6381
SLAVEOF 127.0.0.1 6380  #指明主的地址

redis-cli -p 6382
SLAVEOF 127.0.0.1 6380  #指明主的地址

检查主从状态

从库:

  1. 127.0.0.1:6382> info replication
  2. 127.0.0.1:6381> info replication

主库:

  1. 127.0.0.1:6380> info replication

测试写入数据,主库写入数据,检查从库数据

  1. 127.0.0.1:6380> set name chaoge
  2.  
  3. 127.0.0.1:6381>get name

手动进行主从复制故障切换

  1. #关闭主库6380redis-cli -p 6380
  2. shutdown

检查从库主从信息,此时master_link_status:down

  1. redis-cli -p 6381
  2. info replication
  1. redis-cli -p 6382
  2. info replication
  1.  

既然主库挂了,我想要在6381 6382之间选一个新的主库

1.关闭6381的从库身份

  1. redis-cli -p 6381
  2. info replication
  3. slaveof no one

2.将6382设为6381的从库

  1. 6382连接到6381
  2. [root@db03 ~]# redis-cli -p 6382
  3. 127.0.0.1:6382> SLAVEOF no one
  4. 127.0.0.1:6382> SLAVEOF 127.0.0.1 6381

3.检查6382,6381的主从信息

 
 
 
 
 
 

linux之 redis 的rdb 转 aof 及主从复的更多相关文章

  1. Linux - redis持久化RDB与AOF

    目录 Linux - redis持久化RDB与AOF RDB持久化 redis持久化之AOF redis不重启,切换RDB备份到AOF备份 确保redis版本在2.2以上 实验环境准备 备份这个rdb ...

  2. redis的 rdb 和 aof 持久化的区别 [转]

    aof,rdb是两种 redis持久化的机制.用于crash后,redis的恢复. rdb的特性如下: Code: fork一个进程,遍历hash table,利用copy on write,把整个d ...

  3. redis的 rdb 和 aof 持久化的区别

    aof,rdb是两种 redis持久化的机制.用于crash后,redis的恢复. rdb的特性如下: Code: fork一个进程,遍历hash table,利用copy on write,把整个d ...

  4. redis持久化 RDB与AOF

    redis持久化 RDB与AOF RDB与AOF区别 rdb: 基于快照的持久化,速度更快,一般用做备份,主从复制也是依赖于rdb持久化功能 aof:以追加的方式记录redis操作日志的文件,可以最大 ...

  5. Redis之RDB与AOF 笔记

    AOF定义:以日志的形式记录每个操作,将Redis执行过的所有指令全部记录下来(读操作不记录),只许追加文件但不可以修改文件,Redis启动时会读取AOF配置文件重构数据 换句话说,就是Redis重启 ...

  6. Redis之RDB与AOF

    AOF定义:以日志的形式记录每个操作,将Redis执行过的所有指令全部记录下来(读操作不记录),只许追加文件但不可以修改文件,Redis启动时会读取AOF配置文件重构数据 换句话说,就是Redis重启 ...

  7. 配置方案:Redis持久化RDB和AOF

    Redis持久化方案 Redis是内存数据库,数据都是存储在内存中,为了避免进程退出导致数据的永久丢失,需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘.当下次Redis重启时,利 ...

  8. Redis(二)、Redis持久化RDB和AOF

    一.Redis两种持久化方式 对Redis而言,其数据是保存在内存中的,一旦机器宕机,内存中的数据会丢失,因此需要将数据异步持久化到硬盘中保存.这样,即使机器宕机,数据能从硬盘中恢复. 常见的数据持久 ...

  9. Redis持久化 - RDB和AOF

    原文:https://segmentfault.com/a/1190000016021217 一.持久化的作用 1. 什么是持久化 持久化(Persistence),即把数据(如内存中的对象)保存到可 ...

随机推荐

  1. oauth 2.0 授权流程图

    1.授权码模式(authorization code) 7 步  后面 拿到授权码以后,就是向 资源服务器请求资源了. 2.简化模式(implicit): 在上面的第4 步的返回中,已经包含了 acc ...

  2. python时间戳转时间

    import time timestamp = 1462451334 #转换成localtime time_local = time.localtime(timestamp) #转换成新的时间格式(2 ...

  3. Linux Centos配置ssh客户端工具putty

      配置ssh客户端工具putty 1.直接点击putty.exe文件 2.配置putty 3.配置putty编码 4.配置putty字体大小 5.配置putty样式 6.保存配置信息 7.配置MTp ...

  4. 顶级域名和二级域名共享cookie及相互删除cookie

    在CSDN看到一个cookie设置domain时,如何删除的问题, 自己也只知道domain设置为顶级域名时可以被其他二级域名共享,但是如何删除还是有一点搞不清楚,所以特意测试了下cookie和dom ...

  5. inf 启动

    How to install an INF file using Delphi If you need to install an "inf" file using Delphi, ...

  6. Requests+正则表达式爬取猫眼电影

    目标 提取出猫眼电影TOP100的电影名称.时间.评分.图片等信息,提取站点的URL为http://maoyan.com/board/4,提取的结果以文本的形式保存下来. 准备工作 请安装好reque ...

  7. Python高效编程技巧

    如何在列表,字典,集合中根据条件筛选数据 1.过滤掉列表[-1,-2,-3,4,5,6]中的负数和0 方法1,for循环 data = [-1, -2, -3, 4, 5, 6] res = [] f ...

  8. Ubuntu16.04系统重装***

    首先准备一个Live CD,就是Ubuntu的安装盘. 备份原理就是将系统文件压缩打包.由于Linux系统所有都是文件,故,只需要将系统打包即可.当然,必须除了当前系统运行中的文件以及临时文件. 打包 ...

  9. linux du 查看文件及文件夹大小

    1.查看当前目录大小: 如在:/home/jzw/share/ du -sh 1.6G    . 2.查看当前目录下各个文件夹的大小: 如在:/home/jzw/share/ du -sh * 3.6 ...

  10. Azure REST API (3) 使用REST API,操作Azure ARM VM

    <Windows Azure Platform 系列文章目录> 笔者之前遇到一个客户,需求是当发生某一个特定条件的时候,对多台Azure ARM VM执行开机或者关机操作,这个时候就需要使 ...