MySQL 集群

    1. 用自然语言描述想要的 MySQL 状态

    image.png

    image.png

    XtraBackup: 业界主流开源 MySQL 备份和恢复工具. 利用该工具将主节点数据备份到指定目录

    1. 配置从节点

    复制备份数据到从节点数据目录 /var/lib/mysql, 然后执行:

    image.png

    master_log_file: 备份数据
    master_log_pos: 偏移

    1. 启动从节点

    image.png

    1. 添加更多从节点

    注意新添加的从节点的备份数据来自已经存在的从节点.

    三座大山:

    image.png

    1. 第一座大山

    使用 ConfigMap:

    image.png

    创建两个 Service, 供 StatefulSet 以及用户使用:

    image.png

    Headless 记录示例:

    • 格式: .
    • mysql-0.mysql

    MySQL 分为读写两种操作, 其中读操作可在 MySQL 任意节点上进行, 所以使用 VIP (第二个 Service), 而写操作只能在 master 上, 所以需要区分 MySQL 节点, 进而使用 Headless 来区分不同 Pod (第一个 Service).

    用户可能需要分别使用读写操作.

    1. 第二座大山

    image.png

    配置 master 与 slave 所使用的 conf:

    定义 InitContainer:

    image.png
    image.png

    注意如何区分配置文件.

    ConfigMap 卷定义:

    image.png

    配置文件复制后, 后面启动的 MySQL 也会挂载 conf 卷, 所以就能读取该配置了.

    在从节点的 Pod 启动前, 从主节点或其他从节点里复制数据:

    第二个 InitContainer:

    image.png
    image.png

    注意: 挂载的配置目录和数据存储目录.

    1. 第三座大山

    启动命令不同.

    image.png
    image.png

    MySQL 容器本身的定义:

    image.png
    image.png

    创建 PV:

    image.png
    image.png

    创建 StatefulSet:

    image.png