数据库选型最佳实践(二)

本文涉及的产品
RDS PostgreSQL Serverless,0.5-4RCU 50GB 3个月
推荐场景:
对影评进行热评分析
云原生数据库 PolarDB 分布式版,标准版 2核8GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 数据库选型最佳实践(二)

开发者学习笔记【阿里云云数据库助理工程师(ACA)认证数据库选型最佳实践(二)

课程地址https://edu.aliyun.com/course/3112080/lesson/19077

 

数据库选型最佳实践(二)


三、上云姿势的选择:备份,原生复制,还是DTS?


1.上云姿势的选择

(1)备份上云

①Dump 数据,逻辑备份再恢复

②XtraBackup 物理备份上传到阿里云上再恢复

③DBS 备份上云,是阿里云提供的备份工具,可以传到 IDC 做数据的备份。

(2)原生复制上云

①搭建主从复制

②异步复制、半同步复制

③Change master,实现数据库从 IDC 到阿里云。

(3)云原生工具上云

①DTS 工具,实现不停机上云

②全量复制+增量复制;全量复制完成全部历史数据的上云,增量复制可以实现追增量的复制,短时间的停机就可以实现业务的上云。

2.DTS 数据库传输服务:数据库上云的利器

DTS 支持多种数据库的选择,可以采用 DTS 作为数据传输服务的工具。它支持非常丰富的数据源,多种商业的数据库、开源数据库,还具备事务日志解析的能力。它是支持跨引擎、跨平台、跨版本的数据传输。也可以记录断点续传能力以及节点同城容灾,最大限度保障了同步效率以及可用性。

图片208.png

3.DTS 技术架构

源库支持 MySQL 、SQL Server 等,目标库同样支持数据库的选择。阿里云的 DTS 云服务提供了用户控制台、OpenAPI、调度服务。

调度服务会配置源端库和目标库的 IP 地址和密码进入预检查的环节,通过预检查之后开始做全量抽查的 ETL 抽取。将抽取到的数据通过 Writer 进行回放,完成全量数据库的抽取之后开始进行增量数据库的抽取,抽取完成之后存入 DStore 之中。

最后通过 Writer 写入目标数据库。以及可以做数据源的订阅,例如在源库上对于 MySQL 做数据的操作,DTS 可以产生订阅,以消息的方式写入 kafka、流计算等。然而把源库数据产生的变更写入 hadoop或其它自定义业务,从而完成数据异构的转换。

图片209.png

4.数据库零停机上云迁移

第一个阶段是结构的迁移,结构迁移是做表结构的迁移。完成表结构迁移后会进入到全量数据迁移的过程,在做全量数据迁移的同时,会记录增量数据的拉取,一旦完成全量数据之后,开始做增量数据在目标库上的回放。一旦两者追平之后,源库和目标库是保持了数据的一致。这时需要业务从源库切换到目标库,从而完成了数据从源库到目标库的迁移过程。通过 DTS 可以实现数据库零停机的云上迁移。

图片210.png

5.迁移、同步阶段完成情况视图

在视图中可以清楚的看到预检查、增量数据服务的百分比和全量迁移完成情况百分比,以及结构迁移和增量迁移完成情况百分比等相关信息在控制台中查看。

图片211.png

 

四、业务不同的发展阶段,数据库和 DBA 如何选择?


1.业务各个发展阶段的数据库如何选型?

