方案对比
目标
MySQL的主要功能要求主要是
- 支持二维表存储结构;
- 支持事务,遵循 ACID(原子性、一致性、隔离性、持久性)特性;
- 支持通过SQL语言操作关系型数据库,支持数据操作语言 (DML) 和 数据定义语言 (DDL);
- 支持高可用性配置,支持主备复制,可实现节点自动恢复功能;
- 支持预定义索引加快查询操作;
- QPS每秒查询率(Query Per Second) 大于1000;
- 软件版本满足甲方安全要求;(需要项目进一步明确,最好MySQL 5.6和5.7都能支持)
- 支持统一管理界面进行统一运维管理等操作。
对比简述
挑选一个功能比较完备、可靠性比较高的开源MySQL Operator
MySQL类型的Operator非常有限,考虑到开源和License需求(Apache、MIT相对比较友好,GPL可以考虑但是要甄别方案)
候选方案:
- Oracle 开源mysql-operator实现 https://github.com/oracle/mysql-operator
- PlanetScale (https://operatorhub.io/operator/planetscale)以及背后支持的Vitess (https://vitess.io/docs/)
- 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