从运维的角度分析使用阿里云数据库RDS的必要性--你不应该在阿里云上使用自建的MySQL/SQL Server/Oracle/PostgreSQL数据库

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: 开宗明义,你不应该在阿里云上使用自建的MySQL or SQL Server数据库,对了,还有Oracle or PostgreSQL数据库。 云数据库 RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务。

开宗明义,你不应该在阿里云上使用自建的MySQL or SQL Server数据库,对了,还有Oracle or PostgreSQL数据库。

云数据库 RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务。基于飞天分布式系统和全SSD盘高性能存储,支持MySQL、SQL Server、PostgreSQL和PPAS(高度兼容Oracle)引擎,默认部署主备架构且提供了容灾、备份、恢复、监控、迁移等方面的全套解决方案。

当然,并不是指所有用户,这还是有条件的,包括但不限于以下两点:

  1. 你的网站或项目发展到一定阶段,需要将数据库独立出来,不再和网站程序或应用程序放在一台ECS上;
  2. 即便你有一个对数据库很了解的开发人员或运维人员,也不应该自建数据库,因为让开发专注做程序开发,让运维专注做运维自动化,这才是能让生产最大化的决策。

还有个别情况是:你也许有一个小型的数据库技术团队,比如2、3个人,也不应该自建数据库,因为这通常需要维护整个基础架构,比如说网络负载均衡(管理交换机)、数据可靠性(磁盘raid)、中间件(读写分离)、故障自动转移(主备切换)、主从架构(数据同步)等等。这些技能不见得DBA都会,比如网络设备,是不是又要增加一个网络工程师的岗位呢,对于成本的增加,你有没有考虑进去?

然而,对于阿里云数据库RDS来说,以上这些需求本身已经具备了,所以数据库DBA更应该着重于跟业务相关的优化上面。因为这才是iaas(基础架构即服务)的精髓。

但是,我们还是要分析清楚,为什么要使用RDS,它好在哪些具体的地方?

阿里云数据库RDS包括了4种:MySQL/SQL Server/Oracle/PostgreSQL,我们先说其中之一的RDS for MySQL吧。

RDS for MySQL目前包括了三个版本:5.7、5.6、5.5:

  1. 首先推荐的是5.6,因为5.6与5.5相比,性能优化了很多,阿里的数据库团队,向mysql官方提供了很多的patch,是国内最大的技术贡献者。而且5.6推出一段时间了,非常成熟稳定,5.6和5.5的兼容性也非常好,笔者曾经将多个不同使用场景的5.5的数据库迁移到5.6,都没发生任何兼容性问题。如果不是有啥特殊原因一定要5.5,就建议选择5.6啦。另外,5.6在主从同步方面也是采用半同步方式,而不是5.5的异步,这就更加保证的数据可靠性。

RDS的贡献

  1. 5.6还有一个非常重要的功能,就是独写分离,目前只有5.6支持,笔者所在的项目已经使用这个功能几个月了,非常的好用,非常的让人省心,我想这个可能是互联网电商项目梦寐以求的功能吧。要知道,你自建读写分离,一般是使用开源的中间件作为代理层,这就要求你非常熟悉这个中间件的用法,包括设置权重、阈值、健康检查等等,这就大大增加了学习成本,不然的话你不担心出了故障无法解决吗?另外,使用开源中间件,在数据到达数据库之前需要经历多个组件的语句解析和转发,对响应延迟有较大的影响。而 RDS 读写分离在已有的高安全链路中直接内置,没有任何额外的组件来消耗时间,能够有效降低延迟,提升处理速度。

