redis持久化和主从同步

redis持久化和主从同步,第1张

概述redis持久化rdb与aof简介Redis是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失。RDB持久化redis 提供了 RDB持久化 的功能,这个功能可以将 redis 在内存中的状态保存到硬盘中,它将手动执行。也可以在 redis.conf 中配置,定期执行。RDB持久化产生的RDB文件是一个经过压缩的二进制文件,这个文件被保存在硬盘中,redis可以通过这个文件还原数据库当时的状态。实例:1,启动redis服务端,修改配置文件redis.conf(修改前先备份)daemonize yesport 6379logfile /data/6379/redis.logdir /data/6379 #定义持久化文件存储位置dbfilename dbmp.rdb #rdb持久化文件bind 10.0.0.10 127.0.0.1 #redis绑定地址requirepass 123 #redis登录密码save 900 1 #rdb机制 每900秒 有1个修改记录save 300 10 #每300秒 10个修改记录save 60 10000 #每60秒内 10000修改记录2.启动redis服务端3.登录redisredis-cli -a 1234.此时检查目录,/data/6379底下还没有dbmp.rdb文件5.通过save触发持久化,将数据写入RDB文件127.0.0.1:6379> set age 18OK127.0.0.1:6379> saveOK6.此时再查看,发现多了两个文件AOF持久化AOF(append-only log file) 记录服务器执行的所有变更 *** 作命令(例如set del等),并在服务器启动时,通过重新执行这些命令来还原数据集 AOF 文件中的命令全部以redis协议的格式保存,新命令追加到文件末尾。 优点:最大程序保证数据不丢 缺点:日志记录非常大redis-client 写入数据 > redis-server 同步命令 > AOF文件配置参数介绍:# AOF持久化配置,两条参数appendonly yesappendfsync always # 总是修改类的 *** 作everysec # 每秒做一次持久化no # 依赖于系统自带的缓存大小机制实例:1.修改配置文件 redis.conf(先备份)daemonize yesport 6379logfile /data/6379/redis.logdir /data/6379dbfilename dbmp.rdbrequirepass 123save 900 1save 300 10save 60 10000appendonly yesappendfsync everysec2.启动redis服务redis-server /etc/redis.conf3.检查redis数据目录/data/6379/是否产生了aof文件[root@localhost 6379]# lsappendonly.aof dbmp.rdb redis.log4.登录redis-cli,写入数据,实时检查aof文件信息[root@localhost 6379]# tail -f appendonly.aof5.设置新key,检查aof信息,然后关闭redis,检查数据是否持久化redis-cli -a 123 shutdownredis-server /etc/redis.confredis-cli -a 123区别:rdb:基于快照的持久化,速度更快,一般用作备份,主从复制也是依赖于rdb持久化功能aof:以追加的方式记录redis *** 作日志的文件。可以最大程度的保证redis数据安全,类似于mysql的binlog redis主从同步原理从服务器向主服务器发送 SYNC 命令。接到 SYNC 命令的主服务器会调用BGSAVE 命令,创建一个 RDB 文件,并使用缓冲区记录接下来执行的所有写命令。当主服务器执行完 BGSAVE 命令时,它会向从服务器发送 RDB 文件,而从服务器则会接收并载入这个文件。主服务器将缓冲区储存的所有写命令发送给从服务器执行。=====================================================在开启主从复制的时候,使用的是RDB方式的,同步主从数据的同步开始之后,通过主库命令传播的方式,主动的复制方式实现2.8以后实现PSYNC的机制,实现断线重连实例环境准备1,创建三个文件夹mkdir /data/ 6380 6381 63822,复制三份 nginx.conf 并修改内容port 6380daemonize yespidfile /data/6380/redis.pidloglevel noticelogfile "/data/6380/redis.log"dbfilename dump.rdbdir /data/6380protected-mode no6380.confport 6381daemonize yespidfile /data/6381/redis.pidloglevel noticelogfile "/data/6381/redis.log"dbfilename dump.rdbdir /data/6381protected-mode no6381.confdaemonize yespidfile /data/6382/redis.pidloglevel noticelogfile "/data/6382/redis.log"dbfilename dump.rdbdir /data/6382protected-mode no6382.conf3,分别启动三个实例redis-server /data/6380/redis.confredis-server /data/6381/redis.confredis-server /data/6382/redis.conf主从规则:主节点: 6380从节点: 6381, 63824,配置主从同步# 6381窗口界面命令行redis-cli -p 6381 # 启动6381客户端SLAVEOF 127.0.0.1 6380 #指明主的地址# 6382窗口界面命令行redis-cli -p 6382 # 启动6382客户端SLAVEOF 127.0.0.1 6380 #指明主的地址5,检测主从状态#从库127.0.0.1:6382> info replication127.0.0.1:6381> info replication# 主库127.0.0.1:6380> info replication6,测试写入数据,主库写入数据,检测从库数据# 主:127.0.0.1:6380> set name peng# 从:127.0.0.1:6381>get name如果主库挂了!解决方案:1,手动进行主从复制故障切换# 关闭主库6380redis-cli -p 6380shutdown2,检查从库主从信息,此时 master_link_status:downredis-cli -p 6381info replicationredis-cli -p 6382info replication3,既然主库挂,那就在6380和6382之间选一个新的主库a,关闭6381的从库身份redis-cli -p 6381info replicationslaveof no oneb,将6382设为6381的从库# 6382连接到6381:[root@localhost ~]# redis-cli -p 6382127.0.0.1:6382> SLAVEOF no one127.0.0.1:6382> SLAVEOF 127.0.0.1 6381c,检查6382,6381的主从信息  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 >redis.conf

redis-cli -a 123

区别:

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

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

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

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

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

环境准备

1,创建三个文件夹

mkdir /data/ 6380 6381 6382

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

port 6380/data/6380//data/6380-mode noport 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 >#<span > 6382窗口界面命令行
redis-cli -p 6382 <span >#<span > 启动6382客户端
SLAVEOF 127.0.0.1 6380 <span >#<span >指明主的地址

5,检测主从状态

127.0.0.1:6382>127.0.0.1:6381><span >#<span > 主库
127.0.0.1:6380> info replication

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

127.0.0.1:6380><span >#<span > 从:
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 >
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的主从信息

总结

以上是内存溢出为你收集整理的redis持久化和主从同步全部内容,希望文章能够帮你解决redis持久化和主从同步所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1169225.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存