快照技术

HBase中的备份和故障恢复方法

不打扰是莪最后的温柔 提交于 2020-04-06 12:43:19
本文将对Apache HBase可用的数据备份机制和大量数据的故障恢复/容灾机制做简要介绍。 随着HBase在重要的商业系统中应用的大量添加,很多企业须要通过对它们的HBase集群建立健壮的备份和故障恢复(backup and disaster recovery, BDR)机制来保证它们的企业(数据)资产。 HBase和Apache Hadoop系统提供了很多内置的机制,能够高速而轻松的完毕PB级数据的备份和恢复工作。 在这篇文章中,你将会对在HBase中可用的数据备份机制有一个高层次的简要了解,而且知道多种数据恢复/容灾机制。在阅读了这篇文章之后,你应该能对你的业务须要那种BDR策略有了自己的推断。 你也应该明确各种机制各自的优缺点(适用于CDH 4.3.0/HBase 0.94.6及更高版本号)。 备份 HBase是一个基于LSM树(log-structured merge-tree)的分布式数据存储系统,它使用复杂的内部机制确保数据准确性、一致性、多版本号等。因此。你怎样获取数十个region server在HDFS和内存中的存储的众多HFile文件、WALs(Write-Ahead-Logs)的一致的数据备份? 让我们从最小的破坏性,最小的数据占用空间,最小的性能要求机制和工作方式到最具破坏性的逐一讲述: Snapshots Replication Export

总结Docker的存储和网络相关

亡梦爱人 提交于 2020-04-05 23:02:03
一、Docker概述 LXC所实现的隔离性主要是来自kernel的namespace, 其中pid, net, ipc, mnt, uts 等namespace将container的进程, 网络, 消息, 文件系统和hostname 隔离开。 cgroups 实现了对资源的配额和度量。 cgroups 的使用非常简单,提供类似文件的接口,在 /cgroup目录下新建一个文件夹即可新建一个group,在此文件夹中新建task文件,并将pid写入该文件,即可实现对该进程的资源控制。 二、网络 (1)网络模型 bridge:网桥网络 当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。 host:主机网络 如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。 none:禁用容器网络 container:容器网络 这个模式指定新创建的容器和已经存在的一个容器共享一个 Network

通过Portworx在AWS上运行高可用SQL Server容器

