摘要:关于redis的一些操作

主从备份

方式一:

Redis 服务器启动后,直接通过客户端执行命令 slaveof 则该 Redis 实例成为从节点。

slaveof 192.168.1.12 6379 当前数据库成为192.168.1.12的备份
slave no one 当前数据库停止接收其他数据库的同步,转成主数据库

redis基本操作(二)1.jpg

方式二:

在从服务器的配置文件中加入: slaveof

slaveof 192.168.1.12 6379

redis基本操作(二)2.jpg

方式三:

redis-server 启动命令后加上 --slaveof

/usr/bin/redis-server --slaveof 192.168.1.12 6379

redis基本操作(二)3.jpg

redis基本操作(二)4.jpg

emm发现报错
不可能是版本的问题,两台服务器上全都是3.0.6版本的,并且前两种方式都可以,发现没有传入配置文件

/usr/bin/redis-server /etc/redis/redis.conf --slaveof 192.168.1.12 6379

redis基本操作(二)5.jpg

数据持久化

数据持久化有两种方式,分别为rdb和aof,反正两种方式各有优缺点,在使用主从备份时抓包貌似主数据库直接将rdb传递给从数据库,不直接传递aof。并且当aof和rdb在同一目录下时默认使用aof。

redis的数据库默认存放在: /var/lib/redis
redis的配置文件默认存放在: /etc/redis/redis.conf

rdb

rdb格式的相当于把数据直接塞进一个文件备份起来。还原备份的时候直接读取文件就行
rdb默认就是开启的。

自动保存

redis.conf 默认配置了以下 3 个保存条件:

save 900 1
save 300 10
save 60 10000

也就是:
复制代码那么只要满足以下 3 个条件中的任意一个,BGSAVE 命令就会被自动执行:

  1. 服务器在 900 秒之内,对数据库进行了至少 1 次修改。
  2. 服务器在 300 秒之内,对数据库进行了至少 10 次修改。
  3. 服务器在 60 秒之内,对数据库进行了至少 10000 次修改。

手动保存

手动保存,在redis-cli中输入save命令就可以。

aof

aof相当于把你执行过的指令塞到一个文件备份起来。还原备份的时候需要读取文件里的指令然后执行。
aof默认时关闭的

开启aof

# 此选项为AOF功能的开关,默认为no,通过yes来开启aof功能
appendonly yes
# 指定AOF文件名称
appendfilename appendonly.aof
# 备份RDB和AOF文件存放路径
dir /usr/local/var/db/redis/
aof和rdb在同一目录下时默认使用aof,如果你原来使用了rdb备份数据库,然后突然修改了redis.conf来使用aof备份数据库,会发现数据库里面没任何内容,然后关闭数据库,发现数据丢失了。
正确的更改方法:
(1)对数据进行cp 备份
(2)动态配置 AOF 启动
127.0.0.1:6379> config get *
127.0.0.1:6379> config set appendonly "yes"
(3)修改 redis.conf 文件,把 appendonly 设置为 yes,启动AOF,以防redis重启

redis基本操作(二)6.jpg

然后再去配置文件/etc/redis/redis.conf中将appendonly no 改为appendonly yes

redis基本操作(二)7.jpg

自动保存

自动保存的频率取决于redis.conf中的appendfsync配置项。

  • appendfsync always:每执行一次命令保存一次
  • appendfsync no:由操作系统决定保存的时间
  • appendfsync everysec:每秒钟保存一次

手动保存

在redis-cli中输入bgrewriteaof命令就可以

关于rdb和aof的选择

rdb备份还原更快,但是遇到突发情况,数据丢失的可能性更大。
aof备份还原的慢,但是遇到突发情况,数据丢失的可能性小。速度和安全二选一。

参考链接

Redis 主从复制详细解读 | 数据库论坛
一文深度揭秘Redis的磁盘持久化机制
黑猴子的家:Redis 如何正确 RDB 转 AOF ?? - 简书