存储快照

Redis数据库持久化

我的未来我决定 提交于 2019-11-29 02:38:56
Redis数据库持久化 一、数据库概述; 二、持久化的作用以及实现方式; 三、RDB持久化方式配置; 四、AOF持久化方式配置; 一、数据库概述: Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务器。 二、持久化的作用以及实现方式: 作用: Redis的所有数据都是保存在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。那么不定期的通过异步方式保存到磁盘上(半持久化模式);也可以把每一次数据变化都写入到一个append only file里面(全持久化模式)。 如若在服务器中开启了两种持久化的方式,默认执行AOF持久化方式; 实现方式: RDB持久化:将Reids在内存中的数据库记录定时dump到磁盘上,类似于快照功能。 AOF持久化:append only file--原理是将Reids的操作日志以追加的方式写入文件,近似实时性。 二者的区别: RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程

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

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

redis 实战操作RDB和AOF快照持久化

故事扮演 提交于 2019-11-29 02:09:50
前言:redis是我们常用的缓存方式,今天就来介绍下两种持久化的方式吧,先科普概念,再实战操作 一、RDB Redis将某一时刻的快照(备份的数据库数据)保存成一种称为RDB格式的文件中,这种格式是经过压缩的二进制文件。redis保存和恢复文件,如图1和图2所示。 保存RDB数据的命令:有两种,一个是save,一个是bgsave,一般用的都是bgsave命令。 1、save命令:save命令会阻塞redis服务器的进程,直到RDB文件创建完,在该期间,redis不能处理任何的命令请求,这就是save命令最大的缺陷。 2、bgsave命令:与save命令不同的是,bgsave在生成RDB文件时,会派生出一个子进程,子进程负责创建RDB文件,在此期间,主进程和子进程是同时存在的,因此不会阻塞redis服务器进程。 说明:(可用lastsave命令查看生成RDB文件是否成功) RDB快照持久化数据的优缺点:     1、优点:       (1)、采用子线程创建RDB文件,不会对redis服务器性能造成大的影响;       (2)、快照生成的RDB文件是一种压缩的二进制文件,可以方便的在网络中传输和保存。通过RDB文件,可以方便的将redis数据恢复到某一历史时刻,可以提高数据安全性,避免宕机等意外对数据的影响。      (3)、适合大规模的数据恢复。      (4)

redis的持久化

﹥>﹥吖頭↗ 提交于 2019-11-29 02:09:22
redis的持久化 RDB: 是什么: 在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里 Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到 一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。 整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能 如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方 式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失。 fork的作用是复制一个与当前进程一样的进程。新进程的所有数据(变量、环境变量、程序计数器等) 数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程 RDB是整个内存的压缩过的Snapshot,RDB的数据结构,可以配置复合的快照触发条件, 默认Save the DB on disk: save <seconds> <changes> save 900 1 或15分钟内改了1次。 save 300 10 或5分钟内改了10次, save 60 10000 是1分钟内改了1万次, 如果想禁用RDB持久化的策略,只要不设置任何save指令,或者给save传入一个空字符串参数也可以 stop-writes-on-bgsave-error 默认为yes

存储快照实现原理

你离开我真会死。 提交于 2019-11-28 21:36:20
存储快照实现原理 https://www.cnblogs.com/tcicy/p/8444306.html 存储快照有两种实现方式:COW(写时复制 Copy-On-Write )、ROW(写重定向 Redirect-On-Write ),两种实现方法有区别,造成读写性能、应用场景有比较大的区别。 COW: 原理见下图(从网上找的,没自己画)。 1)原卷数据是A~G。此卷Metedata像指针一样指向这些数据。 2)当做快照时,重新复制一份Metedata,并且也指向这些A~G数据。 3)当有数据要写入到源卷时(下图写入D'),写入到D的原位置之前,需要把D拷贝出放到一个新位置。然后修改快照的Metedata的其中一个指针指向拷贝出的位置[D](图中是Snapshot data的存储位置)。同时,把D’写入到D原来的位置。 此方式可以看出,源卷的Metedata的是没有变化的。对原卷是连续的数据,多次快照,多次写之后还是 连续的数据 ,因此读性能或者对单个位置的多次写性能都不会有很大的影响。 但是, 快照的数据是非连续的 ,如数据ABCEFG还是在源卷的位置,是连续数据。而数据D在存储的其他位置,非连续。 如果多次快照,不同位置的多次读写后,快照的数据可能就比较混乱。造成对快照的读写延时较大。 应用场景: 这种实现方式在第一次写入某个存储位置时需要完成一个读操作(读原位置的数据)

(6)ceph RBD 复制

