linux之 redis 的rdb 转 aof 及主从复
RDB
基于快照的持久化
通过save命令,强制持久化
在redis.conf中
dbfilename dbmp.rdb
save 900 1
save 300 10
save 60 10000
将修改命令,全部收集写入到一个aof文件中
appendonly yes
appendfsync everysec #每秒钟记录一次变化
1.准备redis.conf配置文件,确保开启rdb功能,配置参数如下
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
daemonize yes
pidfile /data/redis.pid
loglevel notice
logfile "/data/redis.log"
dir /data/
appendonly yes
appendfsync everysec
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
redis-server 6380.conf
redis-server 6381.conf
redis-server 6382.conf
redis-cli -p 6382 info Replication
redis-cli -p 6381 info Replication
redis-cli -p 6380 info Replication
127.0.0.1:6381> SLAVEOF 127.0.0.1 6380
redis-cli -p 6382 info Replication 从节点
redis-cli -p 6381 info Replication 从节点
redis-cli -p 6380 info Replication ()主节点
1.将主节点挂掉
kill -9 主节点 6380
redis-cli -p 6382 slaveof no one
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以上
- [root@pyyuc /data 22:23:30]#redis-server -v
- 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服务端配置文件

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

启动redis服务端
- redis-server redis.conf
登录redis-cli插入数据,手动持久化

- 127.0.0.1:6379> set name chaoge
- OK
- 127.0.0.1:6379> set age 18
- OK
- 127.0.0.1:6379> set addr shahe
- OK
- 127.0.0.1:6379> save
- OK

检查RDB文件
- [root@pyyuc /data 22:34:16]#ls 6379/
- dbmp.rdb redis.log
备份这个rdb文件,保证数据安全
- [root@pyyuc /data/6379 22:35:38]#cp dbmp.rdb /opt/
执行命令,开启AOF持久化
- 127.0.0.1:6379> CONFIG set appendonly yes #开启AOF功能
- OK
- 127.0.0.1:6379> CONFIG SET save "" #关闭RDB功能
- OK
确保数据库的key数量正确
- 127.0.0.1:6379> keys *
- 1) "addr"
- 2) "age"
- 3) "name"
确保插入新的key,AOF文件会记录
- 127.0.0.1:6379> set title golang
- 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、环境:
- 准备两个或两个以上redis实例
- mkdir /data/638{0..2} #创建6380 6381 6382文件夹
- 配置文件示例:
- vim /data/6380/redis.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

6381.conf

- vim /data/6381/redis.conf
- port 6381
- daemonize yes
- pidfile /data/6381/redis.pid
- loglevel notice
- logfile "/data/6381/redis.log"
- dbfilename dump.rdb
- dir /data/6381
- protected-mode no

6382.conf

- port 6382
- daemonize yes
- pidfile /data/6382/redis.pid
- loglevel notice
- logfile "/data/6382/redis.log"
- dbfilename dump.rdb
- dir /data/6382
- protected-mode no

启动三个redis实例
- redis-server /data/6380/redis.conf
- redis-server /data/6381/redis.conf
- redis-server /data/6382/redis.conf
主从规划
- 主节点:6380
- 从节点:6381、6382
配置主从同步
6381/6382命令行
redis-cli -p 6381
SLAVEOF 127.0.0.1 6380 #指明主的地址
redis-cli -p 6382
SLAVEOF 127.0.0.1 6380 #指明主的地址
检查主从状态
从库:
- 127.0.0.1:6382> info replication
- 127.0.0.1:6381> info replication
主库:
- 127.0.0.1:6380> info replication
测试写入数据,主库写入数据,检查从库数据

- 主
- 127.0.0.1:6380> set name chaoge
- 从
- 127.0.0.1:6381>get name

手动进行主从复制故障切换
- #关闭主库6380redis-cli -p 6380
- shutdown
检查从库主从信息,此时master_link_status:down

- redis-cli -p 6381
- info replication
- redis-cli -p 6382
- info replication

