摘要: 简介 本系列文章的上一篇对复制是什么做了一个概述。本篇文章根据发布服务器,分发服务器和订阅服务器的组织方式和复制类型来讲述常用复制的几种模式。模式的选择 选择复制的模式取决于多个方面。首先需要考虑具体的业务需求,在此之后还需要考虑硬件和网络的限制。对于业务需求来说考虑的角度可以分为两个部分:自治和延时。自治是指”数据不被影响的程度”,比如说一个业务场景:公司的总部在北京,发布服务器和分发服务器全在总部,各个地区的分部有订阅服务器,使用快照复制来接收推送订阅总部每个月一次的公司员工通讯录。在这个业务场景中,订阅服务器仅仅是接收发布服务器发布的通讯录信息,对于这些信息的修改是不会回传给总部服务器的 阅读全文
posted @ 2013-12-06 17:08 Wolves 阅读(299) 评论(0) 推荐(0) 编辑
摘要: 简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是一些列技术的集合,包括从存储转发数据到同步数据到维护数据一致性。使用复制功能不仅仅需要你对业务的熟悉,还需要对复制功能的整体有一个全面的了解,本系列文章旨在对SQL Server中的复制进行一个简单全面的探讨。(PS:在我的上篇文章中我发现某些文章的图片使用mspaint手绘更有感觉,但被很多人吐槽,因此在不考虑个人羞耻感的前提下,本系列文章中的一些图片继续使用mspaint)。复制是什么 复制,英文是Replication,这个词源自于拉丁文re 阅读全文
posted @ 2013-12-06 17:03 Wolves 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 在本系列文章的前两篇对高可用性的意义和单实例下的高可用性做了阐述。但是当随着数据量的增长,以及对RTO和RPO要求的严格,单实例已经无法满足HA/DR方面的要求,因此需要做多实例的高可用性。本文着重对SQL Server的复制进行阐述。复制? 复制起初并不是用于作为高可用性功能而设计的,实际上复制的概念就像其名称一样,用于复制数据。比如将某个库中的数据“复制”到另一个库,到另一个实例中,由OLTP复制到OLAP环境中,由某数据中心复制到位于地球另一侧的另外一个数据中心中。因此,由于复制所提供的功能,复制可用被用来剥离负载,用于做数据冗余,直至把复制用于作为高可用性拓扑中的一个环节。(切记,复制 阅读全文
posted @ 2013-12-06 16:48 Wolves 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 简介 日志的作用是保证持久性和数据一致性,通过日志可以实现数据的Undo与Redo,因此通过日志,SQL Server不仅仅可以实现灾难恢复,还可以通过日志的Redo来实现高可用性。本篇文章主要讲述日志在SQL Server中提供的几种高可用性中的作用以及在灾难恢复中的角色。日志损坏 日志可能会由于IO子系统的故障而损坏,当出现日志损坏时,如果您对日志的原来略有了解,并能在日志损坏的情况下尽量挽救数据,那么感觉一定是非常好的:-),下面我们来了解几种日志损坏的情况下的恢复情况。1.数据库正常关闭,日志损坏。 当数据库正常关闭时,日志损坏就不是那么重要了,因为此时数据库中所有提交的事务对应的脏数 阅读全文
posted @ 2013-12-06 15:40 Wolves 阅读(319) 评论(0) 推荐(0) 编辑
摘要: 简介 生产环境下的数据是如果可以写在资产负债表上的话,我想这个资产所占的数额一定不会小。而墨菲定律(事情如果有变坏的可能,无论这种可能性有多小,它总会发生)仿佛是给DBA量身定做的。在上篇文章介绍的简单恢复模式下,从最近一次备份到当前的数据都会存在丢失的风险。而完整备份模式使得数据丢失的风险大大减少。本文主要介绍在完整备份模式下概念原理和日志所处的角色。完整(Full)恢复模式 完整恢复模式通过将对数据库的任何修改记录到日志来给予数据最大程度的保护。在完整恢复模式下,日志的作用不仅仅是保证了数据库事务的ACID。并且还可以使数据恢复到在日志范围内的任何时间点。 在上一篇文章中说过,在简单恢复模 阅读全文
posted @ 2013-12-06 15:39 Wolves 阅读(285) 评论(0) 推荐(0) 编辑
摘要: 简介 在简单恢复模式下,日志文件的作用仅仅是保证了SQL Server事务的ACID属性。并不承担具体的恢复数据的角色。正如”简单”这个词的字面意思一样,数据的备份和恢复仅仅是依赖于手动备份和恢复.在开始文章之前,首先要了解SQL Server提供的几种不同备份类型。SQL Server提供的几种备份类型 SQL Server所提供的几种备份类型基本可以分为以下三种(文件和文件组备份以及部分备份不在本文讨论之列): 1.完整(Full)备份:直接将所备份的数据的所有区(Extent)进行复制。这里值得注意的有2点: 完整备份并不像其名字“完整”那样备份所有部分,而是仅备份数据库本身,而不备份日 阅读全文
posted @ 2013-12-06 15:37 Wolves 阅读(817) 评论(0) 推荐(0) 编辑
摘要: 简介 每一个SQL Server的数据库都会按照其修改数据(insert,update,delete)的顺序将对应的日志记录到日志文件.SQL Server使用了Write-Ahead logging技术来保证了事务日志的原子性和持久性.而这项技术不仅仅保证了ACID中的原子性(A)和持久性(D),还大大减少了IO操作,把对数据的修改提交到磁盘的工作交给lazy-writer和checkpoint.本文主要讲述了SQL Server修改数据时的过程以及相关的技术。预写式日志(Write-Ahead Logging (WAL)) SQL Server使用了WAL来确保了事务的原子性和持久性.实际 阅读全文
posted @ 2013-12-06 15:36 Wolves 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 简介 SQL Server中的事务日志无疑是SQL Server中最重要的部分之一。因为SQL SERVER利用事务日志来确保持久性(Durability)和事务回滚(Rollback)。从而还部分确保了事务的ACID属性.在SQL Server崩溃时,DBA还可以通过事务日志将数据恢复到指定的时间点。当SQL Server运转良好时,多了解一些事务日志的原理和概念显得并不是那么重要。但是,一旦SQL SERVER发生崩溃时,了解事务日志的原理和概念对于快速做出正确的决策来恢复数据显得尤为重要.本系列文章将会从事务日志的概念,原理,SQL Server如何使用日志来确保持久性属性等方面来谈SQ 阅读全文
posted @ 2013-12-06 15:34 Wolves 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 在数据库数据文件因各种原因发生损坏时,如果日志文件没有损坏。可以通过备份结尾日志(Tail of log)使得数据库可以恢复到灾难发生时的状态。 例如: 上图中。在DB_1中做了完整备份,在Log_1,Log_2处做了日志备份。在Log_2备份之后不久,发生了故障。从Log_2备份到灾难发生时之间的日志。就是结尾日志(Tail of log)。如果不能备份尾端日志,则数据库只能恢复到Log_2备份的点。尾端日志期间所做的改动全部丢失。更详细的概念可以查看我之前关于日志的博文。 下面我们分别来看在SQL Server实例运行良好和SQL Server实例崩溃状态下,备份结尾日志方法。SQL .. 阅读全文
posted @ 2013-12-06 15:29 Wolves 阅读(701) 评论(0) 推荐(0) 编辑