简介
这里主要涉及对于mysql-operator浅层的理解,之后补充对mysql-operator的源码理解。
- 源码:
- 官方博客
- 优势
-
通过helm自动化搭建mysql集群
-
支持多种组件,包括监控、扩展、备份和恢复
-
支持xtrabackup进行数据备份和恢复操作
-
支持orchestrator进行数据库实例仲裁
-
当前支持mysql5.7、mysql5.8和MariaDB
主要架构
bitpoke/mysql-operator代码架构是基于kubebuilder,核心组件主要包括Manager, Client, Cache, Controller和Reconciler等。Manager的组件驱动的,Manager中包含了多个组件,其中Cache中保存了gvk和informer的映射关系,用于通过informer的方式缓存kubernetes 的对象。Controller使用workqueue的方式缓存informer传递过来的对象,后续提取workqueue中的对象,传递给Reconciler进行处理。
kubebuilder相关架构图:
mysql-operator组件图:
controller组件
在bitpoke/mysql-operator主要7个controller中,主要包括:
-
mysqlcluster-controller
主要负责CRD资源实例mysqlcluster的管理,主要功能为mysql实例的管理 -
mysqldatabase-controller
主要负责CRD资源实例mysqldatabase管理,主要功能为mysql的database的创建 -
mysqluser-controller
主要负责CRD资源实例mysqluser管理,主要功能为mysql的user的创建 -
mysqlbackup-controller
主要负责CRD资源mysqlbackup管理,主要功能通过xtrabackup工具对mysql进行备份操作 -
mysqlbackupcron-controller
主要负责为mysql集群提供定时备份的功能,其内部通过定时拉起mysqlbackup的任务 -
node-controller
主要负责对mysql实例进行管理,针对replica角色进行预处理 -
orchestrator-controller
主要通过orchestrator组件,对mysql实例进行角色仲裁
CRD资源
-
mysqlcluster
-
mysqldatabase
-
mysqluser
-
mysqlbackup