前言:
本文主要介绍MySQL及其两个重要分支Percona server和MariaDB的公司信息、发展历史、产品、架构等。
MySQL
公司介绍:
MySQL 是一个关系型数据库,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。
https://www.mysql.com/about/
MySQL是世界上最流行的开源数据库。
凭借其经验证的性能、可靠性和易用性,MySQL已成为基于web的应用程序的领先数据库选择,应用于Facebook、Twitter、YouTube、Yahoo等。
Oracle推动MySQL的创新,提供新的功能,为下一代web、云、移动和嵌入式应用程序提供动力。
官网地址:
https://dev.mysql.com/
发展历史:
MySQL数据库发展历史
1.1994年:由Michael Widenius创立了一个称为MySQL AB的公司,目的是创建一种轻量级的数据库管理系统。
2.1995年:MySQL 1.0发布,这是MySQL的第一个版本,提供了基本的查询功能,只是用于一些与数据存储有关的小项目。
3.1996年:MySQL 3.0发布,引入了许多新功能,例如外键、存储过程、触发器等。
4.2000年:MySQL 4.0发布,大幅度提高了性能和稳定性。MySQL开始以开源免费的形式发布,成为开源数据库的一个重要选择。MySQL也因此获得了广泛的用户群。MySQL不仅公布自己的源代码,并采用GPL(GNU General Public License)许可协议,正式进入开源世界。同年4月,MySQL对旧的存储引擎ISAM进行了整理,将其命名为MyISAM。
5.2001年,集成Heikki Tuuri的存储引擎InnoDB,这个引擎不仅能持事务处理,并且支持行级锁。后来该引擎被证明是最为成功的MySQL事务存储引擎。MySQL与InnoDB的正式结合版本是4.0
6. 2003年:MySQL AB发布了MySQL 4.1版本,提供了更多的管理功能和新功能。
7. 2005年:MySQL AB推出了MySQL 5.0版本,引入了更多的高级功能,例如视图、存储过程和触发器。
8. 2008年:Sun Microsystems以10亿美金收购了MySQL AB。MySQL的开发和维护由Sun公司负责。这个阶段MySQL的功能继续得到改进和增强,包括InnoDB存储引擎和查询缓存。
9. 2009年:Oracle以74亿美元收购了Sun Microsystems,从而获得了MySQL的所有权。自此MySQL数据库进入Oracle时代,而其第三方的存储引擎InnoDB早在2005年就被Oracle公司收购。
10. 2013年:MySQL 5.6发布,这是一个重要的版本,提供了多个新功能,例如更好的性能和更高的可用性。
11. 2015年:MySQL 5.7发布,引入了更多的新功能和性能改进,例如JSON支持、更好的查询优化等。
12.2016 年:MySQL 发布8.0.0 版本。
13.2023年:当前最新稳定版本8.0.34,最新开发版本8.1.0。
在 MySQL 两次易主的过程中,开发者们普遍担心某一天 MySQL 会成为一个非开源的收费版本,所以在此期间出现了很多类 MySQL 的 RDBMS。
然而到目前为止,主要有两个久经考验的 RDBMS 分别为:Percona server for MySQL 和 MariaDB。
产品介绍:
MySQL Enterprise Edition:企业版
MySQL Cluster CGE:高级集群版
MySQL Community Edition:社区版
企业版和社区版对比
企业版本和社区版都是由同一家公司(Oracle)提供,遵循相同的版本编号体系。
1. 许可证
社区版的许可证是GPLv2,即GNU通用公共许可证第二版。任何人都可以自由地使用、复制、修改和分发MySQL社区版,甚至可以将其用于商业用途。企业版则需要购买许可证。
2. 功能
MySQL社区版和企业版在功能上有所不同。企业版具有更多的功能,如高可用性、在线备份、安全加密、性能调整等。这些功能可以增强MySQL的性能和可靠性,适合于企业级应用程序。
3. 支持
MySQL社区版是由社区支持的,用户可以在MySQL社区论坛上获得帮助。企业版则提供了商业支持,包括技术支持和咨询服务。企业版用户可以获得更快、更专业的支持。
4. 更新和维护
MySQL社区版的更新和维护是由社区贡献者完成的。企业版则由MySQL的开发者和维护人员完成。企业版的更新和维护更加及时和可靠。
5. 价格
MySQL社区版是免费的,而企业版需要购买许可证。企业版的价格根据不同的许可证类型和功能而有所不同。MySQL企业版的价格通常比其他商业数据库管理系统要低得多,这使得它成为许多企业的首选。
企业版介绍:
https://www.mysql.com/products/enterprise/
MySQL Enterprise Editio(企业版)
MySQL Enterprise Edition包括最全面的高级功能、管理工具和技术支持,以实现MySQL最高级别的可扩展性、安全性、可靠性和正常运行时间。它降低了开发、部署和管理业务关键型MySQL应用程序的风险、成本和复杂性。
MySQL Enterprise Backup
MySQL Enterprise Backup通过提供数据库的在线“热”备份来降低数据丢失的风险。它支持完整、增量和部分备份、时间点恢复和备份压缩。
https://www.mysql.com/cn/products/enterprise/backup.html
MySQL Enterprise High Availability
MySQL InnoDB Cluster为您的数据库提供了一个集成的本地HA解决方案。它将MySQL Server与Group Replication、MySQL Router和MySQL Shell紧密集成,因此您不必依赖外部工具、脚本或其他组件。
MySQL Enterprise Encryption
MySQL企业加密
MySQL Enterprise Encryption提供加密、密钥生成、数字签名和其他加密功能,帮助组织保护机密数据并遵守法规要求。
MySQL Enterprise Firewall
MySQL企业防火墙
MySQL企业防火墙通过提供针对数据库特定攻击(如SQL注入)的实时保护来防范网络安全威胁。MySQL企业防火墙监控数据库威胁,自动创建已批准SQL语句的允许列表,并阻止未经授权的数据库活动。
MySQL Enterprise Audit
MySQL企业审计
MySQL Enterprise Audit使您能够快速无缝地将基于策略的审核合规性添加到新的和现有的应用程序中。您可以动态启用用户级活动日志记录,实施基于活动的策略,管理审核日志文件,并将MySQL审核与Oracle和第三方解决方案集成。
MySQL Router
MySQL Router是一种轻量级中间件,它在应用程序和任何后端MySQL服务器之间提供透明路由。它可以用于各种各样的用例,例如通过有效地将数据库流量路由到适当的后端MySQL服务器来提供高可用性和可扩展性。
MySQL Workbench
MySQL Workbench是数据库架构师、开发人员和DBA的统一可视化工具。它为服务器配置、用户管理等提供了数据建模、SQL开发、数据库迁移和全面的管理工具。
MySQL Enterprise Transparent Data Encryption (TDE)
MySQL企业透明数据加密(TDE)
MySQL企业透明数据加密(TDE)通过加密数据库的物理文件来实现静态数据加密。数据在写入存储器之前自动实时加密,从存储器读取时解密。
MySQL Enterprise Masking and De-identification
MySQL企业屏蔽和去标识
MySQL Enterprise Masking and De identification提供了一个易于使用的内置数据库解决方案,通过隐藏真实值并用替代品替换真实值,帮助组织保护敏感数据免受未经授权的使用。
......
高可用架构:
MySQL 主从复制
MySQL MGR
MySQL InnoDB Cluster
MySQL Shell,MySQL Router,MySQL Group Replication
MySQL Cluster CGE
https://www.mysql.com/cn/products/cluster/
https://www.mysql.com/cn/products/cluster/mysql-cluster-datasheet.pdf
Master High Availabilit(MHA)
MySQL结合第三方高可用软件
MHA(Master High Availability)目前在 MySQL 高可用方面是一个相对成熟的解决方案,它由日本 DeNA 公司的 youshimaton(现就职于 Facebook 公司)开发,是一套优秀的作为 MySQL 高可用性环境下故障切换和主从提升的高可用软件。
在 MySQL 故障切换过程中,MHA 能做到在 0~30 秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA 能在最大程度上保证数据的一致性,以达到真正意义上的高可用。
该软件由两部分组成:MHA Manager(管理节点)和 MHA Node(数据节点)。MHA Manager 可以单独部署在一台独立的机器上管理多个 master-slave 集群,也可以部署在一台 slave 节点上。MHA Node 运行在每台 MySQL 服务器上,MHA Manager 会定时探测集群中的 master 节点,当 master 出现故障时,它可以自动将最新数据的 slave 提升为新的 master,然后将所有其他的 slave 重新指向新的 master。整个故障转移过程对应用程序完全透明。
在 MHA 自动故障切换过程中,MHA 试图从宕机的主服务器上保存二进制日志,最大程度的保证数据的不丢失,但这并不总是可行的。例如,如果主服务器硬件故障或无法通过 ssh 访问,MHA 没法保存二进制日志,只进行故障转移而丢失了最新的数据。使用 MySQL 5.5 的半同步复制,可以大大降低数据丢失的风险。MHA 可以与半同步复制结合起来。如果只有一个 slave 已经收到了最新的二进制日志,MHA 可以将最新的二进制日志应用于其他所有的 slave 服务器上,因此可以保证所有节点的数据一致性。
Percona server
公司介绍:
Percona 公司是成立于 2006年,总部在美国北卡罗来纳的Raleigh。
Percona是原MySQL运维部总监Peter和Vadim在2006年离开后创建的,因其本身是运维出身,所以他做的这个分支基本上也是为运维人员服务的。
一些DB常用的工具XtraBackup和Percona Toolkit,都是出自此公司。
Percona公司最主要的产品还是Mysql分支产品:Percona Server。
Percona Server 声称可以"完全与 MySQL 兼容",这是与其他更改了大量基本核心 MySQL 代码的分支的最大区别。因此从理论上讲,从Mysql迁移到Percona Server,无需更改程序中的任何代码。
Percona Server可以看做是MySQL的一个分支,它为MySQL数据库服务器进行了改进,在功能和性能上有着很显著的提升,具有与MySQL企业版相媲美的特性,被认为是MySQL的高性能、高可用性替代产品。
Percona公司在MySQL数据库优化方面做了非常多的工作,例如,Percona Server在官方InnoDB存储引擎的基础上开发了XtraDB存储引擎,可以认为XtraDB是InnoDB存储引擎的增强版。
完全兼容Mysql意味着,Percona Server需要跟着Mysql 官方版本一起演进。Percona Server采取的策略是:先兼容MySQL然后再进行优化,所以用户可以很容易的从MySQL迁移到Percona Server上面,而不用去考虑兼容性的问题。
需要注意的是,Percona Server 虽然是开源的,但是他们自己管理代码,不接受外部开发人员的贡献,以这种方式确保他们对产品中所包含功能的控制。
官网地址:
https://www.percona.com/
发展历史:
2006年:Peter Zaitsev和Vadim Tkachenko启动Percona并支持MySQL;
2008年:Percona MySQL和Percona XtraDB存储引擎发布;
2009年:支持MariaDB并推出Percona XtraBackup for MySQL;
2010年:推出Percona Server for MySQL,7*24 MySQL支持;
2011年:Percona Toolkit工具包发布,首届Percona Live在旧金山举办;
2012年:Percona XtraDB Cluster(PXC)和Percona Monitoring Plugins(PMM的前身)的发布;
2013年:托管服务启动,珀科纳大学首届活动在北卡罗来纳州罗利市举行;
2015年:增加了对MongoDB的支持,并启动了 Percona Server for MongoDB;
2016年:PMM 1.0发布;
2018年:增加了对PostgreSQL的支持;
2019年:发布PMM2.0、PostgreSQL的Percona Distribution、MongoDB的PerconaBackup和PerconaKubernetes Operators;
2020年:针对Percona Distribution for MySQL 和 Percona Distribution for MongoDB的发布;
2022年:Percona Platform发布。
产品介绍:
下载地址
https://www.percona.com/downloads
产品文档:
https://www.percona.com/software/documentation
Percona Server for MySQL
https://docs.percona.com/percona-server/8.0/?_gl=1*aqfais*_gcl_au*NTk1MzExMjQuMTY5NDkyODAzNA..*_ga*MTg1NDQ2NjY1My4xNjk0OTI4MDc5*_ga_DXWV0B7PSN*MTY5NTQ0NTIxNC40LjEuMTY5NTQ0NTM3Mi4yMC4wLjA.
Percona Server for MySQL是一个免费提供的、完全兼容的、增强的、开源的插件,可以替代任何MySQL数据库。它提供了卓越和优化的性能、更大的可扩展性和可用性、增强的备份、更高的可视性和检测能力。
Percona Server for MySQL受到数千家企业的信任,能够为其最苛刻的工作负载提供更好的性能和并发性。
Percona XtraDB Cluster
https://docs.percona.com/percona-xtradb-cluster/8.0/intro.html
Percona XtraDB集群是一个完全开源的MySQL高可用性解决方案。它将Percona Server for MySQL和Percona XtraBackup与Galera库集成,以实现同步多源复制。
集群由节点组成,其中每个节点都包含跨节点同步的同一组数据。建议的配置是至少有3个节点,但也可以有2个节点。每个节点都是一个常规的MySQL Server实例(例如Percona Server)。您可以将现有的MySQL Server实例转换为一个节点,并使用该节点作为基础运行集群。您还可以从集群中分离任何节点,并将其用作常规MySQL Server实例。
Percona XtraBackup
https://docs.percona.com/percona-xtrabackup/8.0/?_gl=1*am1t68*_gcl_au*NTk1MzExMjQuMTY5NDkyODAzNA..*_ga*MTg1NDQ2NjY1My4xNjk0OTI4MDc5*_ga_DXWV0B7PSN*MTY5NTQ0NTIxNC40LjEuMTY5NTQ0NTQ3My40MS4wLjA.
Percona XtraBackup是一个开源的热备份实用程序,适用于基于MySQL的服务器,可以在计划的维护窗口中保持数据库完全可用。
无论是全天候高负载服务器还是低事务量环境,Percona XtraBackup都旨在使备份成为无缝过程,而不会中断服务器在生产环境中的性能。Percona XtraBackup(PXB)是一个100%的开源备份解决方案,为那些希望从MySQL全面、响应迅速、成本灵活的数据库支持中获益的组织提供了商业支持。
Percona Toolkit
https://docs.percona.com/percona-toolkit/?_gl=1*1571fmp*_gcl_au*NTk1MzExMjQuMTY5NDkyODAzNA..*_ga*MTg1NDQ2NjY1My4xNjk0OTI4MDc5*_ga_DXWV0B7PSN*MTY5NTQzNzM2OC4zLjEuMTY5NTQzODg5OC41OS4wLjA.
Percona Toolkit是Percona支持人员使用的高级命令行工具的集合,用于执行各种MySQL、MongoDB和系统任务,这些任务太难或太复杂,无法手动执行。
这些工具是私人或“一次性”脚本的理想替代品,因为它们是经过专业开发、正式测试和充分记录的。它们也是完全独立的,因此安装既快捷又简单,而且不安装库。
工具如下:
pt-align
pt-archiver
pt-config-diff
pt-deadlock-logger
pt-diskstats
pt-duplicate-key-checker
pt-fifo-split
pt-find
pt-fingerprint
pt-fk-error-logger
pt-heartbeat
pt-index-usage
pt-ioprofile
pt-k8s-debug-collector
pt-kill
pt-mext
pt-mongodb-index-check
pt-mongodb-query-digest
pt-mongodb-summary
pt-mysql-summary
pt-online-schema-change
pt-pg-summary
pt-pmp
pt-query-digest
pt-secure-collect
pt-show-grants
pt-sift
pt-slave-delay
pt-slave-find
pt-slave-restart
pt-stalk
pt-summary
pt-table-checksum
pt-table-sync
pt-table-usage
pt-upgrade
pt-variable-advisor
pt-visual-explain
部分工具说明:
参考:https://zhuanlan.zhihu.com/p/395574271
MariaDB
公司介绍:
成立于2009年,MySQL之父Michael “Monty” Widenius用他的新项目MariaDB完成了对MySQL的“反戈一击”。
MariaDB名称来自麦克尔·维德纽斯的女儿玛丽亚(英语:Maria)的名字。
开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。
过去一年中,大型互联网用户以及Linux发行商纷纷抛弃MySQL,转投MariaDB阵营。
MariaDB是目前最受关注的MySQL数据库衍生版,也被视为开源数据库MySQL的替代品。
MariaDB直到5.5版本,均依照MySQL的版本。因此,使用MariaDB5.5的人会从MySQL5.5中了解到MariaDB的所有功能。从2012年11月12日起发布的10.0.0版开始,不再依照MySQL的版号。10.0.x版以5.5版为基础,加上移植自MySQL 5.6版的功能和自行开发的新功能。
在存储引擎方面,10.0.9版起使用XtraDB(名称代号为Aria)来代替MySQL的InnoDB。
Percona MySQL 和 MariaDB使用的都是由percona公司开发的XtraDB,XtraDB和InnoDB完全兼容。
官网地址:
https://mariadb.com/
发展历史:
MariaDB是MySQL之父Michael Widenius(简称“Monty”)带领部分原始开发者创建的开源数据库,属于MySQL分支,并与MySQL保持高度兼容性。
2008年:Michael Widenius开发的MySQL被Sun公司以10亿美元收购;
2009年:Oracle又以74亿美元的价格收购了Sun公司。Oracle的封闭性,使得Michael Widenius担心MySQL开源受到影响,其创立Monty Program AB,并接过MySQL代码继续开发新的分支——MariaDB。
2014年:Monty Program AB与SkySQL AB合并,Michael Widenius又成立MariaDB Corporation,开始商业化运作MariaDB,他继续担任新公司的CTO,同时还兼任MariaDB基金会的CTO。
2014 年 MariaDB 10 版开始,情况大为不同。这一次,MariaDB 不再与 MySQL 版本匹配,从而抛弃了之前与 MySQL 5.1 和 MySQL 5.5 版本一致的模式。获得独立的版本体系允许 MariaDB 以更快的节奏独立创新,而不会因为与 MySQL 版本号相同而产生用户误导。例如,MariaDB 曾经有 5.2 和 5.3 两个版本,但 MySQL 没有对应的版本号。
2015 年:发布了 MariaDB 10.1 版本,
2017 年:发布了 MariaDB 10.2 版本。
此后,主版本每个 1-2 年发布一次。
2021 年:发布了 MariaDB 10.6 版。
每一个版本都提供 5 年的长期支持期限。
MariaDB 从 2021 年底开始实施 “创新版模型”。与 Ubuntu Linux 发布模式类似,每个季度发布一个短期支持版本(支持 1 年),同时还会选择性发布 LTS 版本(至少 5 年)。短期支持版本和长期支持版本遵循相同的版本编号方式。
2022 年:云数据库公司 MariaDB 与 Angel Pond Holdings 公司完成合并,并在纽交所上市。新公司更名为 MariaDB,MySQL 之父奋斗了13年终敲钟。这标志着 MariaDB 开启新篇章。
产品介绍:
对于 MariaDB,社区版由 MariaDB 基金会提供,而企业版由 MariaDB PLC 提供,采用独有的生命周期与功能配置。
为简单起见,我们将重点关注社区版。
MariaDB Enterprise Server建立在MariaDB Community Server上,并在MariaDB MaxScale数据库代理的帮助下,提供一流的性能、数据安全性、复制、集群和高可用性。
MariaDB Enterprise Server可以从单个节点扩展到全球范围,适用于任何工作负载——从记录系统(OLTP)到分析(OLAP),在任何云中:私有、公共、混合或多云。
高可用架构:
MariaDB Galera Cluster
https://mariadb.com/kb/en/what-is-mariadb-galera-cluster/
MariaDB Galera集群是MariaDB的一个虚拟同步多主集群。它仅在Linux上可用,并且仅支持InnoDB存储引擎。
功能:
虚拟同步复制
主动-主动多主拓扑
读取和写入任何群集节点
自动成员身份控制,故障节点从群集中删除
自动节点联接
真正的并行复制,在行级别
直接的客户端连接,原生MariaDB外观
MariaDB Galera集群包含以下组件:
1.MariaDB Server。
2.Galera wsrep提供商库。
Galera版本对应于每个MariaDB Server版本:
在MariaDB 10.4及更高版本中,MariaDB Galera集群使用Galera 4。这意味着wsrep API的版本是26,Galera wsrep提供程序库的版本是4.X。
在MariaDB 10.3及之前版本中,MariaDB Galera Cluster使用Galera 3。这意味着wsrep API的版本是25,Galera wsrep提供程序库的版本是3.X。
后记:
MySQL 5.7即将到达生命周期,之前不再提供补丁更新,到期后是选择升级?还是改用分支版本?国产化?决定权似乎并不在DBA手里。
当然,如果没有更换数据库的打算,升级到8.0版本是最稳妥的方案。
那么从MySQL 5.7升级到8.0有哪些需要注意的呢?
这本《MySQL DBA武林秘籍》希望对您有所帮助!
墨天轮平台,免费试读《一文掌握MySQL大版本升级全过程(5.7.36升级到8.0.32版本)》