k8s mysql 集群_深入剖析Kubernetes学习笔记:StatefulSet-MySQL集群(20)

一、需求描述

1、自然语言来描述

是一个“主从复制”(Maser-Slave Replication)的 MySQL 集群;

有 1 个主节点(Master);

有多个从节点(Slave);

从节点需要能水平扩展;

所有的写操作,只能在主节点上执行;

读操作可以在所有节点上执行。

2、图形描述

e7b275c8809d41e747356b0c5def5736.png

二、需求分析

1、通过 XtraBackup 将 Master 节点的数据备份到指定目录。

$ cat xtrabackup_binlog_info

TheMaster-bin.000001 481

a88e5c225c14de0927ef9f4f1bb0e6ae.png

2、配置 Slave 节点

Slave 节点在第一次启动前,需要先把 Master 节点的备份数据,连同备份信息文件,一起拷贝到自己的数据目录(/var/lib/mysql)下。然后,我们执行这样一句 SQL:

TheSlave|mysql> CHANGE MASTER TO

MASTER_HOST='$masterip',

MASTER_USER='xxx',

MASTER_PASSWORD='xxx',

MASTER_LOG_FILE='TheMaster-bin.000001',

MASTER_LOG_POS=481;

16e806b3dcadc31eb8631989bae24490.png

3、启动 Slave 节点

TheSlave|mysql> START SLAVE;

这样,Slave 节点就启动了。它会使用备份信息文件中的二进制日志文件和偏移量,与主节点进行数据同步。

4、在这个集群中添加更多的 Slave 节点

需要注意的是,新添加的 Slave 节点的备份数据,来自于已经存在的 Slave 节点

9d11126374d590a7aea60b4d310279ba.png

通过上面的叙述,我们不难看到,将部署 MySQL 集群的流程迁移到 Kubernetes 项目上,需要能够“容器化”地解决下面的“三座大山”:

Master 节点和 Slave 节点需要有不同的配置文件(即:不同的 my.cnf);

Master 节点和 Salve 节点需要能够传输备份信息文件;

在 Slave 节点第一次启动之前,需要执行一些初始化 SQL 操作;

三、第一座大山:Master 节点和 Slave 节点需要有不同的配置文件

1、思路

747a0345cd98fc556002af761a060b76.png

2、MySQL 的配置文件

apiVersion: v1

kind: ConfigMap

metadata:

name: mysql

labels:

app: mysql

data:

master.cnf: |

# 主节点MySQL的配置文件

[mysqld]

log-bin

slave.cnf: |

# 从节点MySQL的配置文件

[mysqld]

super-read-only

在这里,我们定义了 master.cnf 和 slave.cnf 两个 MySQL 的配置文件。

e04d963c314142efdb41b619937d8653.png

3、ConfigMap

41ae2b2ae496ba547b66dbc50f96489b.png

4、两个 Service 定义

接下来,我们需要创建两个 Service 来供 StatefulSet 以及用户使用。这两个 Service 的定义如下所示:

apiVersion: v1

kind: Service

metadata:

name: mysql

labels:

app: mysql

spec:

ports:

- name: mysql

port: 3306

clusterIP: None

selector:

app: mysql

---

apiVersion: v1

kind: Service

metadata:

name: mysql-read

labels:

app: mysql

spec:

ports:

- name: mysql

port: 3306

selector:

app: mysql

1、可以看到

bb9d168b959cbfabd8a4ec879264ca7a.png

2、不同点

1ffe20739cb8076786afc95d18ae1d7c.png

3、读写分离

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值