既然主库挂了,我想要在6381 6382之间选一个新的主库
1.关闭6381的从库身份
- redis-cli -p 6381
- info replication
- slaveof no one
2.将6382设为6381的从库
- 6382连接到6381:
- [root@db03 ~]# redis-cli -p 6382
- 127.0.0.1:6382> SLAVEOF no one
- 127.0.0.1:6382> SLAVEOF 127.0.0.1 6381
3.检查6382,6381的主从信息
linux之 redis 的rdb 转 aof 及主从复的更多相关文章
- Linux - redis持久化RDB与AOF
目录 Linux - redis持久化RDB与AOF RDB持久化 redis持久化之AOF redis不重启,切换RDB备份到AOF备份 确保redis版本在2.2以上 实验环境准备 备份这个rdb ...
- redis的 rdb 和 aof 持久化的区别 [转]
aof,rdb是两种 redis持久化的机制.用于crash后,redis的恢复. rdb的特性如下: Code: fork一个进程,遍历hash table,利用copy on write,把整个d ...
- redis的 rdb 和 aof 持久化的区别
aof,rdb是两种 redis持久化的机制.用于crash后,redis的恢复. rdb的特性如下: Code: fork一个进程,遍历hash table,利用copy on write,把整个d ...
- redis持久化 RDB与AOF
redis持久化 RDB与AOF RDB与AOF区别 rdb: 基于快照的持久化,速度更快,一般用做备份,主从复制也是依赖于rdb持久化功能 aof:以追加的方式记录redis操作日志的文件,可以最大 ...
- Redis之RDB与AOF 笔记
AOF定义:以日志的形式记录每个操作,将Redis执行过的所有指令全部记录下来(读操作不记录),只许追加文件但不可以修改文件,Redis启动时会读取AOF配置文件重构数据 换句话说,就是Redis重启 ...
- Redis之RDB与AOF
AOF定义:以日志的形式记录每个操作,将Redis执行过的所有指令全部记录下来(读操作不记录),只许追加文件但不可以修改文件,Redis启动时会读取AOF配置文件重构数据 换句话说,就是Redis重启 ...
- 配置方案:Redis持久化RDB和AOF
Redis持久化方案 Redis是内存数据库,数据都是存储在内存中,为了避免进程退出导致数据的永久丢失,需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘.当下次Redis重启时,利 ...
- Redis(二)、Redis持久化RDB和AOF
一.Redis两种持久化方式 对Redis而言,其数据是保存在内存中的,一旦机器宕机,内存中的数据会丢失,因此需要将数据异步持久化到硬盘中保存.这样,即使机器宕机,数据能从硬盘中恢复. 常见的数据持久 ...
- Redis持久化 - RDB和AOF
原文:https://segmentfault.com/a/1190000016021217 一.持久化的作用 1. 什么是持久化 持久化(Persistence),即把数据(如内存中的对象)保存到可 ...
随机推荐
- oauth 2.0 授权流程图
1.授权码模式(authorization code) 7 步 后面 拿到授权码以后,就是向 资源服务器请求资源了. 2.简化模式(implicit): 在上面的第4 步的返回中,已经包含了 acc ...
- python时间戳转时间
import time timestamp = 1462451334 #转换成localtime time_local = time.localtime(timestamp) #转换成新的时间格式(2 ...
- Linux Centos配置ssh客户端工具putty
配置ssh客户端工具putty 1.直接点击putty.exe文件 2.配置putty 3.配置putty编码 4.配置putty字体大小 5.配置putty样式 6.保存配置信息 7.配置MTp ...
- 顶级域名和二级域名共享cookie及相互删除cookie
在CSDN看到一个cookie设置domain时,如何删除的问题, 自己也只知道domain设置为顶级域名时可以被其他二级域名共享,但是如何删除还是有一点搞不清楚,所以特意测试了下cookie和dom ...
- inf 启动
How to install an INF file using Delphi If you need to install an "inf" file using Delphi, ...
- Requests+正则表达式爬取猫眼电影
目标 提取出猫眼电影TOP100的电影名称.时间.评分.图片等信息,提取站点的URL为http://maoyan.com/board/4,提取的结果以文本的形式保存下来. 准备工作 请安装好reque ...
- Python高效编程技巧
如何在列表,字典,集合中根据条件筛选数据 1.过滤掉列表[-1,-2,-3,4,5,6]中的负数和0 方法1,for循环 data = [-1, -2, -3, 4, 5, 6] res = [] f ...
- Ubuntu16.04系统重装***
首先准备一个Live CD,就是Ubuntu的安装盘. 备份原理就是将系统文件压缩打包.由于Linux系统所有都是文件,故,只需要将系统打包即可.当然,必须除了当前系统运行中的文件以及临时文件. 打包 ...
- linux du 查看文件及文件夹大小
1.查看当前目录大小: 如在:/home/jzw/share/ du -sh 1.6G . 2.查看当前目录下各个文件夹的大小: 如在:/home/jzw/share/ du -sh * 3.6 ...
- Azure REST API (3) 使用REST API,操作Azure ARM VM
<Windows Azure Platform 系列文章目录> 笔者之前遇到一个客户,需求是当发生某一个特定条件的时候,对多台Azure ARM VM执行开机或者关机操作,这个时候就需要使 ...