社区将用户在了解学习开源项目时遇到的一些高频问题整理成 FAQ,分几篇发出。本篇为第一篇【FAQ | 认知篇】,希望您对该项目有一个整体的了解。

数据库容器化的技术可行性

关于 数据库是否适合部署在 Kubernetes 上?这个问题已经有了答案。以往对有状态服务不适合部署在 Kubernetes,数据库性能及安全性等疑问,都可以通过以下几篇文章从技术可行性的角度来得到解答。

业内文章参考

  • Percona:《Kubernetes Operator 对数据库的重要性》^[1]^

  • TiDB:《TiDB on Kubernetes 最佳实践》^[2]^

什么是 RadonDB MySQL Kubernetes?

RadonDB MySQL Kubernetes 是基于 MySQL 的开源、高可用、云原生集群解决方案。支持主备高可用架构,并具备安全、自动备份、监控告警、自动扩容等全套管理功能。

其实现了在 Kubernetes 、KubeSphere 和 Rancher 上安装部署和管理,自动执行与运行 MySQL 集群有关的任务。

简单的说:如果你需要一款在 Kubernetes 上运行的,并自带高可用的 MySQL Operator,那就请试试 RadonDB MySQL Kubernetes 吧!

核心功能

  • MySQL 高可用

  • 无中心化自动选主

  • 主备秒级切换

  • 集群切换的数据强一致性

  • 集群管理

  • 监控告警

  • 数据备份

  • 日志管理

  • 账户管理

架构图

  • 通过 Raft 协议实现无中心化领导者自动选举

  • 通过 Semi-Sync 基于 GTID 模式同步数据

  • 通过 Xenon 提供高可用能力

图片

了解更多:

高可用是如何实现的?

通过上面的介绍,我们得知 RadonDB MySQL Kubernetes 通过 Xenon 实现高可用功能。

Xenon [ˈziːnɒn] 是一款由 RadonDB 开源社区开源的 MySQL 集群高可用工具。基于 Raft 协议进行无中心化选主,实现主从秒级切换;基于 Semi-Sync 机制,保障数据不丢失,实现数据强一致性;并结合 MySQL(5.7 及以上版本)并行复制特性,实现 Binlog 并行回放,大大降低从库延迟。

图片

结合架构图,可看出 Xenon 就是基于 Raft + Semi-Sync + GTID 实现的高可用,保证大多数节点接收到数据。

而 Raft 基于心跳管理,如果从节点超时收不到主节点的心跳,会尝试发起选举,若得到超过半数(非 IDLE 节点)的选票,则会当选为主节点。

了解更多:

版本信息及下载地址

1.x 版本直接由 Helm 包管理工具部署,目前已停止维护!

2.x 版本由 Operator 的方式实现并兼容 1.x 所有功能。

强烈建议使用 2.x 最新版本!!!

未来有哪些开发规划?

可用性

  • 支持单节点及节点扩缩容

  • 支持自动订正集群复制状态

  • 支持读写分离代理及服务暴露

  • 支持不参与选举的只读实例

  • 支持在线数据迁移

  • 支持创建远程灾备集群

  • 完善 SSL 传输加密

可观测性

  • 内置 prometheusgrafanaaltertmanager 等可选组件

  • grafana 监控面板作为服务导出与访问

  • altertmanager 自定义告警

  • 支持集群托盘状态展示(orchestrator 实现)

  • 支持慢日志、错误日志展示及投递服务

可维护性

  • 支持小版本升级(如:5.7.22 到 5.7.33)

  • 支持 5.7 到 8.0 的跨版本升级

  • 支持物理增量备份及备份信息展示

  • 支持时间点恢复 PITR

  • 集成数据库可视化管理工具,提供网页客户端

RadonDB 的前世今生

社区还有很多朋友会直接将 RadonDB MySQL Kubernetes 称为 RadonDB,这里再对项目名称做一个说明。

RadonDB 原为青云科技于 2018 年开源的分布式数据库,其分布式组件 Radon 暂时停止维护。

目前 RadonDB 为社区品牌,不再特指某款数据库项目。社区主要的运营项目为:

  • RadonDB MySQL Kuberentes - MySQL 容器化

  • RadonDB PostgreSQL Operator - PostgreSQL 容器化

  • RadonDB ClickHouse Operator - ClickHouse 容器化

  • Xenon - MySQL 高可用组件

参考链接

1.《Kubernetes Operator 对数据库的重要性》:https://www.percona.com/blog/2020/10/08/the-criticality-of-a-kubernetes-operator-for-databases/

2.《TiDB on Kubernetes 最佳实践》:https://pingcap.com/zh/best-practice-detail/tidb-on-kubernetes-best-practice