RDS读写分离功能

  1. 不管5.6还是5.5,都提供高可用版本,笔者强烈推荐互联网电商、游戏等项目使用它,这个版本是采用一主一备的高可用架构,同时提供本地ssd存储,有故障会自动切换主备实例。就光这一点,自建数据库就达不到,可以说绝大多数公司的主数据库都是单个mysql实例,遇到机器故障就只能停机,做不到自动切换。这并不是说这些公司不想使用高可用架构,而是真的有门槛,你以为照着网上的教程搭建好两个master,用心跳软件做好监控就行了吗?错了,后期的维护往往要比最初的环境搭建要难多了,这不仅仅是mysql本身的高可用,还必须结合自身业务情况才行。笔者以前所在的大型电商公司,就拥有数据库团队,曾经想做这样的高可用架构,但一直不敢正式上线运行,原因就是现实中会遇到各种各样的问题,始终没有完美的办法解决。
  2. 5.6同时还提供金融版:采用一主两备的架构,通过日志“多副本同步复制”,确保数据的强一致性,所以特别适合金融、证券、保险行业的核心数据库。而且,高可用版和金融版之间,是可以切换的哦,赞不赞?
  3. 有人说RDS的费用比自建MySQL所用的ECS服务器,相同配置贵了不少。没错,确实是贵一些,要知道上面刚说了,是一主一备两个实例,你自建如果用两台ECS实现,费用更贵,而且还不考虑是否好用的因素,明白了吗?
  4. 提供全面的监控诊断:线程内存、SQL资源消耗等监控,帮助用户快速进行问题诊断。这个也是重点呀,自建的数据库可以说基本没有这些监控,只能记录慢查询,再采用第三方工具分析日志,再进一步,使用一些开源工具平台,比如zabbix,自带了一些mysql基础监控,如果要粒度更进一步,可能需要安装其他插件,比如有一个比较有名的zabbix for mysql插件叫做fpmmm的,笔者也一直在使用。然而即便如此,笔者仍然认为比不上RDS提供的监控项,要知道,现实中分析一个故障,是需要多种手段结合起来一起辅助分析的,并不是提供的监控图越多,就一定能找出来。

RDS监控功能

  1. 备份:包括数据备份和日志备份,RDS都提供了,而且对于备份而言,更重要的是恢复和检查数据完整性。笔者想问问各位,有多少人是没做备份的,又有多少人是做了备份,但是没有定时去恢复的,也就是说,你做的备份正确吗,你验证过吗,你会定期去验证吗?恐怕由于人力物力的问题,这些都不会去做的。RDS提供了很重要的恢复方法,有三种:叫只读实例、克隆实例、灾备实例。从字面上应该可以理解它们的作用了,详细使用方法还是去看RDS文档吧。
  2. CloudDBA是监控和管理RDS实例性能及运行状况的服务,在RDS控制台的实例管理页面,目前只适用于MySQL类型的实例。针对SQL语句的性能、CPU使用率、IOPS使用率、内存使用率、磁盘空间使用率、连接数、锁信息、热点表等,CloudDBA提供了智能的诊断及优化功能,能最大限度发现数据库存在的或潜在的健康问题。CloudDBA的诊断基于单个实例,该诊断会提供问题详情及相应的解决方案,可为您管理实例运行状况带来极大的便利。目前只支持5.6和5.5。
  3. 现在说5.7,是最近推出不久的,它的关键在于是单机版。与标准的主备双机高可用版相比,单机基础版只提供一个数据库节点,通过底层数据存储层来保证数据多副本可靠性。数据库节点的减少,大幅降低了CPU和内存资源的开销,从而降低整体投入成本。因为对于个人、中小企业来说,能够接受短暂的故障停机(当然如果维护得好 ,这基本也是不存在的)。它的价格,与自建数据库相当了,但是仍然提供了前面几点的各种功能,所以强烈推荐中小企业使用的。
  4. 安全性,也是很多人关注的。云数据库RDS提供了多样化的安全加固功能来保障用户数据的安全,其中包括但不限于:
  • 网络:IP 白名单、VPC 网络、SSL(安全套接层协议)、SQL 防火墙
  • 存储:TDE(透明数据加密)、自动备份
  • 容灾:同城容灾(多可用区实例)、异地容灾(两地多中心)
    RDS安全
  1. 数据库管理:笔者用过命令行、navicat、phpMyAdmin等工具进行日常的数据库维护,我猜想大部分人也是如此。RDS使用“数据管理DMS”:提供关系型数据库和NoSQL的统一管理。它源自阿里数据库服务平台iDB,为数万研发人员提供数据库研发支撑,已在线上运行8年。您可以使用数据管理DMS轻松构建企业独有的数据库DevOps,促进数据库研发自助化,提升研发效率,同时保证员工数据库访问安全及数据库高性能。默认是免费版的,已经可以满足大多数人的使用需求了,如果还觉得不够,可以购买高级版,提供更强大的功能,具体可以查阅产品文档。笔者想说的是:你只需要有一个浏览器,就可以管理自己的数据库。
  2. 有人说,说了这么多,到底性能如何呀,我建议你还是自己体验吧,附上一张图:

