这篇博文继续比较在Kubernetes上运行数据库的解决方案。之前的博客文章:
MySQL最初发布于1995年,Kubernetes在19年后的2014年发布。根据DB-engines在美国,MySQL是当今最流行的开源关系数据库,而Kubernetes是运行容器化工作负载的事实上的标准。这两种技术在工程师中很受欢迎,促使公司创造解决方案来同时运行它们。在这篇博文中,我们将回顾MySQL的各种Kubernetes操作符,看看它们有什么不同,以及它们为开发人员和运维团队提供了什么功能。
- Bitpoke MySQL操作符(原Presslabs)
- Oracle MySQL操作系统
- 岩豚鼠通过Cybozu
- 维塔斯算子通过PlanetScale
- 雷竞技下载官网MySQL的Percona操作符
摘要及对照表见我们的文档。
著名的提到
在回顾操作符之前,我需要提到许多在k8s中运行MySQL的有趣解决方案。
KubeDB
KubeDB是一个瑞士军刀操作员,它可以部署和管理多个数据库,包括MySQL。问题是,它是在一个开放的核心模型中工作的,其中最有趣的功能在免费版本中是没有的,所以我不能轻易地尝试它们。放心,这是一个可行的解决方案,但在这篇博文中,我想重点介绍开源产品。
掌舵或手动部署
在操作员SDK出现之前,在Kubernetes上运行MySQL的愿望就已经存在了。为了解决这个问题,社区非常有创意,开发了许多方法,从常规手动部署到更复杂的舵图(例如Bitnami舵图).
他们做的工作-你可以部署一个MySQL服务器。通过挖掘和调优,甚至可以拥有一个集群。但这些解决方案的共同之处在于,它们缺乏执行不同的day-2操作的能力:备份、扩展、升级等。对于数据库来说,这可能是至关重要的,因为数据的一致性和安全性至关重要。应用在遗留环境中工作的方法,在Kubernetes上可能不安全。
这就是操作者发挥作用的地方。
Bitpoke MySQL操作符
Bitpoke是一家在Kubernetes上提供WordPress自助托管工具的公司,包括MySQL和WordPress操作系统。他们的团队开发了第一个MySQL操作符,并与社区共享。该团队最初在presslab内部开发,自2021年以来,该团队和运营商已转移到Bitpoke。该操作符被许多公司用于生产。
它是Apache 2.0许可的。有趣的是,它使用raybetapp 在引擎盖下"由于备份方面的改进(例如。备份锁)、监视改进和一些可服务raybet雷竞技竞猜在线官网性改进(例如。实用程序用户)”。
部署
我跟着文档:
|
1
2
|
舵
回购
添加
bitpoke
https
://舵-图表
.bitpoke
.io
舵
安装
mysql-操作符
bitpoke/mysql-操作符
|
操作员已经开始工作了。部署集群:
|
1
2
|
kubectl
应用
-f
https
://生
.githubusercontent
com/bitpoke/mysql-操作符/主/例子/例子-集群-秘密
.yaml
kubectl
应用
-f
https
://生
.githubusercontent
com/bitpoke/mysql-操作符/主/例子/例子-集群
.yaml
|
这将部署带有异步复制的MySQL 5.7集群—一个主节点和一个复制节点。
特性
Bitpoke操作符允许您在Kubernetes上备份,恢复,扩展和升级MySQL。所以常规的第2天操作是可行的。
让我们从优点开始:
- 它是MySQL最古老的开源操作符。它经过了Bitpoke的实战测试,并被社区和其他公司广泛采用。这保证了不存在关键问题。但是一定要提前阅读缺点部分。
- 复制滞后和缓解当延迟超过设置的阈值时,使延迟节点停止旋转。对于异步复制来说,为应用程序呈现真实数据非常重要。
至于缺点,该操作符似乎没有积极开发,去年提交了15次。
Oracle MySQL操作系统
这不是Oracle第一次为MySQL创建Operator,但是现在不同的是这个Operator使它到一般可用性阶段。Operator是在不寻常的“通用许可许可证(UPL)”下发布的,但它确实是许可的,并且接近MIT许可证。
部署
带头盔的操作人员的标准配置,没有意外:
|
1
2
3.
|
舵
回购
添加
mysql-操作符
https
://mysql
.github
.io/mysql-操作符/
舵
回购
更新
舵
安装
mysql-操作符
mysql-操作符/mysql-操作符
--名称空间
mysql-操作符
--创建-名称空间
|
现在是集群:
|
1
2
3.
4
5
|
出口
名称空间=默认的
舵
安装
我的-mysql-innodbcluster
mysql-操作符/mysql-innodbcluster
-n
美元
名称空间
--版本
2.0.7
--集
凭证
.root
.password=“> 0 urs4f3p4ss”
--集
tls
.useSelfSigned=真正的
|
它部署了一个MySQL集群,其中有三个节点和Group Replication,并且在它前面有一个MySQL路由器Pod用于查询路由。
特性
即使操作员被提升到GA,一些基本的功能仍然不存在,或者应该由用户实现。例如,升级、监控和拓扑灵活性。raybet雷竞技竞猜在线官网
- Operator在底层使用MySQL Shell,其代码库是python(而不是常规的golang)。备份和恢复也依赖于MySQL Shell并使用dumpInstance()方法。这是一种逻辑备份,对于大型数据库可能存在问题。
- Operator仅支持MySQL 8.0和Group Replication(或已上市的InnoDB Cluster)。我认为这是合乎逻辑的举动。
- 您可以使用MySQL Community容器映像,但是Oracle有一种将用户推向Enterprise的趋势。至少在最后两件事上是可见的发布说明在这个版本中,新添加的功能是企业版的所有功能。
岩豚鼠
与Bitpoke类似,Moco是由Cybozu为其内部需求和后来的开源。它使用Apache 2.0许可,用Golang编写,并且有良好的发布节奏。
部署
像往常一样,让我们试试快速入门指南。请注意cert-manager这是必须的(好奇心从一开始就达到顶峰!)
安装cert-manager并部署操作员:
|
1
2
3.
4
5
6
|
旋度
-fsLO
https
://github
com/jetstack/cert-经理/释放/最新的/下载/cert-经理
.yaml
kubectl
应用
-f
cert-经理
.yaml
舵
回购
添加
岩豚鼠
https
://cybozu-去
.github
.io/岩豚鼠/
舵
回购
更新
舵
安装
--创建-名称空间
--名称空间
岩豚鼠-系统
岩豚鼠
岩豚鼠/岩豚鼠
|
创建集群示例文件夹:
|
1
|
kubectl
应用
-f
https
://生
.githubusercontent
com/cybozu-去/岩豚鼠/主要/例子/loadbalance
.yaml
|
这将部署一个具有三个节点的集群,并使用负载均衡器公开半同步复制。
特性
Moco功能非常丰富,允许用户执行各种管理任务。新鲜的解决方案和想法:
- 文档。对于内部开发的产品,运营商有相当好的和详细的文档。从设计和体系结构决策到如何操作和常见用例。
- 类似于Oracle的操作符,这个操作符依赖于MySQL Shell备份和恢复,但同时支持增量备份。二进制日志在备份时复制到S3桶,因此它不是一个连续的binlog副本,可以提供某个时间点的恢复,而只是一次性转储。
- 运营商有自己的kubectl插件使入职和使用更加顺畅。我很好奇这些插件是否在生产中被广泛使用。请在评论中分享你的想法。
对于这个操作符,我有一些担忧:
- 它与半同步复制一起工作,不太适合对数据一致性有强烈要求的工作负载。看到面对面半同步复制欲知详情。
- 它没有官方支持,因此对于企业来说,它是一种“自担风险使用”类型的情况。
维塔斯
维塔斯是一个用于水平扩展MySQL的数据库集群系统,最初是在YouTube上开发的(并且在那里被广泛使用)。现在是CNCF项目,由PlanetScale还有社区。它是开源的,但Vitess本身的一些功能仅供PlanetScale客户使用。有趣的事实:Vitess操作符作为一个核心组件PlanetScale DBaaS。所以它是一个生产级和战斗测试运营商。
部署
用一个快速入门:
|
1
2
3.
4
|
git
克隆
https
://github
com/vitessio/维塔斯
cd
维塔斯/例子/操作符
kubectl
应用
-f
操作符
.yaml
|
接线员准备好了。让我们部署一个介绍集群:
|
1
|
kubectl
应用
-f
101年_initial_cluster.yaml
|
这将部署以下内容:
- 三个etcd吊舱
- 各种Vitess pod:
- 两个vttablet
- vtadmin
- vtctld
- vtgate
- vtorc
你可以阅读更多关于Vitess的概念和作品架构文档。
特性
切分是这个操作符最大的优点之一。我能想到的唯一竞争对手是TiDB(这应该是MySQL协议兼容,但不是MySQL)。在开源领域没有其他MySQL分片解决方案。但与此同时,这一切都是有代价的——复杂性,Kubernetes肯定有助于伪装。熟悉所有vt-*组件可能会让人不知所措,特别是对于以前从未使用过Vitess的用户。
操作员为用户提供所有常规管理操作。唯一的缺点是这些操作没有很好地记录,您必须通过各种博客文章、参考文档和其他工件来发现它们。例如,这篇博文涵盖备份和恢复的一些基本知识,而这文档涵盖了基本的Vitess操作。
雷竞技下载官网
在Pe雷竞技下载官网rcona中,MySQL有两个操作符:
- 基于雷竞技下载官网Percona XtraDB集群(PXC)
- 基于雷竞技下载官网用于MySQL的Percona服务器(PS)
在雷竞技下载官网MySQL的Percona操作符- Alpha发布,我们将解释为什么决定创建新的操作符。这两个操作符作为它们所基于的组件都是完全开源的。基于PXC的版本已经可以投入生产,而PS还在开发阶段。
部署
为雷竞技下载官网Percona Kubernetes运营商我们保持舵图,方便登船。部署是一个两步过程。
部署操作符:
|
1
2
|
舵
回购
添加
雷竞技下载官网
https
://雷竞技下载官网
.github
.io/雷竞技下载官网-舵-图表/
舵
安装
我的-人事处
雷竞技下载官网/pxc-操作符
|
数据库:
|
1
|
舵
安装
我的-db
雷竞技下载官网/pxc-db
|
特性
在功能方面,我将重点关注PXC,因为它已经可以投入生产,我们的目标是在不久的将来使PS Operator达到平价。
- 代理集成。除了数据库,操作员还部署代理。用户可以选择HAProxy和ProxySQL。选择取决于用例。
- 操作符允许拥有的用户多集群或多区域MySQL部署。这对于迁移或灾难恢复非常有用。
- MySQL没有其他操作符可以提供真正的时间点恢复。我们开发了一种解决方案,可以在对象存储设备上持续存储备份。有关架构决策的更多信息,请参阅基于Percona XtraDB集群架构决策的Per雷竞技下载官网cona操作符中的时间点恢复。
- Operator为MySQL的小版本及其组件(如代理)提供自动和安全的升级。它对于快速修复关键漏洞和在零停机时间内推出错误修复非常有用。
雷竞技下载官网Percona致力于为社区提供开源产品,但我们也为客户提供卓越的服务:管理和专业的服务和支持。我们有一个产品生态系统雷竞技下载官网Percona平台-将我们的软件和服务产品结合在一起。