|▌冷眼眸甩不掉的悲伤 提交于 2020-04-05 15:45:01
通过Portworx云原生存储,在Amazon EKS里运行高可用SQL Server容器 在本文我们将分析,如何使用Amazon Elastic Container Service for Kubernetes (Amazon EKS, https://amazonaws-china.com/eks/),来在容器中部署Microsoft SQL Server。文中讨论的方式和与原理,也适用于其他需要高可用和持久性、并符合可复用的DevOps方式的有状态应用。例如运行MongoDB、Apache Cassandra、MySQL、或者大数据处理等。 首先能够被支持在容器中运行的是SQL Server 2017版本。我们可以在Linux容器中,使用Kubernetes (https://amazonaws-china.com/kubernetes/)来运行SQL Server生产负载。 Microsoft SQL Server是被广泛使用的数据库。SQL Server提供一系列很不错的功能,也有很不错的开发者社区。但是它需要比较多的运维,也比开源的或者云端的数据库成本要更高。很多为了降低成本的用户会转向开源方案来降低软件授权的成本。另一些用户会迁移工作负载到关系数据库管理系统(RDBMS)服务里,比如Amazon RDS for Microsoft SQL Server或者Amazon

当前读和快照读

半城伤御伤魂 提交于 2020-03-18 18:07:17
好的学习链接: http://blog.csdn.net/taylor_tao/article/details/7063639 innodb的默认事务隔离级别是rr(可重复读)。它的实现技术是mvcc。基于版本的控制协议。该技术不仅可以保证innodb的可重复读,而且可以防止幻读。但是它防止的是快照读,也就是读取的数据虽然是一致的,但是数据是历史数据。如何做到保证数据是一致的(也就是一个事务,其内部读取对应某一个数据的时候,数据都是一样的),同时读取的数据是最新的数据。innodb提供了一个间隙锁的技术。也就是结合grap锁与行锁,达到最终目的。当使用索引进行插入的时候,innodb会将当前的节点和上一个节点加锁。这样当进行select的时候,就不允许加x锁。那么在进行该事务的时候,读取的就是最新的数据。 实现: 1. 快照读(snapshot read) 简单的select操作(不包括 select ... lock in share mode, select ... for update) 2.当前读(current read) select ... lock in share mode select ... for update insert update delete 在RR级别下,快照读是通过MVVC(多版本控制)和undo log来实现的,当前读是通过加record

京东 App适配 iOS 暗黑模式业务实践

早过忘川 提交于 2020-03-18 00:46:25
某厂面试归来,发现自己落伍了!>>> 以下文章来源于京东零售技术,作者平台研发姚琦 什么是暗黑模式? iOS 13 苹果推出了暗黑模式,暗黑模式在夜间可以更好的保护视力,也可以节省 App 电量消耗。但是 Apple 提供的暗黑模式只支持 iOS 13,为了给用户带来更好的体验,我们希望 iOS 13 以下的系统也可以支持暗黑模式。另外我们还给用户提供了自主选择的权利,可以在 App 内手动关闭暗黑模式,不跟随系统主题变化。京东 App 涉及业务模块众多,整个适配工作量巨大,为了解决上述问题,并让各模块通过统一的接口快速接入,我们开发了暗黑基础组件,提供以下能力: 支持 iOS 9 及以上系统,同时兼容 iOS 13 系统暗黑模式 支持整体切量、降级 支持跟随系统模式,也可以选择不跟随,使用 App 内部的模式 内置调试工具,帮助开发者快速调试,提升效率 支持颜色模式扩展 基础组件设计方案如下: 业务接入 业务接入时需要调用基础组件提供的jdbappearance_bindUpdater方法,传入一个Block并在其中处理UI更新的逻辑,基础组件会绑定Block和UIView,然后将UIView存储在HashTable中,在合适的时机通过遍历HashTable和执行绑定的Block来更新UI。业务组件的接入方案如下: 需要注意的是

redis 的两种持久化方式及原理

五迷三道 提交于 2020-03-17 12:30:27
某厂面试归来,发现自己落伍了!>>> Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务 器。 Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);也可以把每一次数据变化都写入到一个append only file(aof)里面(这称为“全持久化模式”)。 第一种方法 filesnapshotting :默认redis是会以快照的形式将数据持久化到磁盘的(一个二进 制文件,dump.rdb,这个文件名字可以指定),在配置文件中的格式是:save N M表示在N秒之内,redis至少发生M次修改则redis抓快照到磁盘。当然我们也可以手动执行save或者bgsave(异步)做快照。 工作原理简单介绍一下:当redis需要做持久化时,redis会fork一个子进程;子进程将数据写到磁盘上一个临时RDB文件中;当子进程完成写临时文件后,将原来的RDB替换掉,这样的好处就是可以 copy-on-write 还有一种持久化方法是 Append-only :filesnapshotting方法在redis异常死掉时,

Postgresql备份和恢复

