首页 > 数据库 >7天7项云服务 | 04-高可靠的云数据库Cloud DataBase

7天7项云服务 | 04-高可靠的云数据库Cloud DataBase

时间:2022-10-13 13:38:21浏览次数:58  
标签:手动 04 DataBase 数据库 可用 备份文件 实例 项云 备份

        在云端使用数据库,包括在云主机上自行搭建MySQL等数据库,对于个人网站或微型服务来说可以满足使用需求。稍微大些的应用需要考虑数据库实例的高可用、数据存储的高可靠,自建数据库需要自行通过Master-Slave等方式维护数据集群,增大运维难度。最佳实践是采用云端提供的高可用的云数据库服务,用户直接通过数据库实例的IP地址、账号、密码即可连接到云数据库实例,减少对数据库的运维任务。云数据库支持MySQL、SQL Server、MongoDB等多种数据库类型。

​        在这里我们介绍下经常使用的云数据库MySQL。

1. 云数据库与自建数据库的对比

        常用的关系型数据库(如MySQL)在云平台中可以基于云主机自行搭建,和传统IT架构中自行安装数据库并没有差别,对于小型应用来说,能够满足关系型数据的存取需求。不过自建数据库需要保证自行配置主从库,自行保证数据库服务高可用等,并不会减轻运维压力。

        建议直接选用云数据库服务,云平台交付高可用、高性能的数据库服务,并提供简便的数据库扩展、备份、回档、监控等机制,提供与开源版本数据库一致的服务并自研优化性能。云平台交付的数据库服务和用户调用接口之间有清晰的界限,用户只需要根据SLA来使用数据库服务即可,后端功能由云平台实现与保障。如下图所示,通过采用云数据库能够节省最左侧的基础部署运维工作,SQL审核、SQL优化及表结构设计优化等属于业务数据的操作还需要用户对接处理。

7天7项云服务 | 04-高可靠的云数据库Cloud DataBase_高可用

图  自建数据库与云数据库的运维差别

2. 高可用版本的云数据库

        云平台提供高可用版本和普通版本的云数据库,普通版本的云数据库通过底层集群化部署避免单点故障并实现Failover故障转移,但只给用户提供单个云数据库实例版本;高可用版本的云数据库后端采用双主架构设计,如图所示。

7天7项云服务 | 04-高可靠的云数据库Cloud DataBase_数据库_02 

图  高可用版本的云数据库的主备切换及容灾配置

        高可用版本的云数据库在后端会创建Master 和Standby两个云数据库实例,不过这对于用户不可见,用户看到的是一个云数据库实例。创建高可用版本的云数据库实例后,可用性管理模块将实时监控底层节点的可用性,一旦监测到Master 数据库不可用,则自动将该云数据库实例的VIP漂移至Standby数据库中,通过单一VIP接入,提供一个云数据库实例进行服务,保证数据库服务稳定、可靠,整个过程对用户透明,不需要人工干预和配置修改。

        高可用版本的云数据库允许双主架构中的Master DB和Standby DB位于同地域的不同可用区,如在可用区B创建Master DB,在可用区C创建容灾方案,即Standby DB。跨可用区的高可用版本的云数据库能够在单个可用区出现故障时由另外一个可用区的实例来接管服务,屏蔽可用区级别的故障。

