背景
企业的数据容灾管理目标
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)负责处理读操作(如查询等)。
- 数据同步
主从数据库之间通过某种同步机制(如二进制日志复制、基于语句的复制等)保持数据的一致性。
读写分离的优点
- 提高性能:通过将读操作和写操作分开处理,可以减轻主数据库的压力,提高整个系统的性能。
- 提高可扩展性:当系统需要扩展时,可以通过增加从数据库的数量来提高读取能力,而不需要对主数据库进行扩容。
- 提高可用性:如果主数据库出现故障,可以将部分读操作切换到从数据库上,从而保证系统的可用性。
- 降低故障风险:由于读写操作分布在不同的服务器上,可以降低单个服务器故障对整个系统的影响。
读写分离的缺点
- 数据一致性:由于主从数据库之间的同步延迟,可能会导致数据不一致的问题。需要根据实际业务需求选择合适的同步策略和同步延迟。
- 复杂性:实现读写分离需要额外的配置和管理工作,增加了系统的复杂性。
- 成本:需要购买和维护更多的服务器硬件和软件资源,增加了成本。
适用场景
- 读操作远多于写操作的场景:如新闻网站、博客平台等,大量的用户访问主要是为了阅读内容。
- 需要提高系统性能和可扩展性的场景:如电商网站、在线游戏等,需要处理大量的并发请求。
- 需要提高系统可用性的场景:如金融、电信等关键业务领域,需要确保系统的高可用性。
业务场景
基于腾讯云的数据库架构分析
- 主库:业务写入流量
- 灾备库:通过Mysql主从复制,异步进行数据同步,特殊情况下转为主库
- 只读库:业务读出流量
- 只读库:运营侧需求的读出流量流量
容灾库的必要性
区分核心业务和非核心业务,非核心业务,由于没有太大访问量,没必要花更多的成本去做容灾
主从库的必要性
读写分离是否有效降低主库负载
总结
功能&目标差异
- 灾备数据库:主要用于在主数据库发生故障时,能够迅速接管业务,保证数据的可靠性和业务的连续性。灾备数据库通常与主数据库保持同步,以便在主数据库不可用时,能够无缝切换。
- 不管企业的业务环境有多复杂,灾备的核心就是解决数据同步和应用程序变更的多地发布的问题
- 只读数据库:主要用于分担主数据库的读取压力,提高读写性能,增加应用的吞吐量。只读数据库不允许写入操作,但可以读取数据,适用于读操作远多于写操作的场景。
综上所述,灾备和只读各有其独特的功能和适用场景,我们可以根据自身业务需求选择合适的数据库类型。