ⅰ亾dé卋堺 提交于 2020-03-02 03:50:56
和任何包含珍贵数据的东西一样,PostgreSQL 数据库也应该经常备份。尽管这个过程相当简单, 但是我们还是应该理解做这件事所用的一些技巧和假设。 备份 PostgreSQL 数据有三种完全不同的方法: SQL 转储 文件系统级别备份 在线备份 每种备份都有自己的优点和缺点。 SQL 转储 SQL 转储的方法采用的主意是创建一个文本文件,这个文本里面都是 SQL 命令,当把这个文件回馈给服务器时,将重建与转储时状态一样的数据库。 PostgreSQL 为这个用途提供了应用工具 pg_dump。这条命令的基本用法是: pg_dump dbname > outfile 正如你所见,pg_dump 把结果输出到标准输出。 我们下面就可以看到这样做有什么好处。 pg_dump 是一个普通的 PostgreSQL 客户端应用(尽管是个相当聪明的东西。)这就意味着你可以从任何可以访问该数据库的远端主机上面进行备份工作。 但是请记住 pg_dump 不会以任何特殊权限运行。具体说来, 就是它必须要有你想备份的表的读权限,因此,实际上你几乎总是要成为数据库超级用户。 要声明 pg_dump 应该以哪个用户身份进行联接,使用命令行选项 -h host 和 -p port。 缺省主机是本地主机或你的环境变量PGHOST声明的值。 类似,缺省端口是环境变量PGPORT或(如果它不存在的话

深度剖析企业如何做好数据安全防护

不想你离开。 提交于 2020-02-28 23:25:52
引言: 数据安全对企业生存发展有着举足轻重的影响,数据资产的外泄、破坏都会导致企业无可挽回的经济损失和核心竞争力缺失,而往往绝大多数中小企业侧重的是业务的快速发展,忽略了数据安全重要性。近年来,企业由于自身的安全防护机制不严谨,引发的数据安全事件频发。抛开事件本身的人为因素不谈,如何从技术角度避免类似的事件发生,才是我们需要认真总结的。 一、当前企业面临的数据安全现状 数据安全是企业CIO、CTO、IT 管理员以及老板在选择使用任何IT产品时最需要考虑的问题之一,在当下云时代,公有云,私有云或者IDC哪个选择更加安全,一直是企业管理者必要考量的因素之一。 对于这个问题,其实很多人的认知存在一个误区,即认为只有硬件是自己的,里面的数据才是自己可控的,这样才是安全的。但其实不然,数据本身和实物有很大的区别,数据是由二进制的0和1构成,是不是在身边并不能决定数据安全与否,因为数据的泄露或者改动根本不需要成本,只需要一次网络的传输就完成了。 其次,分析一个安全事件背后的原因,往往都和技术、流程以及人的因素有关。比如,如果技术方面选型不当,数据没有物理备份或者异地备份,往往会造成不可恢复的影响;制度与流程方面给予单人权限过高,先不说故意破坏,误操作也是致命的;人为因素包括误操作,小到崩溃一个服务器,大到删除核心数据库,这些都是经常发生的事情。当然,也存在外部的威胁,比如黑客入侵

Mysql 备份恢复与 xtrabackup备份

笑着哭i 提交于 2020-02-26 00:00:12
Mysql 备份恢复与 xtrabackup备份 1.1 备份的原因   备份是数据安全的最后一道防线,对于任何数据丢失的场景,备份虽然不一定能恢复百分之百的数据(取决于备份周期),但至少能将损失降到最低。衡量备份恢复有两个重要的指标:恢复点目标(RPO)和恢复时间目标(RTO),前者重点关注能恢复到什么程度,而后者则重点关注恢复需要多长时间。 1.1.1 备份的目录   做灾难恢复:对损坏的数据进行恢复和还原   需求改变:因需求改变而需要把数据还原到改变以前   测试:测试新功能是否可用 1.1.2 备份中需要考虑的问题   可以容忍丢失多长时间的数据;   恢复数据要在多长时间内完;   恢复的时候是否需要持续提供服务;   恢复的对象,是整个库,多个表,还是单个库,单个表。 1.1.3 备份的类型 热备份:   这些动态备份在读取或修改数据的过程中进行,很少中断或者不中断传输或处理数据的功能。使用热备份时,系统仍可供读取和修改数据的操作访问。 冷备份:   这些备份在用户不能访问数据时进行,因此无法读取或修改数据。这些脱机备份会阻止执行任何使用数据的活动。这些类型的备份不会干扰正常运行的系统的性能。但是,对于某些应用程序,会无法接受必须在一段较长的时间里锁定或完全阻止用户访问数据。 温备份:   这些备份在读取数据时进行,但在多数情况下,在进行备份时不能修改数据本身

Flink的入门

◇◆丶佛笑我妖孽 提交于 2020-02-22 14:34:13
Apache Flink(下简称Flink)项目是大数据处理领域最近冉冉升起的一颗新星,其不同于其他大数据项目的诸多特性吸引了越来越多人的关注。本文将深入分析Flink的一些关键技术与特性,希望能够帮助读者对Flink有更加深入的了解,对其他大数据系统开发者也能有所裨益。本文假设读者已对MapReduce、Spark及Storm等大数据处理框架有所了解,同时熟悉流处理与批处理的基本概念。 Flink简介 Flink核心是一个流式的数据流执行引擎,其针对数据流的分布式计算提供了数据分布、数据通信以及容错机制等功能。基于流执行引擎,Flink提供了诸多更高抽象层的API以便用户编写分布式任务: DataSet API, 对静态数据进行批处理操作,将静态数据抽象成分布式的数据集,用户可以方便地使用Flink提供的各种操作符对分布式数据集进行处理,支持Java、Scala和Python。 DataStream API,对数据流进行流处理操作,将流式的数据抽象成分布式的数据流,用户可以方便地对分布式数据流进行各种操作,支持Java和Scala。 Table API,对结构化数据进行查询操作,将结构化数据抽象成关系表,并通过类SQL的DSL对关系表进行各种查询操作,支持Java和Scala。 此外,Flink还针对特定的应用领域提供了领域库,例如: Flink ML,Flink的机器学习库