跳转至

方案对比

目标

MySQL的主要功能要求主要是

  1. 支持二维表存储结构;
  2. 支持事务,遵循 ACID(原子性、一致性、隔离性、持久性)特性;
  3. 支持通过SQL语言操作关系型数据库,支持数据操作语言 (DML) 和 数据定义语言 (DDL);
  4. 支持高可用性配置,支持主备复制,可实现节点自动恢复功能;
  5. 支持预定义索引加快查询操作;
  6. QPS每秒查询率(Query Per Second) 大于1000;
  7. 软件版本满足甲方安全要求;(需要项目进一步明确,最好MySQL 5.6和5.7都能支持)
  8. 支持统一管理界面进行统一运维管理等操作。

对比简述

挑选一个功能比较完备、可靠性比较高的开源MySQL Operator

MySQL类型的Operator非常有限,考虑到开源和License需求(Apache、MIT相对比较友好,GPL可以考虑但是要甄别方案)

候选方案:

  1. Oracle 开源mysql-operator实现 https://github.com/oracle/mysql-operator
  2. PlanetScale (https://operatorhub.io/operator/planetscale)以及背后支持的Vitess (https://vitess.io/docs/
  3. MyCAT (http://www.mycat.org.cn/)相对功能比较完善,但是可靠性(软件质量)、容器化和Operator的实现工作量(是否有开源实现?)等几个方面需要进一步评估

详细对比:

对比项 mysql/mysql-operator planetscale/vitess-operator radondb/radondb-mysql-kubernetes percona/percona-xtradb-cluster-operator percona/percona-server-mysql-operator bitpoke/mysql-operator
github 地址 https://github.com/mysql/mysql-operator https://github.com/planetscale/vitess-operator https://github.com/radondb/radondb-mysql-kubernetes https://github.com/percona/percona-xtradb-cluster-operator https://github.com/percona/percona-server-mysql-operator https://github.com/bitpoke/mysql-operator
文档地址 https://dev.mysql.com/doc/mysql-operator/en/
github starts 405 201 230 386 29 810
自动、按需备份
自动故障检测和恢复
从备份还原
支持异步、半同步、同步复制
代理方案 MySQL Router
Self healing cluster
Multiple version
Multiple namespaces
Multiple replicas
Multimaster
RBAC support
TLS support
Custom config
Backup/Restore
Create cluster from backup
Monitoring support
k8s 1.18+
msyql version support
monitor metrics
开源 licence
insufficient v1
最新版本 8.0.30-2.0.6

CAP 理论

https://zhuanlan.zhihu.com/p/33999708

https://www.zhihu.com/question/54105974

主流方案

https://github.com/search?o=desc&q=mysql-operator&s=stars&type=Repositories

  • 官方方案:https://github.com/oracle/mysql-operator -> https://github.com/mysql/mysql-operator
  • Percona 方案:https://github.com/percona/percona-xtradb-cluster-operator
  • Randondb 方案:https://github.com/radondb/radondb-mysql-kubernetes

MySQL 主流版本及分支:

https://zhuanlan.zhihu.com/p/37470050#:~:text=%E7%9B%AE%E5%89%8D%E4%B8%9A%E7%95%8C%E7%9A%84MySQL%E4%B8%BB%E6%B5%81,MySQL%E3%80%81Percona%20Server%E3%80%81MariaDB%E3%80%82

(上述文章发布于 2018-05-30 10:36 参考价值不大)

https://blog.csdn.net/dongcheng_2015/article/details/119866808 (介绍了 xtardb 引擎, 发布于 2021-08-23 14:11:39 )

https://www.superweb999.com/article/785734.html(介绍存储引擎,发布于 2022-04-29 13:12:17)

https://mariadb.com/kb/en/why-does-mariadb-102-use-innodb-instead-of-xtradb/#:~:text=InnoDB%20has%20caught%20up%20and,where%20innodb_thread_concurrency%20control%20is%20disabled. (MariaDB 开始放弃 xtardb,转回 Innodb,since 10.2 )

转回使用 https://stackoverflow.com/questions/43604290/why-mariadb-10-2-uses-again-innodb-instead-of-percona-xtradb

目前业界的MySQL主流分支版本有Oracle官方版本的MySQL、Percona Server、MariaDB

  • MySQL

MySQL 8.0在新特性上没有新元素的加入,但是它对MySQL的源代码进行了重构

最突出的一点就是对MySQL Optimizer优化器的改进,支持隐藏索引等功能。针对优化器的改进是在之前的版本中从来没有触碰过的。而且MySQL 8.0为了对优化器做更多的特性支持,还加入了性能直方图这个新的元素,让MySQL Server层和存储引擎层配合得更加紧密。MySQL 8.0之后我们就真的要和MyISAM这个存储引擎说再见了

  • Percona Server

Percona Server是MySQL重要的分支之一,它基于InnoDB存储引擎的基础上,提升了性能和易管理性,最后形成了增强版的XtraDB引擎,可以用来更好地发挥服务器硬件上的性能。

所以Percona Server也可以称为增强的MySQL与开源的插件(plugin)的结合。由于官方版本的MySQL在一些特性的使用上有一定的局限性,需要收费。所以Percona Server就有了一定的市场占有比例,也比较受大家的欢迎。像一些常用的工具包xtrabackup、percona-toolkit等,在生产环境中是DBA的必备武器。

还有像XtraDB-Cluster这种支持多点写入的强同步高可用集群架构,真正实现实时同步的过程,解决了MySQL主从复制之间经常出现并让人头疼的延迟问题。而且Percona还收购了TokuDB公司,TokuDB存储引擎非常优秀,淘宝网、阿里云上大量在使用这款存储引擎。它支持数据压缩,支持hot scheme modification,它的高扩展性和优秀的查询插入性能都是我们喜欢它的地方。

与MariaDB的理念不同,Percona Server是紧跟MySQL的,在兼容的路上走得很远,而且自己实现了很多只有MySQL企业版中才有的功能,例如线程池,审计插件等功能。

Percona Server默认引擎是XtraDB,这是InnoDB的增强版,完全兼容InnoDB。

  • Mariadb

Mariadb是由MySQL创始人Monty创建的,是一款高度兼容的MySQL产品,主要由开源社区维护,采用GPL授权许可。Oracle把MySQL收购之后,为避免MySQL在开源粒度上的下降,MariaDB由此而生。它不仅仅是MySQL的一个替代品,还创新与提高了MySQL原有的技术。既包含了Percona的XtraDB存储引擎,还包含TokuDB存储引擎、Spider水平分片存储引擎等多种存储引擎,并且还有一些复制功能上的新特性,比如基于表的并行复制、Multi-source Replication多源复制、Galera Cluster集群。

  • Drizzle

Drizzle,是从MySQL衍生出来的一个数据库服务器,一个精简版的MySQL分支,Drizzle项目的宗旨是构建一个“更精练、更轻量、更快 速”的MySQL版本,它的扩展性和易用性与MySQL相当,但为了提高性能和扩展性,它从原来的核心系统里移除了部分功能。 Drizzle 也是开源数据库联盟(Open Database Alliance)成员。

性能对比:https://www.percona.com/blog/2010/01/13/innodb-innodb-plugin-vs-xtradb-on-fast-storage/ (时间比较久了,参考价值不会很大)

https://cloud.tencent.com/developer/article/1054463

Openshift 的支持:

  • Grds 方案
  • Percona 方案
  • Vitess 方案

国产数据库支持

  • 国产数据库排行 - 墨天轮

国产数据库排名:https://www.modb.pro/dbRank

  • 国产数据库排行 - 墨天轮tidb

https://docs.pingcap.com/tidb-data-migration/v1.0/get-started (版本很老了)

XtraDB

https://docs.percona.com/percona-server/8.0/feature_comparison.html