当有一个新业务时,在这个业务初创期可以采用开源数据库,比如 MySQL,因为它在社区中拥有好的用户基础。当业务上线时,可以采用读写分离,因为读写分离在阿里的 RDS 数据库提供了读写分离,可以在不该业务的前提之下实现数据库的读写分离。通过读写分离即不更改业务,又增强了业务数据库横向扩展的能力。当业务成长起来之后可以无缝迁移到 POLARDB 上,定位原生数据库,POLARDB 比 MySQL 更加强大的数据库选择。在强大的同时提供了跟 MySQL 100%的兼容性,也就是说把业务从 MySQL 迁移到 POLARDB 不需要做任何业务层面的修改,从而实现数据处理能力的增强。当业务发展起来之后,需要做微服务的改造。在做业务微服务改造的同时,需要对数据库进行垂直拆分。垂直拆分指的是原本是用一套数据库承载多个数据库模块,多个业务模块。现在要基于微服务,对模块进行划分,把不同的模块数据拆分到不同的数据库中来做承载。微服务可以解决业务和数据库横向扩展的问题,但是也会带来一定的隐患。把数据拆散到多个数据库实例中进行承载之后,还要把数据聚合到一个全量聚合仓库中去。比如可以采用 POLARDB 作为全量聚合仓库,有跨垂直拆分库的联合查询的需求时经常在全量聚合仓库中完成操作。最后当业务逐渐壮大起来之后,需要做数据库的水平拆分,水平拆分的过程之中为了保证水平拆分的性能,需要对业务进行重构。当业务可以引领一方潮流时,经常需要灾备多活。比如淘宝,经历了从单机房扩展到多机房,进而做到多机房承载不同的流量来做多活。采用单元化改造的模式,从而承载淘宝这样的大体量业务架构。

图片212.png

2.上云、DBA 如何做职业的规划与选择?

把 DBA 分为三大类,运维 DBA、应用 DBA 和业务 DBA。对于运维 DBA 来说,它们的功能是对数据库安装和配置、备份和容灾、HA 高可用、升级和扩容。这些工作是在 IDC 自建或者是阿里云 ECS 自建数据库的 DBA 经常要做的工作,这是 DBA 的初级阶段。因为它所做的工作都属于重复性的劳动。上云后并不意味着 DBA 就无所事事,DBA 经常会转型成为应用的 DBA。应用 DBA 经常做的事情是技术选型、容量规划、性能优化和运维自动化。


