专栏名称: 程序员鱼皮
鹅厂全栈开发,持续分享编程技法和实用项目
目录
相关文章推荐
助研空间  ·  【PNAS】哥伦比亚大学Dennis ... ·  2 天前  
助研空间  ·  【PNAS】哥伦比亚大学Dennis ... ·  2 天前  
东方电气  ·  东方e闻丨获国家最高级别EBS“三星”认证 ·  4 天前  
东方电气  ·  东方e闻丨获国家最高级别EBS“三星”认证 ·  4 天前  
笔记侠  ·  钟睒睒,重回中国首富! ·  1 周前  
北京石墨烯研究院  ·  钢铁研究总院领导一行到BGI座谈交流 ·  1 周前  
51好读  ›  专栏  ›  程序员鱼皮

MySQL 已经进化到这种程度了么?

程序员鱼皮  · 公众号  · 科技自媒体 数据库  · 2024-10-21 20:42

正文

大家好,我是程序员鱼皮。MySQL 是后端程序员必备的关系型数据库管理系统,有了 MySQL 之后,数据就可以像表格一样结构化地持久化存储。而且还能将数据共享给其他用户使用,同时还能保证数据信息的一致性以及完整性。

就像我们的编程导航网站,用户发布的文章、评论等信息都存储在 MySQL 中:

如何搭建 MySQL 呢?

很多编程初学者会选择手动安装部署 MySQL,需要先通过安装包或 Linux 自带的包管理器安装 MySQL,然后初始化数据库,再配置好对应的配置文件等等操作,非常麻烦!

还有更快的方式,直接在自己的服务器中使用 Docker 部署 MySQL,但是操作不当的话很容易造成数据丢失、或者服务的中断。

当然,想防止数据丢失、保证服务的可用性,你可以选择搭建一个集群。但是那就更麻烦了!

而无论是使用 Docker 部署还是手动搭建 MySQL,都需要自己维护,出现任何问题都需要自己花时间去解决。如果出现一些恶意攻击、数据丢失的特殊情况,那就真的是汗流浃背了。

所以,在企业中一般都是有专业的运维同学来维护 MySQL。但如果是编程学习者、个人开发者、或者像我们一样的小团队,没有运维,怎么办呢?

这时,我们就可以选择一个合适的第三方云服务,比如我们团队使用的是腾讯云 MySQL,不仅能一键使用 MySQL 服务,背后还有大厂专业团队帮你运维,能节省很多时间精力,专注于业务开发。

下面就以腾讯云 MySQL 为例,带大家入门云数据库服务。

云数据库服务入门

相比于传统自己部署和运维的数据库服务,云数据库服务提供了很多实用的功能,比如:

  • 可视化管理数据和资源
  • 配置监控告警
  • 自动备份恢复,保证数据的安全可靠

下面分别为大家演示。

1、可视化管理

登录腾讯云的控制台,可以看到在云数据库服务中提供了 web 界面管理,在这里可以管理数据库:

如果自己搭建 MySQL,稳定性难以保证不说,我们还很难关注到数据库的运行状态,不知道它有没有摸鱼,也不知道有没有被攻击。但是如果用了 MySQL 云服务,就可以直接在平台上查看到数据库的资源利用情况:

我们团队平常也会利用腾讯云 MySQL 的监控查看下系统有没有什么慢 SQL:

2、监控告警

如果 MySQL 资源不足,比如磁盘空间不足或者内存不足,自己搭建的  MySQL 肯定不会主动告知用户,只有等它自己宕机之后用户来反馈才能知道。但是腾讯云的 MySQL 可以很方便地实现监控告警:

而且还可以分级告警,设置 80%、90%、95% 阈值告警:

3、数据安全

腾讯云还可以进行自动备份,方便在出现问题时及时回滚,这也给了我们团队更多的安全感:

而且当服务体量逐渐增大的时候,还可以快速的进行数据库升级:

正因为有了这些功能,我们团队在遇到数据库相关问题的时候,才可以更快速、更便捷地的定位问题,也不需要专业的运维指导。而且现在腾讯云还有一些优惠活动,满 259 元立减 259 元,按最小规格购买数据库实例计算,最终购买集群版仅需 99 元。

MySQL 集群版

前面提到,为了防止数据丢失、保证服务的可用性,我们可以搭建 MySQL 集群。

什么是 MySQL 集群呢?

