四款 MySQL Operator 助你容器数据库
点击上方蓝字关注 👆👆
管理 Kubernetes 上运行的缓存和数据库等有状态应用程序是一项艰巨的任务。使用 Kubernetes API,您可以通过将操作知识和实践直接编码到按需代码中来构建自我管理的基础架构。例如,当 MySQL 容器 pod 发生故障时,您可以使用 Operator 进行响应并采取适当的措施使系统恢复。
Operator 是构建在 Kubernetes 之上的控制器,可以自动化和简化特定的复杂操作。它们的存在是为了向最终用户提供卓越的可扩展性以及高可用性和监控功能。
在 Kubernetes 中运行数据库变得与 Operator 无缝连接,因为它们弥合了有状态数据库和在 Kubernetes 中运行的无状态应用程序之间的差距。它们使用声明性配置格式更容易打包、部署和管理生产就绪的 MySQL 集群。它们还有助于备份、扩展和恢复,并且可以在现有 Kubernetes 集群内的任何位置运行。
MySQL Operator 有很多解决方案,可以让在 Kubernetes 上运行 MySQL 成为一种愉快的体验。其中包括甲骨文、Percona、Bitpoke 和 GrdsCloud。其中,哪些更稳定?哪些更快?哪些提供更好的功能?
本文我们将比较这些用于 Kubernetes 的顶级 MySQL Operators,并总结区分它们的特性。
官方 Oracle MySQL 运算符
Oracle MySQL Operator[1] 是一个稳定可靠的数据库管理系统,通常被视为流行 Web 主机(包括 WordPress)的默认安装。
Oracle MySQL Operator 的主要特性包括:
自我修复解决方案:Oracle MySQL Operator 可以创建和扩展在 Kubernetes 中运行的 MySQL InnoDB 集群。它利用 Group Replication 插件创建可以在单主模式下运行的容错组,在这种模式下,在任何给定时间,只有一个服务器会批准升级。这些组还可以在多主模式下运行,所有服务器将同时接受升级。这个多主复制插件提供了强大的随处更新优势以及内置的冲突识别和解决、组成员身份和自动分布式恢复能力。
备份和恢复:按需创建备份或使用调度程序功能在预设时间将数据库自动备份到对象存储。用户还可以从现有备份中恢复数据库。
架构:利用 InnoDB 和 Group Replication 在 Kubernetes 上创建和扩展 MySQL 集群。如果集群实例死亡,MySQL Operator 会自动将它们恢复到集群中。Kubernetes Persistent Volume Claims 允许您将数据存储在网络链接存储或本地磁盘上。
性能:它使用自定义资源定义来扩展 Kubernetes API。MySQL Operator 用户可以使用这些第三方资源对象进行交互。
易用性:使用此 Operator 创建 MySQL 集群轻而易举。只需定义 YAML 文件并使用 kubectl 直接提交给 Kubernetes。Operator 将监视 MySQL 集群资源并采取措施创建 MySQL 集群。
Oracle MySQL Operator 的文档[2] 也非常全面。为了安全起见,它支持从私有注册表访问。
Oracle MySQL Operator 是一个简单、直接的 Kubernetes 控制器,它密切监视 API 服务器以查找链接到 MySQL 的自定义资源定义并采取相应的操作。它使用 Prometheus 指标进行监控和警报。唯一的缺点是备份只能存储在 S3 或 S3 兼容存储上。
Percona
Percona[3] MySQL 是一个综合性的操作符,它为高要求、资源密集型的应用程序提供支持。它提供各种性能优化工具以及 XtraDB 作为其存储引擎。XtraBackup 和 XtraDB Cluster 提供了许多与该引擎兼容的工具,使 DBA 的日常管理任务更加轻松。
Percona MySQL Operator 的主要特点是:
部署和扩展:您可以创建跨多个可用区的 Percona XtraDB 集群环境,而不会出现任何故障点。为了可扩展性,您可以更改大小参数以添加或删除 XtraDB 集群成员。
安全性:Percona 提供强大的安全功能,例如自动密码轮换、传输中的数据加密以及对私有注册表访问的支持。
架构:Percona XtraDB Cluster 通过将 Percona Server for MySQL 与 XtraDB 引擎和 Percona XtraBackup 与 Galera 库集成来提供同步的多主复制。
Percona 的架构
这是 Percona 架构的快速概述。使用节点关联,Operator 通过在单独的节点上运行 Percona XtraDB Cluster 实例来提供高可用性。如果一个节点发生故障,一个 pod 会自动重新加入另一个节点。
同样,它使用 PVC (PersistentVolumeChain) 自动为 pod 提供存储。
与其他运算符相比,Percona MySQL Operator 的文档非常详细。[4]
Bitpoke
Bitpoke[5] MySQL Operator 管理用于在 Kubernetes 中部署和管理高可用性 MySQL 集群的所有基本资源。此外,它还有助于简化数据库操作,例如扩展、备份和故障转移。为了适合您的使用案例,您可以为多个站点创建一个集群或为每个站点创建一个集群。
Bitpoke MySQL Operator 对 DevOps 友好,这意味着它简化了监控、可扩展性、可用性和备份流程。它支持时间点恢复和备份(按需和计划),还支持集群内和集群间的克隆。
Bitpoke MySQL Operator 的主要优势包括:
架构:Bitpoke MySQL Operator 使用 Percona Server 和 Openark 的 Orchestrator 在 Kubernetes 上提供异步 MySQL 复制。
易用性:Bitpoke MySQL Operator 入门简单快捷。用户只需访问安装了 Helm 和 kubectl 的 Kubernetes 集群。
借助此README[6] 图表,您可以将控制器与协调[7]器 集群一起部署。Bitpoke MySQL Operator 的文档已经足够了。[8]在安全性方面,不幸的是,Bitpoke 缺乏可靠的安全功能:它只提供 SSL 支持。
GrdsCloud
GrdsCloud[9] MySQL Operator 可帮助您在 Kubernetes 等基于容器的环境中运行无状态 MySQL。您无需更改 MySQL 数据库的权限,因此管理和扩展可用于生产的 MySQL 集群变得更加容易。
GrdsCloud MySQL Operator 的主要特点是:
易于构建:安装 GrdsCloud MySQL Operator 后,您可以快速构建和管理在 Kubernetes 中运行的容器化 MySQL 集群。这可以在基本的声明性配置的帮助下完成。用户可以轻松定义 cpu/io/memory 格式的参数。
灾难恢复:该控制器包括媒体恢复和备份任务调度程序,使日常数据库管理活动更容易。
高可用性:它运行全自动数据库检查以识别故障。数据库中发生的更改会实时记录在二进制日志中。MySQL Operator 将处理这些更新,并在数据库出现故障时自动重新执行或修复二进制日志。根据情况,它会分配一个新的主实例。这将帮助用户获得高可用的 MySQL 集群。
SlowSQL Analyst:为了获得有价值的见解,Grds MySQL Operator 自动收集和分析应用程序 SQL 并相应地提供优化建议。
与其他文档[10] 相比,GrdsCloud 的文档并不详细。此外,GrdsCloud 对传输中的敏感数据缺乏强大的安全功能。它是一个很好的运营商,但它不支持深入的洞察力和 AutoPilot 功能。
总结
在 Kubernetes 上运行 MySQL 集群并不像听起来那么简单,尤其是不仅仅是扩展和配置。这就是为什么使用 Operator 非常有用,因为它可以为最终用户自动化这些流程。应用程序的最佳选择最终取决于数据库的规模、资源和大小需求。有时,这也取决于 DBA 的品味。
参考资料
Oracle MySQL Operator: https://portworx.com/blog/getting-started-with-the-oracle-mysql-kubernetes-operator-with-portworx-on-oci/
[2]文档: https://dev.mysql.com/doc/mysql-operator/en/
[3]Percona: https://www.percona.com/doc/kubernetes-operator-for-pxc/index.html
[4]文档非常详细。: https://www.percona.com/doc/kubernetes-operator-for-pxc/api.html
[5]Bitpoke: https://www.bitpoke.io/docs/mysql-operator/#
[6]README: https://github.com/bitpoke/mysql-operator/tree/master/deploy/charts/mysql-operator#readme
[7]协调: https://github.com/openark/orchestrator#readme
[8]文档已经足够了。: https://www.bitpoke.io/docs/mysql-operator/#documentation
[9]GrdsCloud: https://operatorhub.io/operator/mysql
[10]与其他文档: https://github.com/squids-io/mysql-operator-docs
[11]Choosing a Kubernetes Operator for MySQL: https://portworx.com/blog/choosing-a-kubernetes-operator-for-mysql/?utm_source=thenewstack&utm_medium=website
- END -
后台回复“加群”,带你进入高手如云交流群
推荐阅读
全网粉丝20W的头部大号,专注云原生、Golang、Linux实用脚本,效率工具,免费CSDN下载,回复【go】获取近 6 万 Star 的资源,回复【1024】获取全种类IT资料,回复【红包封面】获取超好看封面,回复【加群】进入高手如云技术交流群
分享、点赞和在看
支持我们分享更多好文章,谢谢!
点个在看集群永保稳定👇