3. 通过从库提升可靠性

        高可用版的双主架构保证了单个云数据库实例(无论是普通版本还是高可用版本,对于用户都是一个云数据库实例)的高可用,用户可创建多个云数据库实例构建主从库,并保证可随时切换,以保证高可用。创建主库后,再创建从库并挂载到主库上,对于MySQL类型,数据库主库会通过binlog机制实时同步数据到从库中,支持一至多个从库,主库和多个从库同样支持部署到同地域的不同可用区。主库可选择普通版本或高可用版本,而从库只能选择普通版本,不再支持高可用版本。

        如果普通版本的数据库(也就是唯一的主库实例)出现故障,对于高可用版本的数据库主库,当后端的Master DB和Standby DB均出现故障时认为是主库故障,此时可设置从库为新的主库,可以基于该新主库再创建和挂载一至多个从库。此操作需要手动完成,或者通过自行编写shell脚本来调用API完成将从库提升为主库。这时IP将会发生变更,因为每个数据库实例都绑定了一个IP,最佳实践通过内网DNS来进行解析。程序访问数据库IP时访问的是内网DNS域名,将内部域名解析到后端主库和从库实例中,当主库宕机时移除主库的IP而保留从库的IP,这样无须变动程序配置文件。

        当主库发生故障,从库提升为新的主库后,之前的主库会变为从库,云平台不会自动将修复故障的旧主库恢复为主库,需要手动将从库提升为新的主库,并且同时只能有一个主库存在。

        在混合架构下或跨地域部署中,可设置一个主数据库和多个从数据库,并实现数据库主从同步。如果不能保证低延迟的网络通信,就不能保证数据的时效性,不能提供有效的高可用保障。跨地域的主从库可以通过高速通道连通多个地域,降低网络延迟,混合架构环境中的数据库主从设置可通过专线接入连通本地环境和公有云来降低网络延迟,这两方面均在相应的章节进行介绍。混合架构或跨地域中的主从同步需要用户手动配置,并没有提供标准控制台接口或API接口。



最佳实践:通过备份提升可靠性

云平台提供了自动备份和手动备份方式备份数据库数据,并支持将数据库逻辑备份或物理备份到对象存储,或下载到本地进行二次存储,提升数据库实例的可用性和数据的可靠性。


4. 数据库备份回档机制

        在云端采用云数据库能够保证高可用,进一步提升云数据库实例和数据的可靠性,还要对数据库采用多重备份机制,云平台提供了手动备份和自动备份的接口备份数据,并且支持将备份文件进行二次转存。备份的数据库可随时恢复或拉起新的实例投入使用。

        不同于其他数据存储,关系型数据库有特定的备份方式,在采用高可用的云数据库的基础之上,仍需重视数据库的备份机制,以便在数据损坏、污染、丢失等情况下恢复数据库的数据和服务。

        关系型数据库MySQL提供binlog及vardump方式对数据进行备份,云数据库对备份进行封装,可通过界面控制台、API或CLI来管理备份,通过云数据库自身提供的备份回档机制来保障数据的安全性和可靠性。

        在云端构建的数据库方案中,建议采用原生的云数据库服务,而不是在云主机上自建数据库。如果是基于云主机的自建数据库,则可以通过MySQL的binlog机制自行定期备份。如果选用“原生”的云数据库服务,则可以采用数据库提供的备份回档机制,包括自动快照、手动快照、主从数据库实例、高可用版本的数据库服务等。

        一直在运行的数据库实例支持回档操作,回档操作支持将数据恢复到指定时间段,这种方式相当于处于运行状态的数据库实例自身的备份,一旦发生数据库误操作、被污染等状况,回档操作可以恢复到指定时刻的数据。备份文件可以作为数据文件另行备份,特别是对于手动备份文件,云平台只能同时保存3份,适合将备份文件下载到本地或上传到对象存储中。

        云数据库备份回档机制如下图所示。

7天7项云服务 | 04-高可靠的云数据库Cloud DataBase_高可用_03


图  云数据库备份回档机制

