MySQL 是世界上最受欢迎的开源关系型数据库之一。这得益于它在电子商务网站、社交媒体和应用中的广泛使用,包括 Drupal、Joomla、Magento 和 WordPress。它也是广泛使用的 Linux-Apache-MySQL-PHP/Perl/Python (LAMP) Web 应用技术栈的重要组成部分,LAMP 为许多热门应用、网站和服务提供支持。它被 DB-Engines 评为全球第二受欢迎的数据库。
了解 Google Cloud 的托管式关系型数据库Cloud SQL for MySQL 如何帮助您降低运营成本并提高效率。
MySQL 是一种开源关系型数据库管理系统。与其他关系型数据库一样,MySQL 将数据存储在由行和列组成的表中。用户可以使用结构化查询语言(通常称为 SQL)定义、操作、控制和查询数据。由于 MySQL 是开源的,因此它的大量功能是在超过 25 年与用户密切合作的过程中开发出来的。
MySQL 是开源的,这意味着按照 GNU 通用公共许可条款,该工具可以免费使用。这也意味着,任何人都可以根据自己的使用需求自由修改软件的源代码。这使得 MySQL 分支为其他数据库变体(例如 MariaDB 和 Percona Server for MySQL)。MySQL 也可以通过其他许可用于商业用途。
MySQL 所属的数据库类别称为关系型数据库管理系统 (RDBMS)。关系型数据库是信息的集合,它以预定义的关系组织数据,数据存储在一个或多个由列和行构成的表(或称“关系”)中,用户可以轻松查看和理解不同数据结构之间的关系。关系是不同表之间的逻辑连接,根据这些表之间的交互建立。
MySQL 是作为商业编程语言 SQL 的扩展而创建的,SQL 基于 Edgar F. Codd 在论文中描述的关系模型。由 David Axmark、Allan Larsson 和 Michael Widenius 成立的瑞典公司 MySQL AB 于 1995 年开发并发布了 MySQL。“MySQL”这个名称是 Michael Wildenius 女儿的名字“My”和结构查询语言 (SQL) 的组合。Sun Microsystems 于 2008 年收购了 MySQL AB。Oracle Corporation 又于 2010 年收购了 Sun Microsystems,因此 MySQL 现在属于 Oracle Corporation。
MySQL 最初使用 C 和 C++ 编程语言进行开发,由于它在许多开源和专有操作系统中可用,因此多年来它的众多版本广受欢迎。最新的数据库版本 MySQL 8.0 版于 2018 年发布。
多年来,MySQL 项目因各种原因多次产生过分支,有些分支甚至已经不复存在。在存留的分支项目中,最热门的是 MariaDB 和 Percona Server for MySQL。出于对 Oracle 收购后 MySQL 商业化的担忧,MySQL 的原创始人创建了 MariaDB 分支,以确保 MySQL 保留开源状态。Percona Server for MySQL 是 MySQL 的另一个开源发行版,它旨在保持与 MySQL 的紧密兼容性。详细了解 MySQL 的版本以及围绕 MySQL 的整个生态系统。
用户可以通过图形界面 (GUI) 或命令行界面工具访问 MySQL。
图形界面 (GUI)
与在命令行界面中使用基于文本的命令不同,GUI 提供由按钮和交互微件构成的集成式环境,使查询和应用开发变得十分直观。MySQL 开源项目和第三方集成商开发了许多 MySQL GUI,其中较为热门的一个是由 MySQL AB 开发的 MySQL Workbench,它也是开源的。其他广为人知的 GUI 包括 phpMyAdmin(一款用于 Web 应用开发的热门管理工具)和 HeidiSQL(一款开源管理工具,可用于管理除 MySQL 之外的其他数据库)。
命令行
用户还可以通过命令行工具访问 MySQL。 这些工具也称为 MySQL 实用程序,随 MySQL 发行版一起提供,可在 MySQL shell 或其他命令行界面工具(如 Percona Toolkit)中使用文本命令进行调用。
用户可以使用开源代码在自己的物理机器上手动部署 MySQL,也可以通过下载某个打包的发行版来进行部署。MySQL 通常安装在单个实例或机器上,以纵向扩缩作为提升性能的主要方式。但是,MySQL 可以设置为复制配置,其中包含一个主要节点和多个次要节点,次要节点可以在发生实例故障时升级为主要节点。
托管 MySQL 的另一种常用方式是通过云服务提供商 (CSP) 托管。在云服务提供商的环境中部署 MySQL 有多种方式。一种方式是直接在虚拟机上安装 MySQL 并自行管理。另一种方式是使用云服务提供商的代管式产品,云服务提供商负责处理 MySQL 管理中的许多运维任务,可以极大地简化 MySQL 的管理工作。Google Cloud 提供的代管式服务称为 Cloud SQL。Cloud SQL for MySQL 是一项全代管式数据库服务,可帮助您在 Google Cloud 上设置、维护、管理和控制 MySQL 关系型数据库。它提供关于安全性、高可用性和可观测性的增值服务,可以减少数据库管理员的重复劳动并帮助组织进行创新。 如需了解如何设置 MySQL 的 Cloud SQL 实例,请参阅这篇有关设置 Cloud SQL for MySQL 实例的最佳实践的文章。借助为用户提供的众多工具和选项,您可以非常轻松地从本地 MySQL 或云服务提供商的其他数据库迁移到 Cloud SQL for MySQL。
如需了解 Cloud SQL for MySQL 的全代管式产品与自行管理的 MySQL 的优点和差异,请参阅有关 MySQL 托管选项的文章。
MySQL 快速、可靠、可扩缩且易于使用。 MySQL 可以在桌面设备或笔记本电脑上与您的其他应用、Web 服务器等一起顺畅运行,几乎不需要关注。如果您将整个机器专门用于 MySQL,您可以调整设置以充分利用所有可用的内存、CPU 性能和 I/O 容量。MySQL 还可以扩容至机器集群,并通过网络连接。
使用 MySQL 管理和存储数据还有许多其他优势,包括:
高可用性
MySQL 中的高可用性 (HA) 是指数据库引擎继续运行而不发生故障的能力。MySQL 中的 HA 设置可能非常复杂,具体取决于每个用户的特定可用性要求以及 MySQL 的部署方式。如需在 MySQL 中设置 HA,用户需要考虑各个方面,包括数据复制、故障检测、故障切换和故障恢复机制,以及在故障切换后将数据库流量重定向到次要实例。Cloud SQL for MySQL 让您可以轻松地实现高可用性。详细了解 Google Compute Engine 上 MySQL 的高可用性或 Cloud SQL for MySQL 的全托管式高可用性体验。
安全性
MySQL 的安全考虑因素范围十分广泛。一些重要的考虑因素与数据保护有关,例如使用数据冗余机制以及密码和特权、访问权限控制及网络安全等常规安全流程保护数据免遭损坏。详细了解 Google Cloud 的全托管式 MySQL 产品 Cloud SQL for MySQL 中的安全性。
备份和恢复
MySQL 使用多种机制(包括第三方工具)支持数据备份和恢复。备份和恢复 MySQL 的一些方法包括通过 mysqldump 实用程序、使用二进制日志进行增量备份以及使用复制。Cloud SQL for MySQL 提供自己的备份和恢复功能,可支持自动备份或按需备份。
灵活性
您可以轻松添加、更新或删除表和关系以及在必要时对数据进行其他更改,而无需更改整个数据库结构或影响现有的应用。
易用性
您可以轻松使用 SQL 运行复杂的查询,即便是新手用户也可以直观地与数据库进行交互。
性能优化是管理任何数据库的一个重要方面。MySQL 通过提供许多功能和调整选项,使开发高性能应用变得轻而易举。请参阅这篇有关 MySQL 性能优化提示的文章,详细了解此类功能。另外这篇有关查询调整的文章也提供了具体的性能最佳实践。
MySQL 支持 ACID(原子性、一致性、隔离性、耐用性)属性以确保数据有效(无论是否存在错误、故障或其他潜在灾难)。
MySQL 具有多样的功能,因此可用于许多不同的应用场景。下面详细介绍了一些应用场景。
如今,许多 Web 应用使用开源 LAMP 技术栈构建,而 MySQL 是这些应用的重要组成部分。LAMP 使用 Linux 作为操作系统,Apache 作为 Web 服务器,MySQL 作为数据库,以及 PHP、Python 或 Perl 作为编程语言。LAMP 可帮助开发者构建需要从 MySQL 等数据库检索最新信息的动态 Web 应用。信息可以包括用户账号、用户详细信息、商品名称、客户记录、销售额等。使用 SQL,用户可以轻松地访问和操作存储在数据库中的信息。如需了解详情,请参阅 LAMP 和如何使用 LAMP 构建 Web 应用。
如今,许多应用都需要一个能够迅速处理大量用户的大量数据库事务的数据库,例如 MySQL。MySQL 等 OLTP 数据库是许多日常 Web 事务(包括金融交易、出行预订、记录保留等)的基础。为了支持在线事务处理应用场景,MySQL 遵循 ACID 原则,支持 XML 和 JSON、存储过程、聚类和分区。它还提供了各种存储引擎选项,让您可以灵活地集成各种表类型的数据。
电子商务应用需要管理用户、消费者信息、财务数据,还需要分析趋势以防止欺诈活动,MySQL 是这类应用的常用数据库。您可以使用 MySQL 等关系型数据库将信息整理到不同的表(商品、客户、订单)中,并且可以根据需要添加其他表。Airbnb、Uber、Netflix、Booking.com、Spotify 和 eBay 等某些全球大型企业使用 MySQL 为其电子商务应用提供支持。您还可以在混合部署中部署 MySQL,以完全支持电子商务应用场景。MySQL 可用作结构化数据的关系型数据库,也可用作非结构化数据(例如商品详情或营销信息)的非关系型数据库。
SaaS 应用通常是全天候运行,因此它们要求最短最短停机时间,安全性较高,并且能够随着需求的变化而扩缩。MySQL 易于部署、管理和扩缩,因此已成为构建 SaaS 应用的热门数据库选项。由于它是开源的,开发者可以快速开始使用,而无需支付专有软件的许可费。MySQL 全球社区非常活跃,并且贡献了许多提供额外功能的插件。
MySQL 是 WordPress 和 Drupal 等内容管理系统 (CMS) 的热门数据库选项。CMS 将博文、页面、图片、评论、类别、标记、自定义字段、用户和其他设置存储在 MySQL 数据库中。由于 CMS 通常每天有数千个甚至数百万个账号,因此 MySQL 可以一次性处理大型表和多个查询。随着关注人数的增长,MySQL 可以纵向或横向扩容以满足您的业务需求。
社交媒体应用的一个重要方面是需要连接各种数据存储区,例如用户、群组和评论。这种应用场景促使社交媒体应用优先选择关系型数据库,而 MySQL 则是上佳选择。一些知名的例子包括 Twitter、Pinterest 和 LinkedIn。
了解 Cloud SQL for MySQL 如何帮助您进行创新。 查看文档