理解:灾备和只读数据库

2024-09-19 23:26:53 浏览数 (3)

背景

企业的数据容灾管理目标

1、提供数据安全保障,规避业务风险。

2、确保应用高可用性,消除计划外的停机时间,减少计划外的停机时间,提高业务连续性。

3、考虑结合的方案,提高投资回报。

三种线下灾备方案

1、本地容灾:业务高可用和读写分离,以提高业务连续性

2、同城容灾:兼顾业务连续性和数据安全,应对地区级以

3、异地容灾:以数据安全为目标,应对地区级数据风险。

每种灾备方式面向的管理目标不同,需要采用不同的方案满足需求。

灾备数据库

灾备是一项综合系统工程,灾备技术涉及到数据的复制、数据及应用的切换、数据的删除、数据的加密与传输、数据存储等多个技术的具体应用。系统容灾建设中,最重要的是数据容灾。

主流数据容灾模式

1、基于数据库逻辑复制:

实时获取数据日志进行复制,异步方案,典型代表:Shareplex for Oracle、Oracle GoldenGate、MySQL 主从复制,PostgreSQL逻辑流复制;

2、基于数据库物理复制

采用物理日志的方法进行复制,异步方案,典型代表:Oracle Datagurad,PostgreSQL物理流复制,SQL Server AlwaysOn;

3、基于主机的逻辑卷复制:

以逻辑卷为单位,通过TCP/IP网络进行复制,典型代表:Symantec VVR;

4、基于存储的块复制:

依赖存储设备的传输网络,可以采用同步和异步技术,典型代表:EMC,HP,IBM等存储厂商。

但每种解决方案都有优缺点:

容灾模式

优点

缺点

备注

数据库-逻辑复制

效率高,灵活性高,数据库可用双活

数据一致性不能完全保证,维护难度较高

实时获取数据日志进行复制,如:MySQL 主从复制

数据库-物理复制

对系统环境要求高,要求相同的数据库版本,相同的操作系统平台,备库只能以只读模式打开

逻辑卷

效率较差

一般不会做数据库容灾方案

存储复制

数据一致性高,效率好

但是备库不可用,有可能把主库的磁盘坏块也复制过去

IBM等存储厂商

上述四种方式分别从应用底层到应用上层进行复制,复制的数据量越来越小,对带宽的占用越来越低,对硬件设备的依赖越来越少,复制的灵活性越来越高。

只读数据库

读写分离

数据库的读写分离是一种数据库架构优化策略,将数据库的读操作和写操作分别分配到不同的服务器上,旨在提高数据库系统的性能和可扩展性。

  • 流量差分

通常,主数据库(Master)负责处理写操作(如插入、更新、删除等),而从数据库(Slave)负责处理读操作(如查询等)。

  • 数据同步

主从数据库之间通过某种同步机制(如二进制日志复制、基于语句的复制等)保持数据的一致性。

读写分离的优点

  1. 提高性能:通过将读操作和写操作分开处理,可以减轻主数据库的压力,提高整个系统的性能。
  2. 提高可扩展性:当系统需要扩展时,可以通过增加从数据库的数量来提高读取能力,而不需要对主数据库进行扩容。
  3. 提高可用性:如果主数据库出现故障,可以将部分读操作切换到从数据库上,从而保证系统的可用性。
  4. 降低故障风险:由于读写操作分布在不同的服务器上,可以降低单个服务器故障对整个系统的影响。

读写分离的缺点

  1. 数据一致性:由于主从数据库之间的同步延迟,可能会导致数据不一致的问题。需要根据实际业务需求选择合适的同步策略和同步延迟。
  2. 复杂性:实现读写分离需要额外的配置和管理工作,增加了系统的复杂性。
  3. 成本:需要购买和维护更多的服务器硬件和软件资源,增加了成本。

适用场景

  1. 读操作远多于写操作的场景:如新闻网站、博客平台等,大量的用户访问主要是为了阅读内容。
  2. 需要提高系统性能和可扩展性的场景:如电商网站、在线游戏等,需要处理大量的并发请求。
  3. 需要提高系统可用性的场景:如金融、电信等关键业务领域,需要确保系统的高可用性。

业务场景

图片图片

基于腾讯云的数据库架构分析

  • 主库:业务写入流量
  • 灾备库:通过Mysql主从复制,异步进行数据同步,特殊情况下转为主库
  • 只读库:业务读出流量
  • 只读库:运营侧需求的读出流量流量

容灾库的必要性

区分核心业务和非核心业务,非核心业务,由于没有太大访问量,没必要花更多的成本去做容灾

主从库的必要性

读写分离是否有效降低主库负载

总结

功能&目标差异

  • 灾备数据库:主要用于在主数据库发生故障时,能够迅速接管业务,保证数据的可靠性和业务的连续性。灾备数据库通常与主数据库保持同步,以便在主数据库不可用时,能够无缝切换。
    • 不管企业的业务环境有多复杂,灾备的核心就是解决数据同步和应用程序变更的多地发布的问题
  • 只读数据库:主要用于分担主数据库的读取压力,提高读写性能,增加应用的吞吐量。只读数据库不允许写入操作,但可以读取数据,适用于读操作远多于写操作的场景。

综上所述,灾备和只读各有其独特的功能和适用场景,我们可以根据自身业务需求选择合适的数据库类型。

0 人点赞