5. 数据库备份

        如下图所示,云数据库提供自动备份和手动备份两种快照备份方式,自动备份包括选择一周中备份的日期、备份时间段(建议选择业务低谷时间段)、逻辑备份或物理备份、配置无须备份的数据表。配置备份周期时采用与crontab相同的时间格式,通过界面配置最高每天一次备份的频率即可满足大部分自动备份需求,对于定制自动备份可以创建crontab定时执行基于API的备份脚本。手动备份是在界面控制台上通过按钮操作来进行备份。手动备份操作完成即可得到一份备份文件,云平台对手动备份文件的数量有限制,通常为3份。云数据库快照方式的备份为冷备份,备份后的文件并不能直接使用,需要基于备份创建新的数据库实例。​​

        如下图所示,数据库备份分为自动备份和手动备份,系统按照用户设定的备份周期自动生成备份文件,云数据库提供备份检查告警功能,以确保自动备份有效执行,如果没有有效自动备份,该模块将会触发告警。手动备份的数量有限,同时可保留3份手动备份文件,在已经有3份手动备份时再进行手动备份会删除最早创建的手动备份文件。手动备份适合对一些不在自动备份时间范围内的重要时间节点的数据进行备份。

        云数据库提供自动备份,备份间隔周期为一天,即每天备份一次。数据库备份属于非核心业务,应选择业务非繁忙时间段,在数据库读写压力最小的时间点进行备份,不同行业、不同用户的业务非繁忙时间段互有差异,因此每次备份的时间点支持自定义选择,如果凌晨2~4点属于业务低谷期,则适合选择这个时间段进行备份。

7天7项云服务 | 04-高可靠的云数据库Cloud DataBase_高可用_03


图  云数据库自动备份策略配置

        自动备份的数据在云端存储的时长有限,自动备份数据可保存7天;虽然手动备份没有时间限制,但只能同时存储3份,为了延长数据备份的周期及数据可恢复的时间,可将备份文件和日志进行下载转存,长期保存备份文件,如下载到本地、文件存储中等,或直接转存到对象存储的标准存储中。及时将手动备份文件保存在对象存储中之后,在云数据库平台中将其删除,重复以上操作可以突破“3份”的限制而实现“任意”多份手动备份文件,但是系统运维和管理应该是自动化流程,有大量手动操作介入则会产生新的坏味道。



最佳实践

每天自动备份的文件和手动备份的文件应定期上传到对象存储作为二次备份,建议直接选择对象存储的低频存储并设置7天后转为归档存储,这是因为云数据库平台已经保留了7天的备份文件,能够满足正常的恢复数据的需求,如果需要恢复超过7天的数据或拉取7天前的数据作为沙箱环境,则从对象存储的归档库中“解冻”再恢复备份文件,导入云数据库平台后即可恢复数据。


        云数据库的备份支持两种形式:逻辑备份和物理备份,如表所示。

7天7项云服务 | 04-高可靠的云数据库Cloud DataBase_高可用_05

表  云数据库的逻辑备份和物理备份

6. 数据库回档及备份恢复

        对于数据库实例,系统自动进行了备份,用户可选择需要恢复的时间点的数据进行回档。数据库回档会根据所选的时间点重新创建一个数据库实例,不会影响原有数据库的使用,在回档过程中新数据库的内存、硬盘、数据库类型(普通版本或高可用版本)、数据库版本(如MySQL 5.7、MySQL 8.0)等信息不可修改,应与原数据库相同。

        除此之外,还有数据库的手动备份文件和自动备份文件,可以查看到数据库备份链。在备份链中可以选择自动备份和手动备份的文件,从备份链创建新的数据库实例,根据备份链中的数据记录时间实现数据恢复。

7. 延伸思考

  • 云数据库能够提供高可靠、高可用的服务,如何将数据备份到其他Region?
  • 两地三中心部署的业务架构中,如何平衡设计数据的时效性、一致性?
  • 单个云数据库实例性能不足以支撑业务需求时,如何进行扩展?

8. 动手实验

  • 选择一个云平台,创建MySQL数据库实例,配置界面进行截图;
  • 对MySQL数据库实例设置自动备份,进行截图;
  • 对MySQL数据库实例设置手动备份,进行截图;
  • 通过工具或网页连接到MySQL,进行截图。



标签:手动,04,DataBase,数据库,可用,备份文件,实例,项云,备份
From: https://blog.51cto.com/u_15651456/5753252

相关文章