存储快照

Redis提供的持久化机制(RDB和AOF)

一世执手 提交于 2020-02-14 17:39:00
Redis提供的持久化机制     Redis是一种面向“key-value”类型数据的分布式NoSQL数据库系统,具有高性能、持久存储、适应高并发应用场景等优势。它虽然起步较晚,但发展却十分迅速。 近日,Redis的作者在博客中写到, 他看到的所有针对Redis的讨论中,对Redis持久化的误解是最大的 ,于是他写了一篇长文来对Redis的持久化进行了系统性的论述。 文章主要包含三个方面: Redis持久化是如何工作的、这一性能是否可靠以及和其它类型的数据库比较 。以下为文章内容: 一、Redis持久化是如何工作的?   什么是持久化?简单来讲就是将数据放到断电后数据不会丢失的设备中,也就是我们通常理解的硬盘上。 首先我们来看一下数据库在进行写操作时到底做了哪些事,主要有下面五个过程 : 客户端向服务端发送写操作(数据在客户端的内存中)。 数据库服务端接收到写请求的数据(数据在服务端的内存中)。 服务端调用write这个系统调用,将数据往磁盘上写(数据在系统内存的缓冲区中)。 操作系统将缓冲区中的数据转移到磁盘控制器上(数据在磁盘缓存中)。 磁盘控制器将数据写到磁盘的物理介质中(数据真正落到磁盘上)。 故障分析 写操作大致有上面5个流程, 下面我们结合上面的5个流程看一下各种级别的故障 : 当数据库系统故障时,这时候系统内核还是完好的。那么此时只要我们执行完了第3步

学会这15点,让你分分钟拿下Redis数据库

元气小坏坏 提交于 2020-02-14 06:00:59
1、Redis简介 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。 大家都知道了redis是基于key-value的no sql数据库,因此,先来了解一下关于key相关的知识点 1、任何二进制的序列都可以作为key使用 2、Redis有统一的规则来设计key 3、对key-value允许的最大长度是512MB 2、支持的语言: ActionScript Bash C C# C++ Clojure Common Lisp Crystal D Dart Elixir emacs lisp Erlang Fancy gawk GNU Prolog Go Haskell Haxe Io Java Javascript Julia Lua Matlab mruby Nim Node.js Objective-C OCaml Pascal Perl PHP Pure

RESTORE 还原数据库

