加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

redis持久化和主从同步

发布时间:2020-12-11 23:57:09 所属栏目:MySql教程 来源:网络整理
导读:redis持久化rdb与aof 简介 是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题, Redis 提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失。 RDB持久化 redis 提供了 RDB持久化 的功能,这个功能可以将 re

redis持久化rdb与aof

简介

是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失。

RDB持久化

redis 提供了 RDB持久化 的功能,这个功能可以将 redis 在内存中的状态保存到硬盘中,它将手动执行。

也可以在 redis.conf 中配置,定期执行。

RDB持久化产生的RDB文件是一个经过压缩的二进制文件,这个文件被保存在硬盘中,redis可以通过这个文件还原数据库当时的状态。

实例:

1,启动redis服务端,修改配置文件redis.conf(修改前先备份)

6379/data/6379//data/6379 dbfilename dbmp.rdb bind 10.0.0.10 127.0.0.1 requirepass 123 save 900 1 save 300 10 save 60 10000

2.启动redis服务端

3.登录redis

redis-cli -a 123

4.此时检查目录,/data/6379底下还没有dbmp.rdb文件

5.通过save触发持久化,将数据写入RDB文件

127.0.0.1:6379> set age 18127.0.0.1:6379>

6.此时再查看,发现多了两个文件

AOF持久化

AOF(append-only log file) 记录服务器执行的所有变更操作命令(例如set del等),并在服务器启动时,通过重新执行这些命令来还原数据集 AOF 文件中的命令全部以redis协议的格式保存,新命令追加到文件末尾。 优点:最大程序保证数据不丢 缺点:日志记录非常大

redis-client 写入数据 > redis-server 同步命令 > AOF文件

配置参数介绍:

everysec no

实例:

1.修改配置文件 redis.conf(先备份)

6379/data/6379//data/6379123900 1300 1060 10000

2.启动redis服务

redis-server /etc/redis.conf

3.检查redis数据目录/data/6379/是否产生了aof文件

[root@localhost 6379] appendonly.aof dbmp.rdb redis.log

4.登录redis-cli,写入数据,实时检查aof文件信息

[root@localhost 6379]

5.设置新key,检查aof信息,然后关闭redis,检查数据是否持久化

redis-cli -a 123redis-server /etc/<span style="color: #000000;">redis.conf

redis-cli -a 123

区别:

  rdb:基于快照的持久化,速度更快,一般用作备份,主从复制也是依赖于rdb持久化功能

  aof:以追加的方式记录redis操作日志的文件。可以最大程度的保证redis数据安全,类似于mysql的binlog

redis主从同步

原理

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

=====================================================

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

实例

环境准备

1,创建三个文件夹

mkdir /data/ 6380 6381 6382

2,复制三份 nginx.conf 并修改内容

port 6380/data/6380//data/6380-mode no port 6381/data/6381//data/6381-mode no /data/6382//data/6382-mode no

3,分别启动三个实例

redis-server /data/6380/-server /data/6381/-server /data/6382/redis.conf

主从规则:

  主节点: 6380

  从节点: 6381, 6382

4,配置主从同步

redis-cli -p 6381 SLAVEOF 127.0.0.1 6380

<span style="color: #008000;">#<span style="color: #008000;"> 6382窗口界面命令行
redis-cli -p 6382 <span style="color: #008000;">#<span style="color: #008000;"> 启动6382客户端
SLAVEOF 127.0.0.1 6380 <span style="color: #008000;">#<span style="color: #008000;">指明主的地址

5,检测主从状态

127.0.0.1:6382>127.0.0.1:6381><span style="color: #008000;">#<span style="color: #008000;"> 主库
127.0.0.1:6380> info replication

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

127.0.0.1:6380><span style="color: #008000;">#<span style="color: #008000;"> 从:
127.0.0.1:6381>get name

如果主库挂了!

解决方案:

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

redis-cli -p 6380

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

redis-cli -p 6381redis-cli -p 6382<span style="color: #000000;">
info replication

3,既然主库挂,那就在6380和6382之间选一个新的主库

a,关闭6381的从库身份

redis-cli -p 6381

b,将6382设为6381的从库

[root@localhost ~] 127.0.0.1:6382>127.0.0.1:6382> SLAVEOF 127.0.0.1 6381

c,检查6382,6381的主从信息

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读