云平台中的MySQL

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

文主要翻译高性能MySQL v3

     对于MySQL在云中的使用,大致分为两类:
IaaS:基础设施即服务,
IaaS 为你的MySQL server提供基础服务,你可以购买虚拟server资源来安装MySQL server 实例。你可以按照自己的要求设置os 和MySQL server,但是你不能与之相关的硬件设施。
DbaaS (Database as a Server)
MySQL 本身是云所管理的资源,你只有一个访问MySQL 的凭证,你只能对MySQL 进行设置,但是不能看到os和虚拟的资源。Amazon 的RDS就是这样一个例子,他们提供的服务不是真正的MySQL,只是和MySQL和查询语言兼容。

    我们大部分集中在第一类。(我们的目标是帮助您避免您可能会遇到的一些缺陷,如果你不是一个MySQL在云端的专家。)

优点,缺陷,对云的误解
云计算有很多好处,其中一些是使用MySQL的时候特定的。
优点:
1、所有的基础设施都外包出去,不用未管理而费心,您不必购买硬件和开发供应链关系。不用替换坏掉的硬件等等
2、付费是按照自己的需求来说,可以将前期资本投入转换为当前项目运营上。
3、云服务器提供的价值随着时间而增加,因为他们会提供新的服务并降低成本。你不必做向升级服务事就能从他们的价值中获益。
4、对硬件资源管理方便,可随时增加或退订任何资源,省去处理或回收的成本。
5、云带来了对基础设施的重新思考与定位,资源可以通过API来展现,并且更加自动化。同样你也能搭建自己的私有云。

缺点:
1、资源是共享的并且不固定。我们获得的资源不能像我们付费那样公平的使用,并且云服务器也不能给出满意的答案
2、对于业务容量和可靠性是无法保证的。并不能完全按照自己业务需求来购买新的资源,可能会收到供应商资源限制或者“超额并购”
3、虚拟、共享的资源是不好进行故障排除。尤其是不能看到相关硬件设施并得知他们的状态。举例:当我们查看系统时,iostat 显示IO正常,vmstat显示CPU正常,当我们真正测试发现问题的时候是因为系统上的其他程序导致系统负载高。当出现问题的真的不好判断。

对云的一点误解:
1、云计算本质上更具扩展性
应用程序,它们的架构和组织管理,是可扩展的(或者不是)。云计算本质上不是可扩展的,只是因为它是一个云,选择一个可扩展平台不会使你的应用能够扩展。如果云平台供应商没有对购买资源作出限制,那么我们购买资源只是可扩展的一方面。
2、云会自动改善,甚至保证正常运行时间
一般情况下,个人云托管的服务器实际上更可能比精心设计的专用基础设施失败或出现停电,然而很多人没有认识到这一点,例如,一个人写道:“我们正在改善我们的基础设施基于云计算的系统给我们100%的正常运行时间和可扩展性。这是AWS已经历了两次巨大的停电之后,受影响较大的部分用户基地。一个好的架构师可能设计可靠的系统不可靠的部件。从另一方面来讲,如果你使用那些专家构建的云平台服务,对于一个新手来说是非常有帮助的。
3、云计算是唯一能够提供。。。。
事实上,许多云计算的好处,所采用的技术都继承自构建云平台和可以得到的带或不带云。如果你在任何平台下都游刃有余。那么你不需要云。
4、云是一个银弹
这可能似乎是荒谬的,怎么会有人居然说这.


MySQL在云中的可扩展性和高可用性
正如我们前面提到的,MySQL并不会自动变的更加具有可扩展性,实际上,对于在用的不是很强大的机器迫使我们尽早的进行水平扩展。云托管中的server相比于专门的硬件是不可靠的,所以需要更多的创造力。
虽然在扩展mysql的时候,在云平台和其他地方是没有太多的区别的。但最大的区别是是否能够提供服务上的需求。在云计算中对于可扩展性和高可用有些局限性。举例:在Amazon,中,不能使用VIP来实现故障转移。这样我们只能选择其他的方式,比如代理(proxies) scalebase 比较值得期待,
另一个关于关于云计算的警告 是它的自动扩展,在需求增加的时候组织更多的实例来作出响应,当需求减少的时候关闭部分实例。这样的行为对于无状态的web server 很合适,但对于DB却不是这样,对于特殊的场景,比如读较多的应用,增加replicas 可能会在auto_scaling 受限,但这也不是适合所有的情况,在实际生产中,在每个节点都对等的集群上,MySQL是不支持的。
你可以设置一个分片的架构 来实现自动的重组分片,自动增长与缩小。但是MySQL自身是无法自动扩展的。
实际上,MySQL在应用程序中是唯一一个有状态并且持久的组件,但由于云计算的优点导致很多人把应用迁移至cloud上,所以MySQL也不得不迁移至云平台。数据库并非所有的核心,如果该应用程序的其余部分的好处大于根据需要额外的成本和所需的努力使MySQL工作.那么是否将应用迁移至云中将不是一个问题。现在回答这个问题:DB周围的资源都是可用的,这样将来对你在面对云的的额外的挑战的时候是很有帮助的。