空扰寡人 提交于 2020-02-13 23:03:06
RESTORE (Transact-SQL) SQL Server 2008 R2 其他版本 还原使用 BACKUP 命令所做的备份。通过此命令,您可以执行下列还原方案: 基于完整数据库备份还原整个数据库(完整还原)。 还原数据库的一部分(部分还原)。 将特定文件或文件组还原到数据库(文件还原)。 将特定页面还原到数据库(页面还原)。 将事务日志还原到数据库(事务日志还原)。 将数据库恢复到数据库快照捕获的时间点。 有关 SQL Server 还原方案的详细信息,请参阅还原与恢复概述 (SQL Server) 和实现 SQL Server 数据库还原方案。 注意 有关参数说明的详细信息,请参阅 RESTORE 参数 (Transact-SQL)。 Transact-SQL 语法约定 语法 --To Restore an Entire Database from a Full database backup (a Complete Restore): RESTORE DATABASE { database_name | @database_name_var } [ FROM <backup_device> [ ,...n ] ] [ WITH { [ RECOVERY | NORECOVERY | STANDBY = {standby_file_name | @standby

Redis 持久化

限于喜欢 提交于 2020-02-13 00:30:13
Redis的强劲性能很大程度上是由于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据不丢失,例如: (1) 将Redis作为数据库使用(存储历史数据)。 (2) 将Redis作为缓存服务器使用,如果缓存被穿透后会对性能造成很大影响,所有缓存同时失效会导致缓存雪崩,从而使服务器无法响应。 这时,我们希望Redis能将数据从内存中以某种方式同步到硬盘中,当服务器重启后可以根据硬盘中的记录恢复数据,这一过程就是持久化。 写操作的流程 首先我们来看一下数据库在进行写操作时到底做了哪些事,主要有下面五个过程。 1.客户端向服务端发送写操作(数据在客户端的内存中) 2.数据库服务端接收到写请求的数据(数据在服务端的内存中) 3.服务端调用write(2) 这个系统调用,将数据往磁盘上写(数据在系统内存的缓冲区中) 4.操作系统将缓冲区中的数据转移到磁盘控制器上(数据在磁盘缓存中) 5.磁盘控制器将数据写到磁盘的物理介质中(数据真正落到磁盘上) 写操作大致有上面5个流程,下面我们结合上面的5个流程看一下各种级别的故障。 •当数据库系统故障时,这时候系统内核还是OK的,那么此时只要我们执行完了第3步,那么数据就是安全的,因为后续操作系统会来完成后面几步,保证数据最终会落到磁盘上。 •当系统断电,这时候上面5项中提到的所有缓存都会失效,并且数据库和操作系统都会停止工作

六、RDB 持久化

妖精的绣舞 提交于 2020-02-12 21:11:53
Redis 相对于 Memcache 等其他的缓存产品,有一个比较明显的优势就是 Redis 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。这几种丰富的数据类型我们花了两篇文章进行了详细的介绍,接下来我们要介绍 Redis 的另外一大优势——持久化。   由于 Redis 是一个内存数据库,所谓内存数据库,就是将数据库中的内容保存在内存中,这与传统的MySQL,Oracle等关系型数据库直接将内容保存到硬盘中相比,内存数据库的读写效率比传统数据库要快的多(内存的读写效率远远大于硬盘的读写效率)。但是保存在内存中也随之带来了一个缺点,一旦断电或者宕机,那么内存数据库中的数据将会全部丢失。   为了解决这个缺点,Redis提供了将内存数据持久化到硬盘,以及用持久化文件来恢复数据库数据的功能。Redis 支持两种形式的持久化,一种是RDB快照(snapshotting),另外一种是AOF(append-only-file)。本篇博客先对 RDB 快照进行介绍。 回到顶部 1、RDB 简介   RDB是Redis用来进行持久化的一种方式,是把当前内存中的数据集快照写入磁盘,也就是 Snapshot 快照(数据库中所有键值对数据)。恢复时是将快照文件直接读到内存里。 回到顶部 2、触发方式   RDB 有两种触发方式

事务

爱⌒轻易说出口 提交于 2020-02-10 20:49:44
select * from 表名 where 条件 id > 10 insert into 表名 values() update 表名 set name = ‘’ where id = 1 delete 表名 where 事务 事务的四大特性(ACID): 原子性(atomicity) 事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位. 一致性(consistency) 一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。 例:拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。 隔离性(Isolation) 隔离性是当多个用户并发访问数据库时,比如同时操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。关于事务的隔离性数据库提供了多种隔离级别 脏读 不可重复读 幻读 1.脏读(Phantom Read): 脏读就是指当一个事务正在访问数据,并且对数据进行了修改

Ceph 块存储客户端配置(二)

帅比萌擦擦* 提交于 2020-02-10 17:29:43
一、Ceph RDB介绍 Ceph块设备,以前称为RADOS设备,为客户机提供可靠的、分布式的和高性能的块存储磁盘。RADOS块设备利用librbd库,并以顺序的形式在Ceph集群中的多个osd上存储数据块。RBD是由Ceph的RADOS层支持的,因此每个块设备都分布在多个Ceph节点上,提供了高性能和优异的可靠性。RDB有Linux内核的本地支持,这意味着RBD驱动程序从过去几年就与Linux内核集成得很好。除了可靠性和性能之外,RDB还提供了企业特性,例如:完整和增量快照、瘦配置、写时复制克隆、动态调整大小等等。RDB还支持内存缓存,这大大提高了其性能。任何普通的Linux主机(RHEL或基于debian的)都可以充当Ceph客户机。客户端通过网络与Ceph存储集群交互以存储或检索用户数据。Ceph RBD支持已经添加到Linux主线内核中,从2.6.34和以后的版本开始。 二、客户端安装Ceph软件包 2.1 检查内核是否支持RBD [root@192-168-5-70 ~]# uname -r 3.10.0-957.el7.x86_64 [root@192-168-5-70 ~]# modprobe rbd [root@192-168-5-70 ~]# echo $? 0 2.2 安装ceph软件 # 配置yum源 [root@192-168-5-70 ~]# vim

Redis持久化

柔情痞子 提交于 2020-02-09 13:07:59
redis提供两种不同的持久化方法来将数据存储到硬盘里面 1)一种方法叫快照,它可以将存储在于某一时刻的所有数据都写入到硬盘里面 根据配置,快照将被写入dbfilename选项指定的文件里面,并存储在dir选项指定的路径上面,如果在新的快照文件创建完毕之前,redis、系统或者硬件这三者之中的任意一个崩溃了,那么redis将丢失最近一次创建快照之后写入的所有数据。 创建快照逻辑: 假设redis目前在内存里面存储了10GB的数据,上一个快照是在下午2:35开始创建的,并且已经创建成功。下午3:06时,Redis又开始创建新的快照,并且在下午3:08快照文件创建完毕之前,有35个键进行了更新,如果在下午3:06至下午3:08期间,系统发生崩溃,导致Redis无法完成新快照的创建工作,那么Redis将丢失下午2:35之后写入的所有数据。另一方面,如果系统恰好在新的快照文件创建完毕之后崩溃,那么Redis将只丢失35个键的更新。 创建快照的方法: 1、客户端可以通过向Redis发送BGSAVE命令来创建一个快照,对于支持BGSAVE命令来的平台来说,Redis会调用fork来创建一个子进程,然后子进程负责将快照写入硬盘,而父进程则继续处理命令请求 2、客户端还可以通过向Redis发送SAVE命令创建一个快照,接到SAVE命令的Redis服务器在快照创建完成之前将不再响应任何其他命令

redis的持久化和缓存机制

二次信任 提交于 2020-02-03 07:02:05
摘自 https://blog.csdn.net/tr1912/article/details/70197085?foxhandler=RssReadRenderProcessHandler 一、redis的适用环境 首先作为一个nosql的key—value组成的数据库,它们能存储的数据结构必须是简单的,因为有关系的数据即使存储进去之后查询也是很困难的,并且对于海量的数据存储还是关系型数据库比较合适。 举一个把一般数据库数据存储到key-value中的例子: student 学号 姓名 年龄 班级 001 小明 18 2 key value student:001:姓名 小明 student:001:年龄 18 student:001:班级 2 遵从规则为 key 表名:主键值:列名 value 列值 如果加上表关系的话还要复杂好几倍的。 那么什么样的数据适合存储在非关系型数据库中的呢? 1、关系不是很密切的的数据,比如用户信息,班级信息,评论数量等等。 2、量比较大的数据,如访问记录等 3、访问比较频繁的数据,如用户信息,访问数量,最新微博等 二、持久化 那么这么多,这么重要的数据都存储在内存中,如果突然断电,岂不是很糟糕,于是就有了数据的持久化机制,这个其实就是把内存中的数据存储到硬盘中,方便数据的持续存在,也可以减少断电造成的损失。 那么我们怎么持久化数据呢

Flink的CheckPoint

你离开我真会死。 提交于 2020-02-02 09:52:50
Checkpoint Flink容错机制的核心就是持续创建分布式数据流及其状态的一致快照。Flink的checkpoint是通过分布式快照实现的, 所以在flink中这两个词是一个意思。 checkpoint用来保证任务的错误恢复。任务失败可以从最新的checkpoint恢复。 checkpoint机制需要一个可靠的可以回放数据的数据源(kafka,RabbitMQ,HDFS...)和一个存放state的持久存储(hdfs,S3) 1、checkpointConfig 通过调用StreamExecutionEnvironment.enableCheckpointing(internal,mode) 启用checkpoint 。 internal 默认是 -1,表示checkpoint不开启,mode默认是EXACTLY_ONCE模式。 可设置checkpoint timeout,超过这个时间 checkpoint 没有成功,checkpoint 终止。默认 10分钟。 可设置 chekpoint 失败任务是否任务也失败,默认是true 可设置同时进行的checkpoint数量,默认是1. 2、barrier 将barrier插入到数据流中,作为数据流的一部分和数据一起向下流动。Barrier不会干扰正常数据,数据流严格有序。 一个barrier把数据流分割成两部分