应用 DBA 相对于自建的运维 DBA 而言,意味着职业生涯的提高和重新选择。进一步可以进阶为业务 DBA。业务 DBA 需要做的是结合特定业务场景的数据库设计和数据生命周期的数据管理,从而帮助业务通过数据创造价值。业务 DBA 是 DBA 的高级形态。只有上云之后才能够转型成为应用 DBA,从而进阶为业务 DBA。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
SQL 开发框架 .NET
ASP.NET连接SQL数据库:详细步骤与最佳实践指南ali01n.xinmi1009fan.com
随着Web开发技术的不断进步,ASP.NET已成为一种非常流行的Web应用程序开发框架。在ASP.NET项目中,我们经常需要与数据库进行交互,特别是SQL数据库。本文将详细介绍如何在ASP.NET项目中连接SQL数据库,并提供最佳实践指南以确保开发过程的稳定性和效率。一、准备工作在开始之前,请确保您
149 3
|
2月前
|
消息中间件 缓存 监控
优化微服务架构中的数据库访问:策略与最佳实践
在微服务架构中,数据库访问的效率直接影响到系统的性能和可扩展性。本文探讨了优化微服务架构中数据库访问的策略与最佳实践,包括数据分片、缓存策略、异步处理和服务间通信优化。通过具体的技术方案和实例分析,提供了一系列实用的建议,以帮助开发团队提升微服务系统的响应速度和稳定性。
|
16天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
33 2
|
1月前
|
关系型数据库 MySQL 数据库
MySQL数据库:基础概念、应用与最佳实践
一、引言随着互联网技术的快速发展,数据库管理系统在现代信息系统中扮演着核心角色。在众多数据库管理系统中,MySQL以其开源、稳定、可靠以及跨平台的特性受到了广泛的关注和应用。本文将详细介绍MySQL数据库的基本概念、特性、应用领域以及最佳实践,帮助读者更好地理解和应用MySQL数据库。二、MySQL
109 5
|
1月前
|
SQL 数据管理 数据库
文章初学者指南:SQL新建数据库详细步骤与最佳实践
引言:在当今数字化的世界,数据库管理已经成为信息技术领域中不可或缺的一部分。作为广泛使用的数据库管理系统,SQL已经成为数据管理和信息检索的标准语言。本文将详细介绍如何使用SQL新建数据库,包括准备工作、具体步骤和最佳实践,帮助初学者快速上手。一、准备工作在开始新建数据库之前,你需要做好以下准备工作
117 3
|
3月前
|
开发者 UED Java
Play Framework惊天秘密:如何让异常处理优雅得像芭蕾舞?
【8月更文挑战第31天】在Web应用开发中,异常处理至关重要,直接影响应用稳定性和用户体验。Play Framework作为轻量级Java Web框架,提供了基于Scala偏函数的灵活异常处理机制。通过实现`HttpErrorHandler`接口可定义全局异常逻辑,而在控制器中使用try-catch块则能捕获特定异常。定义自定义异常类也有助于表示特定错误情况。最佳实践包括保持处理一致性、提供有用错误信息、记录日志及分类处理异常。掌握这些技巧,能使Play应用更健壮可靠。
64 1
|
3月前
|
存储 C# 关系型数据库
“云端融合:WPF应用无缝对接Azure与AWS——从Blob存储到RDS数据库,全面解析跨平台云服务集成的最佳实践”
【8月更文挑战第31天】本文探讨了如何将Windows Presentation Foundation(WPF)应用与Microsoft Azure和Amazon Web Services(AWS)两大主流云平台无缝集成。通过具体示例代码展示了如何利用Azure Blob Storage存储非结构化数据、Azure Cosmos DB进行分布式数据库操作;同时介绍了如何借助Amazon S3实现大规模数据存储及通过Amazon RDS简化数据库管理。这不仅提升了WPF应用的可扩展性和可用性,还降低了基础设施成本。
80 0
|
3月前
|
Java 数据库连接 数据库
AI 时代风起云涌,Hibernate 实体映射引领数据库高效之路,最佳实践与陷阱全解析!
【8月更文挑战第31天】Hibernate 是一款强大的 Java 持久化框架,可将 Java 对象映射到关系数据库表中。本文通过代码示例详细介绍了 Hibernate 实体映射的最佳实践,包括合理使用关联映射(如 `@OneToMany` 和 `@ManyToOne`)以及正确处理继承关系(如单表继承)。此外,还探讨了常见陷阱,例如循环依赖可能导致的无限递归问题,并提供了使用 `@JsonIgnore` 等注解来避免此类问题的方法。通过遵循这些最佳实践,可以显著提升开发效率和数据库操作性能。
84 0
|
3月前
|
Java 开发者 前端开发
Struts 2、Spring MVC、Play Framework 上演巅峰之战,Web 开发的未来何去何从?
【8月更文挑战第31天】在Web应用开发中,Struts 2框架因强大功能和灵活配置备受青睐,但开发者常遇配置错误、类型转换失败、标签属性设置不当及异常处理等问题。本文通过实例解析常见难题与解决方案,如配置文件中遗漏`result`元素致页面跳转失败、日期格式不匹配需自定义转换器、`<s:checkbox>`标签缺少`label`属性致显示不全及Action中未捕获异常影响用户体验等,助您有效应对挑战。
88 0
|
3月前
|
Java Spring 开发者
Java Web开发新潮流:Vaadin与Spring Boot强强联手,打造高效便捷的应用体验!
【8月更文挑战第31天】《Vaadin与Spring Boot集成:最佳实践指南》介绍了如何结合Vaadin和Spring Boot的优势进行高效Java Web开发。文章首先概述了集成的基本步骤,包括引入依赖和配置自动功能,然后通过示例展示了如何创建和使用Vaadin组件。相较于传统框架,这种集成方式简化了配置、提升了开发效率并便于部署。尽管可能存在性能和学习曲线方面的挑战,但合理的框架组合能显著提升应用开发的质量和速度。
65 0