MySQL在云中的性能
一般情况下,云中的MySQL由于较弱的的CPU,memory,I/O 导致在实体机上性能一般般。但是相对来讲,云平台的伸缩性是很强的。他和其他的虚拟机共享着资源。资源的伸缩性是很有创意的。但是对于INNODB 对这种I/O资源的性能不是很“喜欢”,I/O操作需要更多的锁锁住共享资源,这样只会产生更多long query. 产生更多的峰值,通过下面两个变量看出:Threads_runnig Threads_connected .
在实际情况下,由于不一致和变化莫测的情况,队列在这个时候是很重要的。
云中的server都是队列的一份子,如果资源正在被利用,其他的server只能进行等待。如果云中的资源变化很大的话,请求会有更多的交互,结果导致并发性不是很高,保证数据一致性的情况下会带来较低的响应时间。
现在我们可以说说OLTP的应用负载,如果对资源设置好的话,在云平台上是可以有不错的表现的。
像我们讨论的一样,工作集中需要高并发的情况下,在云中不太合适。每条语句只在一个CPU上执行,那么语句的相应时间受到CPU速度的影响。这个时候需要强并且多个CPU,我们都知道MySQL InnoDB并不会将负载分配到多个CPU上。但是有多个核心还是很有帮助的。
工作集中需要更多的I/O,在云中表现不是很好。对于CPU的资源我们是无法控制的,但I/O 可以通过添加更多的内存来降低。有了足够的内存,读取的内容可以从内存中取得,减少读和写请求的IO,多个写入操作可以利用内存来进行合并并用一次IO操作完成。但是这个时候机器的预热时间需要很长。几个小时或者几天都有可能。
你可能会想为了提高IO性能可以利用条带或者镜像的方式的磁盘 即RAID,但是这样等到达某个点的时候,我们可能会增加更多的磁盘。这样可能会增加故障率,一个部分的出现恶化,会影响到整个系统。在应用端,我们可以通过优化程序来减少IO需求,设置变量:innodb_flush_logs_at_trx_commit=2  sync_binlog=0 或者移动redolog 和 binary logs 到其他的磁盘。升级MySQL,更高版本有更好的IO性能和更少的内部瓶颈。比如Percona 能够提供更好的方便,在buffer bool中预热更短,
最后,一个增长的应用早晚会到分片的时候。但是尽量避免分片,如果实在不行的话,就从云平台上迁移下来.


MySQL Database as  a Service (DbaaS)
越来越多的公司将他们的DB作为云平台的资源,尽管在这一章我们花费大量时间来测试IaaS,但它已经很快的商业化,我们期待有更多的将重点转移至DBaaS上来,下面有家平台提供者:
Amazon  RDS
其实它就是MySQL EC2 EBS的组合。
FathomDB  (http://fathomdb.com)
Xeround (http://xeround.com)






本文转自 位鹏飞 51CTO博客,原文链接:http://blog.51cto.com/weipengfei/1060212,如需转载请自行联系原作者

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5月前
|
监控 安全 关系型数据库
微服务+Java+Spring Cloud +UniApp +MySql智慧工地综合管理云平台源码,SaaS模式
微服务+Java+Spring Cloud +UniApp +MySql智慧工地综合管理云平台源码,SaaS模式
157 0
|
12月前
校园电商物流云平台 毕业设计 JAVA+Vue+SpringBoot+MySQL(二)
校园电商物流云平台 毕业设计 JAVA+Vue+SpringBoot+MySQL
|
12月前
|
JavaScript Java 关系型数据库
校园电商物流云平台 毕业设计 JAVA+Vue+SpringBoot+MySQL(一)
校园电商物流云平台 毕业设计 JAVA+Vue+SpringBoot+MySQL
|
监控 JavaScript 前端开发
【JAVA】基于微服务架构的智慧工地云平台源码带APP(springcloud+VUE+mysql+mybatis plus+redis)
智慧工地源码 后端:java + spring boot + mybatis plus + mysql + kafka+ redis + xxl-job + MQTT。 前端:vue + flutter。 智慧工地云平台,人机料法环是智慧工地中常用的概念,分别代表了人员、机械、材料、方法和环境。在施工过程中,通过有效地整合人员、机械设备、材料和工法等要素,并结合科学合理的管理手段,以实现高效、安全、环保和可持续的建筑施工。
|
人工智能 运维 监控
Java智慧工地云平台源码(微服务+Java+Spring Cloud +UniApp +MySql)
Java智慧工地云平台源码(微服务+Java+Spring Cloud +UniApp +MySql)
466 0
|
关系型数据库 MySQL
openStack云平台虚拟桌面galera mysql 3节点集群实例实战 调试完成
被复制节点:  /usr/local/mysql/bin/mysqld_safe --wsrep_cluster_address=gcomm:// >/dev/null &复制节点01:  service mysql start --wsrep_cluster_address="gcomm://30.
1021 0
|
23天前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
|
25天前
|
存储 SQL 关系型数据库
使用MySQL Workbench进行数据库备份
【9月更文挑战第13天】以下是使用MySQL Workbench进行数据库备份的步骤:启动软件后,通过“Database”菜单中的“管理连接”选项配置并选择要备份的数据库。随后,选择“数据导出”,确认导出的数据库及格式(推荐SQL格式),设置存储路径,点击“开始导出”。完成后,可在指定路径找到备份文件,建议定期备份并存储于安全位置。
182 11
|
20天前
|
存储 SQL 关系型数据库
MySQL的安装&数据库的简单操作
本文介绍了数据库的基本概念及MySQL的安装配置。首先解释了数据库、数据库管理系统和SQL的概念,接着详细描述了MySQL的安装步骤及其全局配置文件my.ini的调整方法。文章还介绍了如何启动MySQL服务,包括配置环境变量和使用命令行的方法。最后,详细说明了数据库的各种操作,如创建、选择和删除数据库的SQL语句,并提供了实际操作示例。
59 13
MySQL的安装&数据库的简单操作