其实很好理解,假如我们的项目有 1 亿条数据,都放到单个库表中查询会非常慢;这时我们就可以将数据拆分为 10 份,每份只存 1 千万条,分别放到不同的 MySQL 数据库中。这些数据库组合在一起,就能同时存储和处理比单个 MySQL 更多的数据,这就是集群。

如果担心数据丢失、或者服务中断,就可以复制主数据库节点,得到多个从节点,主节点挂了,从节点顶上,就能提高系统的可用性。

就像以前鱼皮一个人开发项目,鱼皮累倒了,项目就停工了;现在鱼皮带一个团队开发项目,一个人请假,其他人顶上就行,外部用户完全感受不到我们团队的变化。

为什么要使用 MySQL 集群?

除了我们刚刚说的提高读写性能以及防止数据丢失,MySQL 集群的优势还有很多,下面我简单介绍一些比较重要的优势:

1、高可用性

如果 MySQL 发生故障,那么整个网站都将无法提供服务,而有了 MySQL 集群后,可以配置主从复制,一旦主节点故障,从节点可以迅速接管,确保用户可以无感知的继续使用服务。

2、负载均衡

如果请求非常频繁,可以通过 MySQL 集群将请求分散到多个从节点,进而减轻主节点的压力,提升响应速度。

3、可伸缩性

随着用户量的增长,数据量也会随之增长,这时候 MySQL 集群就可以进行扩容处理,纵向增加数据库配置或者横向增加数据库节点,就可以满足更多用户的使用。

MySQL 集群版服务

MySQL 集群虽然有很多优点,但是搭建集群的过程非常繁琐,而且还需要专门找人来维护这个集群,所以不如将专业的事交给专业团队,直接选择更加成熟的云服务。腾讯云也有专业的 MySQL 集群版服务,下面介绍一下它的优势。

1、快速扩容

在双十一大促期间,数据访问量激增,一台 MySQL 无法承受如此大的请求压力。这时,我们通常需要对数据库进行扩容。如果是自己搭建的 MySQL,短时间内很难完成扩容,处理起来会非常困难。对于秒杀活动来说,每  1 毫秒都至关重要。如果有服务能够快速扩容,就能将损失降到最低。

腾讯云的 MySQL 集群不仅支持快速扩缩容,其横向扩容能力还能实现 异步 数据复制,无论数据量多大,添加只读节点的时间也不会超过一分钟。

2、备节点只读

在传统架构中,备节点通常不支持读写,也没有访问地址。这种设计虽然能保证主节点出现问题时备节点能迅速接管,但在平常却无法访问,完全就是资源浪费。而腾讯云 MySQL 集群版的备节点不仅支持主备切换,还允许在未成为主节点时进行读操作,进而分担读请求的压力。

3、性能升级

近期,腾讯云对整体的 MySQL 性能进行了优化。首先就是将计算能力和存储能力进行解耦,也就是当计算能力不足时,只需要升级计算能力即可,不需要额外花费资源升级存储能力,提升了资源的利用率。

其次腾讯云 MySQL 集群版引入了原子写的能力,在 只写场景 下的性能提升最为明显:

同时,在读写场景下,性能也稳超未开启原子写的 TPS(吞吐量):

除了读写性能外,成本也是开发者关注的。腾讯云 MySQL 集群版引入了腾讯自研的「悟净」内存压缩能力,节省了 6% ~ 11.2% 的内存。

此外,官方还优化了 MySQL 的锁机制,减少了在多核处理器上竞争资源时的性能损失,提升了整体响应速度和 QPS(每秒平均请求数)。

涉及的专业名词可能比较多,总之大家只需要知道 —— MySQL 又进化了。优化是永无止境的!

最后

腾讯云的 MySQL 服务不仅提供了数据库的监控系统,还可以免费帮我们维护数据。最重要的是它还为我们提供了足够的备份空间,保证了足够的容错能力。

我也给朋友们争取了一些腾讯云的优惠活动,大家可以直接扫码领取 259 元优惠券:

不知道大家都怎么搭建 MySQL 呢?是像鱼皮一样直接用云服务的数据库,还是 Docker 搭建 MySQL,还是自己手动部署 MySQL?欢迎大家留言评论。

往期推荐

24 年最新项目,手把手教程

这款程序员面试刷题工具,火了!

我的编程学习小圈子

超 10 万人在用的简历模板,绝了

创业一年半,我的团队终于走向正轨了!

看了我的简历指南,面试率翻倍

动手做个 RPC 框架,并不难