RDS性能

  1. 如何从自建库迁移到RDS,请看文档吧:https://help.aliyun.com/document_detail/26210.html

现在,你同意我的观点吗:RDS是不是比自建数据库要好呢?

如果您需要购买服务器建站,领取阿里云限量红包,内含1888元代金券,可在付款时减免一部分金额。

有的朋友让推荐一下购买配置,这个其实还是跟自身的项目有关。笔者曾经短时间跟过一个电商项目,每天都有几场到十几场秒杀,规模上来之后,ECS服务器的配置是8核16G的,当时把数据库从本机拆出来,购买了RDS,选的配置5.6高可用版,硬件是4核16G,存储是100G,使用起来网站还是很流畅的,这也得益于前端防刷做得比较好吧。当然,除了ECS和RDS,也还使用了诸如OSS、CDN、WAF等产品,结合nginx过滤和程序防刷机制等等。

原文地址:https://www.lastupdate.net/339.html

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
166 2
|
3月前
|
存储 SQL 关系型数据库
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
530 15
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
|
2月前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
95 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
2月前
|
Java 关系型数据库 MySQL
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
这篇文章是关于如何使用Spring Boot框架通过JdbcTemplate操作MySQL数据库的教程。
97 0
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
|
2月前
|
数据可视化 关系型数据库 MySQL
【IDEA】配置mysql环境并创建mysql数据库
【IDEA】配置mysql环境并创建mysql数据库
253 0
|
3月前
|
SQL 关系型数据库 C语言
PostgreSQL SQL扩展 ---- C语言函数(三)
可以用C(或者与C兼容,比如C++)语言编写用户自定义函数(User-defined functions)。这些函数被编译到动态可加载目标文件(也称为共享库)中并被守护进程加载到服务中。“C语言函数”与“内部函数”的区别就在于动态加载这个特性,二者的实际编码约定本质上是相同的(因此,标准的内部函数库为用户自定义C语言函数提供了丰富的示例代码)
|
4月前
|
SQL 数据管理 关系型数据库
SQL与云计算:利用云数据库服务实现高效数据管理——探索云端SQL应用、性能优化、安全性与成本效益,为企业数字化转型提供全方位支持
【8月更文挑战第31天】在数字化转型中,企业对高效数据管理的需求日益增长。传统本地数据库存在局限,而云数据库服务凭借自动扩展、高可用性和按需付费等优势,成为现代数据管理的新选择。本文探讨如何利用SQL和云数据库服务(如Amazon RDS、Google Cloud SQL和Azure SQL Database)实现高效的数据管理。通过示例和最佳实践,展示SQL在云端的应用、性能优化、安全性及成本效益,助力企业提升竞争力。
80 0
|
4月前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
527 0
|
关系型数据库 分布式数据库 PolarDB
《阿里云产品手册2022-2023 版》——PolarDB for PostgreSQL
《阿里云产品手册2022-2023 版》——PolarDB for PostgreSQL
377 0
|
存储 缓存 关系型数据库

热门文章

最新文章

推荐镜像

更多