其实吧,这个题目对于数据库从业者来说,算是low到不能再low的内容,如果这几个东西都分不清楚,那确实得回炉再造了。但是在实际工作中,还是有很多客户并不是很清楚这几个概念,比如之前我就被问到过,你这ADG不就是异地备份么。7月第一天,摸个大鱼,抄点冷饭。本期不分节。灾备的意思其实很简单,下面是节选自百度百科的内容:
容灾备份实际上是两个概念,容灾是为了在遭遇灾害时能保证信息系统能正常运行,帮助企业实现业务连续性的目标,备份是为了应对灾难来临时造成的数据丢失问题。在容灾备份一体化产品出现之前,容灾系统与备份系统是独立的。容灾备份产品的最终目标是帮助企业应对人为误操作、软件错误、病毒入侵等“软”性灾害以及硬件故障、自然灾害等“硬”性灾害。
灾备其实就是容灾备份的缩写,也就是容灾与备份,为何很多不是做技术的人分不清楚灾备、容灾与备份,因为他们以为无论名词如何变化,目的都是数据库不出问题;但是对于数据库从业者来说必须得分清楚,因为它们解决的问题是不一样的。
比如机房/IDC断电,运行在本地的数据库肯定无法提供服务的,要想业务正常运行,那么数据库肯定要实现异地的容灾,也就是要通过数据库的高可用来实现,首先需要保证本地和异地的数据库数据内容尽可能的实时一致,在本地数据库出现异常的时候,异地数据库能够在第一时间接管生产。仅仅数据库做到容灾就足够了么,肯定是不行的,数据库上的应用也必须能够在本地和异地同等部署,并且需要达到能够正常的连接到或者切换至正在用于生产的数据库。在应用之上,整个网络也必须能够实现在异常情况下实现联通。要实现上面的每一样都不简单,叠加起来会更加难,比如数据库的高可用架构要满足需求,应用可能需要双倍部署,网络全部都必须主备/堆叠,网关具备切换能力等等,因此我们会说,那几个9的位数其实代表了投入的量,9越多投入增长越快。
有些人就会说,数据库有了足够的高可用性之后,我们是不是可以不需要其他确保数据安全的措施了,反正数据库彻底不可用的概率很低,数据能操作就行。但是有一些极端情况,比如使用了DDL清除了数据,这个可是无法用UNDO/MVCC来恢复数据的;再比如数据被错写,隔了一段时间后才被发现需要恢复数据。这时候肯定又有人会说了,有些数据库不是有闪回机制么,把数据库拉回到异常时间点之前不久好了么,但是考虑过没,数据库闪回期间会影响生产和容灾,已经产生的正常的生产数据还是需要的,数据库最终回到什么状态是需要考量的,而数据的误操作往往是小范围的,使用闪回带来的负面影响是不是太大了,使用备份来实现少量数据恢复,减少影响在我看来是一个更加好的方法。如果后面遇到的问题再棘手一点的,数据被通过加密了同时影响到了容灾端;最后极端中的极端,所有数据库服务器全部异常。这种情况下就只能通过离线备份来恢复数据了,虽然这会更加耗时,但能够确保数据恢复。当然如果真想相对的万无一失,在容灾以外的地方再加个异地灾备更好,只不过这个投入就更大了。
最后,我认为,对于数据库来说容灾备份二者是缺一不可的,无论可用性有多高,备份都是数据库安全最后一道保障。
写到最后我感觉好像还少了点东西:监控巡检维护不要做了么?隐患不需要排查解决了么?Whatever!