三世轮回 提交于 2019-11-28 20:31:54
Ceph 存储集群可以从RBD的快照中创建写时复制 (COW 副本),这就是 Ceph 的快照分层。 Ceph 的这个分层特性允许客户端创建 Ceph RBD 的多个即时副本, 这个特性对云平台和虚拟化平台非常有 ,例如 OpenStack 、CloudStack 和Qemu/ KVM 这些平台通常'以快照的形式保护含有 OS/VM 镜像的Ceph RBD 镜像 ,然后通过不断复制这个快照来创建新的虚拟机 /实例 ,快照是只读的,但是 COW 副本则是完全可写的; Ceph 的这个特性为云平台带来巨大的灵活性,并且对于云平台非常有用,下图显示了 RADOS 块设备、 RBD 快照和COW 快照副本之间的关系。 每一个复制的镜像(子镜像)都包含它的父快照的引用,用于读取镜像数据。 因此,父快照在用于复 制之前应该处于被保护状态。当有数据写入COW 复制的镜像时,它会为自己存储新的数据引用。 COW 复制的镜像与 RBD是一 样的。 它们都非常灵活,类似于 RBD ,也就是说,它们可写, 可调整容量,可以创建新的快照,将来还可以复制。 RBD 镜像的类型定义了它所支持的特性,在Ceph 中,有两种 类型的RBD 镜像:format-l和 form t-2, format-l和 format-2 类型的 RBD 镜像 都支持快 照特性。然而,分层特性( 也就是 COW 特性)只有

HBase 系列(九)——HBase 容灾与备份

ε祈祈猫儿з 提交于 2019-11-28 17:27:09
一、前言 本文主要介绍 Hbase 常用的三种简单的容灾备份方案,即 CopyTable 、 Export / Import 、 Snapshot 。分别介绍如下: 二、CopyTable 2.1 简介 CopyTable 可以将现有表的数据复制到新表中,具有以下特点: 支持时间区间 、row 区间 、改变表名称 、改变列族名称 、以及是否 Copy 已被删除的数据等功能; 执行命令前,需先创建与原表结构相同的新表; CopyTable 的操作是基于 HBase Client API 进行的,即采用 scan 进行查询, 采用 put 进行写入。 2.2 命令格式 Usage: CopyTable [general options] [--starttime=X] [--endtime=Y] [--new.name=NEW] [--peer.adr=ADR] <tablename> 2.3 常用命令 同集群下 CopyTable hbase org.apache.hadoop.hbase.mapreduce.CopyTable --new.name=tableCopy tableOrig 不同集群下 CopyTable # 两表名称相同的情况 hbase org.apache.hadoop.hbase.mapreduce.CopyTable \ --peer.adr

Redis持久化——RDB(Redis DataBase)

浪尽此生 提交于 2019-11-28 10:07:05
一、是什么? 在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的快照(Snapshot),它恢复时是将快照文件直接读到内存里。 Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。 整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能。 优势 适合进行大规模数据的恢复,且对数据恢复的完整性和一致性要求不高,那么RDB方式要比AOF方式更加的高效。 劣势 在一定间隔时间做一次备份,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改。 fork的时候,内存中的数据被克隆了一份,大致2倍的膨胀性需要考虑 二、Fork定义 fork的作用是复制一个与当前进程一样的进程。新进程的所有数据( 变量、环境变量、程序计数器等 )数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程。 三、RDB触发配置 自动触发(配置文件中的默认配置): RDB持久化是以dump.rdb文件的形式保存在磁盘中的。这是整个内存经过压缩的快照(Snapshot)文件。可以配置复合的快照触发条件: save 900 1 # 或15分钟内改了1次。 save 300 10 # 或5分钟内改了10次, save 60 10000 # 是1分钟内改了1万次, 手动触发(执行命令

openstack-KVM管理工具【转载】

白昼怎懂夜的黑 提交于 2019-11-28 05:28:27
一、 virsh   通过libvirt API管理Hpervisor、node、domain,实现多数功能调用。   即统一管理多台计算机上的域。 1、管理其他服务器(node)   (1)修改配置文件:vim /etc/libvirt/libvirt.conf uri_aliases = [ "work=qemu+ssh://root@172.16.2.1/system", ]   (2)管理其他服务器上的域:virsh connect work   (3)如果不修该配置文件:virsh -c qemu+ssh://root@172.16.2.1/system 2、virsh可连接的命令   (1)格式:virsh 参数 virsh uri 连接的路径qemu:///system virsh list 显示正在运行的虚拟机 virsh list --all 显示所有虚拟机 virsh nodeinfo 显示当前节点信息 virsh hostname 显示当前节点主机名 virsh version 显示当前libvirt版本 virsh iface-list 显示虚拟网络接口信息 virsh iface-mac br0 显示对应网卡物理地址 virsh net-info default 显示默认网络信息 virsh net-uuid default 显示默认网络的UUID   

VMware虚拟化kvm安装部署总结

让人想犯罪 __ 提交于 2019-11-28 02:55:07
虚拟化 1、环境 Centos7.3 关闭selinux,关闭防火墙 2、虚拟化环境配置 2.1 kvm部署安装 1、 VMware 配置桥接模式 2、bios开启虚拟机,以本地台式机为例, 重启动电脑,一直按Del键,进入BIOS设置。详情参考https://jingyan.baidu.com/article/4e5b3e190066c091901e2482.html 查看是否支持虚拟机 #egrep '(vmx|svm)' --color=always /proc/cpuinfo 3、配置epel yum源 4、安装kvm软件包 yum install qemu-kvm qemu-kvm-tools libvirt virt-manager virt-install openssh-askpass –y //qeum 虚拟化软件,可以虚拟不同的CPU,以及模拟网卡、声卡、PCI设备等 //libvirt 用于管理KVM的工具 //virt-install 命令行安装虚拟机工具 //virt-manager 图形化管理虚拟机工具 //openssh-askpass 远程连接KVM主机 5、启动libvirt管理KVM工具 # systemctl enable libvirtd.service # systemctl start libvirtd.service