使用 Kubernetes Operator 控制您的数据库

广告后继续..

管理 Kubernetes 中的数据库等有状态应用程序可能具有挑战性。操作员将实践知识分组到自动化管理任务的解决方案中。

使用 MySQL 运算符可以简化生产就绪型 MySQL 集群的部署和扩展。它还通过复制托管数据库的 Pod 并启用备份和恢复来实现高可用性。

InnoDB集群

广告后继续..

Haroon Khan 是一位数据专业人员,他创建和维护支持高性能应用程序的数据库。他在多种技术方面拥有十多年的经验,包括 MySQL、Microsoft SQL Server、DB2 和开源工具。

他热衷于帮助公司采用可以处理广泛数据需求的现代数据架构。 InnoDB Cluster 是这项工作的关键组件,提供改进的写入可扩展性。但是,如果您需要熟悉其各个组件,那么实现它可能会很困难。

广告后继续..

此外,可能需要多种工具来管理拓扑。如果您不想投资每种技术的开发/集成/测试时间,则此解决方案可能不适合您的应用程序。这就是 Haroon 的 Kubernetes 指南针的闪光点。

他认为,使用 InnoDB Cluster 扩展 MySQL 应该与扩展其复杂性分开。这就是为什么他提倡与 MySQL Operator Kubernetes 集成。这一强大的组合将 InnoDB Cluster 的强大功能与 Kubernetes 的优雅结合在一起,一举简化了管理和编排。

公告

如果实例重新启动,它将离开组并需要重新加入组才能添加回默认副本集。要重新加入示例,您可以使用 cluster.rejoinInstance() 命令,该命令将 URI 作为参数。此命令确保实例处于联机状态并且可以添加到组中。

它还会检查您是否不是裂脑(将您执行的 GTID 与其他 ONLINE 成员的执行/清除的 GTID 进行比较)。如果实例无法访问,该命令可能会失败,但您可以稍后重试。

Pod 中断预算

广告后继续..

Pod 中断预算 (PDB) 指定集合中必须始终处于活动状态的 Pod 的最小数量或百分比。在处理需要高可用性的应用程序(例如基于仲裁的应用程序或 Web 前端)时,它是一个很有价值的工具。

Pod 中断预算有助于确保节点操作只会通过同时耗尽某些 Pod 实例来减少您的服务。它们与 Horizontal Pod Autoscaler 配合使用,以防止不必要的部署停机。

要使用 PDB,您需要创建一个 YAML 文件,定义应用程序所需的可用性。您还可以定义 PodDisruptionBudgetStatus 对象来跟踪 PDB 的当前状态。这在处理不断变化的情况时非常有用,因为 PDB 的状态可能滞后于实际状态。

Pod 中断预算对于需要在集群升级时保持可用性的应用程序非常有用。例如,电信公司可能希望确保其 VoIP 服务在系统维护或修补期间保持可用。

这使得电信公司能够在不牺牲可用性的情况下实施可以改善最终用户体验的功能。 PodDisruptionBudget 对于必须平衡可用性与系统升级和维护的软件即服务 (SaaS) 提供商也很有用。当 SaaS 提供商需要在发布新功能或部署服务更新时保持可用性时尤其如此。

副本集

ReplicationSet 是 Kubernetes 控制对象,保存指定数量的 Pod 副本。它们非常擅长处理简单的可扩展性需求,并有助于确保高可用性和弹性。

ReplicaSet 还可以处理所需状态的更改,例如 pod 失败或手动删除 pod、创建新 pod 来替换它们,或者终止多余的副本以使系统恢复到所需状态。

ReplicaSet 在 YAML 清单文件中配置,包括副本数量和 Pod 模型的规范。它们还支持使用 Pod 标签来识别和选择它们管理的 Pod。

例如,ReplicationSet 可以获取标签层位于 (frontend) 且环境位于 (prod) 的所有 pod。 ReplicationSet 还可以通过查看 oplog 或主写关注日志来跟踪所需状态的更改。

当副本集中的主节点发生故障时,选择成为新主节点的辅助节点会通过将记录的操作应用于其数据集来进行自我更新。此外,ReplicaSet 可以通过镜像读取查询来预热符合条件的辅助副本的缓存。

这可以减少主要中断后或计划维护期间初选的影响。 ReplicaSet 还可以跨多个节点和可用区部署,以提高冗余性。

备份

在 Kubernetes 中运行有状态数据库的解决方案有很多,但大多数都需要备份和升级等第二天功能。

Kubernetes Operators 通过自动化和简化复杂的、特定于域的操作(包括部署、扩展和更新数据库)来弥补这一差距。

最好的 MySQL 运算符旨在与现有基础设施即代码工具和 CI/CD 管道紧密集成,以实现可扩展、安全和生产就绪的数据库部署。

Oracle 的 MySQL Operator 是一个自我修复解决方案,支持 Kubernetes 上的 MySQL InnoDB 集群。它使用 Kubernetes StatefulSet 来管理 MySQL 服务器实例,并为它们分配 PersistentVolumeChain 进行存储。

运营商还部署了 MySQL 路由器 Pod,以通过集群路由查询。该操作符目前已普遍可用,并根据接近 MIT 许可证的普遍许可许可证进行分发。

Bitpoke MySQL Operator 是一个易于使用的开源 MySQL Operator,适用于 Kubernetes,仅安装 Helm 和 Kubectl。它被设计为 Kubernetes 的简单、稳定和生产就绪的解决方案,提供监控、复制、备份、更新和其他功能。操作员使用声明性 YAML 文件在 Kubernetes 上部署和扩展 MySQL 集群。

与传统的存储过程不同,Nova-conductor 的抽象阻止了直接数据库访问。这降低了数据攻击的风险。然而,仍然有可能通过缓冲区溢出、内存泄漏和恶意软件程序来攻击数据库。

Rolar para cima