社区将用户在了解学习开源项目时遇到的一些高频问题整理成 FAQ,分几篇发出。本篇为第一篇【FAQ | 认知篇】。
数据库容器化的技术可行性
关于 数据库是否适合部署在 Kubernetes 上?这个问题已经有了答案。以往对有状态服务不适合部署在 Kubernetes,数据库性能及安全性等疑问,都可以通过以下几篇文章从技术可行性的角度来得到解答。
- 《是否应该在 Kubernetes 上运行数据库?》
- 《数据库可以上 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 吧!
Github:https://github.com/radondb/radondb-mysql-kubernetes
网站:https://radondb.com/
文档:https://radondb.com/docs/mysql/
核心功能
- MySQL 高可用
- 无中心化自动选主
- 主备秒级切换
- 集群切换的数据强一致性
- 集群管理
- 监控告警
- 数据备份
- 日志管理
- 账户管理
架构图
- 通过 Raft 协议实现无中心化领导者自动选举
- 通过 Semi-Sync 基于 GTID 模式同步数据
- 通过 Xenon 提供高可用能力
了解更多:
- 《MySQL on K8s 开源开放的高可用容器编排方案》
- 《MySQL Operator 01 | 架构设计概览》
- 《MySQL Operator 02 | 脚手架选型 & 工程创建》
高可用是如何实现的?
通过上面的介绍,我们得知 RadonDB MySQL Kubernetes 通过 Xenon 实现高可用功能。
Xenon [ˈziːnɒn] 是一款由 RadonDB 开源社区开源的 MySQL 集群高可用工具。基于 Raft 协议进行无中心化选主,实现主从秒级切换;基于 Semi-Sync 机制,保障数据不丢失,实现数据强一致性;并结合 MySQL(5.7 及以上版本)并行复制特性,实现 Binlog 并行回放,大大降低从库延迟。
结合架构图,可看出 Xenon 就是基于 Raft + Semi-Sync + GTID 实现的高可用,保证大多数节点接收到数据。
而 Raft 基于心跳管理,如果从节点超时收不到主节点的心跳,会尝试发起选举,若得到超过半数(非 IDLE 节点)的选票,则会当选为主节点。
Github:https://github.com/radondb/xenon
了解更多:
- 《Xenon:后 MHA 时代的选择》
- 《关于 Xenon 高可用的一些思考》
- 《基于 K8s 的新一代 MySQL 高可用架构实现方案》
版本信息及下载地址
1.x 版本直接由 Helm 包管理工具部署,目前已停止维护!
2.x 版本由 Operator 的方式实现并兼容 1.x 所有功能。
强烈建议使用 2.x 最新版本!!!
发版信息汇总:https://radondb.com/docs/mysql/v2.2.0/release/list/#content
下载地址:https://github.com/radondb/radondb-mysql-kubernetes/releases
未来有哪些开发规划?
可用性
- 支持单节点及节点扩缩容
- 支持自动订正集群复制状态
- 支持读写分离代理及服务暴露
- 支持不参与选举的只读实例
- 支持在线数据迁移
- 支持创建远程灾备集群
- 完善 SSL 传输加密
可观测性
- 内置
prometheus
,grafana
,altertmanager
等可选组件
grafana
监控面板作为服务导出与访问
altertmanager
自定义告警
- 支持集群托盘状态展示(orchestrator 实现)
- 支持慢日志、错误日志展示及投递服务
可维护性
- 支持小版本升级(如:5.7.22 到 5.7.33)
- 支持 5.7 到 8.0 的跨版本升级
- 支持物理增量备份及备份信息展示
- 支持时间点恢复 PITR
- 集成数据库可视化管理工具,提供网页客户端
RadonDB 的前世今生
prometheus
,
grafana
,
altertmanager
等可选组件
grafana
监控面板作为服务导出与访问
altertmanager
自定义告警
社区还有很多朋友会直接将 RadonDB MySQL Kubernetes 称为 RadonDB,这里再对项目名称做一个说明。
RadonDB 原为青云科技于 2018 年开源的分布式数据库,其分布式组件 Radon 暂时停止维护。
目前 RadonDB 为社区品牌,不再特指某款数据库项目。社区主要的运营项目为:
- RadonDB MySQL Kuberentes - MySQL 容器化
- RadonDB PostgreSQL Operator - PostgreSQL 容器化
- RadonDB ClickHouse Operator - ClickHouse 容器化
- Xenon - MySQL 高可用组件
详见:https://github.com/radondb
参考链接
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