【bitpoke/mysql-operator】mysql-operator-sidecar源码解读

背景

sidecar在MysqlCluster的CRD资源中主要作为一个http的server端,为mysql服务进行数据的备份恢复。

在版本0.6.2中,主要支持两个版本的mysql(5.7 or 8.0)。构建后的二进制为mysql-operator-sidecar。

镜像名称为mysql-operator-sidecar-5.7-amd64:v0.6.2

在bitpoke/msyql-operator中的部署结构如下所示(省略了MysqlCluster中其他资源类型):
sidecar部署

sidecar源码简介

代码路径

sidecar代码可在bitpoke/mysql-operator中mysql-operator/cmd/mysql-operator-sidecar/main.go中查询

功能描述

clone-and-init

该功能的接口引用是在mysql的init-container中,简单理解为数据库每次启动都会调用,调用的工具为orchestrator。
主要有两个逻辑:

  • RunCloneCommand
    主要在进行数据恢复,按照一下逻辑进行:

    1. 如果MySQL数据存在,直接退出
    2. 如果从节点存在且状态健康,则从从节点拷贝数据恢复
    3. 如果主节点存在,则从主节点拷贝数据恢复
    4. 如果从节点和主节点都不存在,则从云存储中拷贝数据(bucket URL)
    5. 如果这些都不存在,判断是否为mysql集群的第一个节点,若是,则退出
    6. 以上情况都不满足,无法启动,报错
  • RunConfigCommand
    主要为配置项的恢复

    1. 拷贝my.cnf文件,/mnt/conf/my.cnf -> /etc/mysql/my.cnf
    2. 拷贝pre-shutdown-ha.sh
    3. 配置10-identity.cnf,operator-init.sql,10-init-file.cnf和heartbeat.conf等

run

入口:RunSidecarCommand函数
newServer函数主要创建两个监听

  • /health:用来判断sidecar是否健康
  • /xbackup:用来接收mysql数据备份恢复命令,进行调用xtrabackup工具

take-backup-to

入口:RunTakeBackupCommand函数
将mysql数据库通过rclone工具推送到远端云存储的桶里面,需要提前配置bucket url

参考资料

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值