基于 k8s 搭建 mysql 5.7 主从复制集群

5 篇文章 1 订阅
4 篇文章 3 订阅

关于 k8s 集群环境的搭建可以参考我的另一篇博客
k8s 集群之使用 kubeadm 在 Centos8 上部署 kubernetes 1.20

关于 nfs 网络存储如何搭建和使用可以参考我的另一篇博客
k8s 集群之使用 nfs 网络存储挂载外部目录和文件
  
本文是基于已有 k8s 环境下,介绍在 k8s 环境中部署 mysql 主从集群,集群的数据持久化采用 nfs 网络存储方式。
  
搭建 mysql 主从复制集群主要分为两步,首先构建 mysql 主库和从库的镜像,然后创建 mysql master主库 和 slave从库的yaml文件,使用 k8s 部署 mysql 主从库。
  
mysql 版本:5.7.32
  

构建 mysql 主从库的镜像

mysql 官方 Docker 镜像文件地址:https://github.com/docker-library/mysql/tree/master/5.7

本人修改之后的 Docker 镜像文件地址:https://github.com/sanchar01/mysql/tree/master/5.7.32
(区分 master 和 slave,后续使用的都是修改过的的镜像文件,有兴趣可以对比一下官方镜像文件)
  

—> 构建 mysql-master 镜像

将修改之后的 Docker 镜像文件下载到本地,cd 进入 master 文件夹,执行如下构建命令

docker build -t mysql/mysql-master:1.0 .
docker tag mysql/mysql-master:1.0 registry.cn-hangzhou.aliyuncs.com/sanchar/mysql-master:5.7.32.1
docker login --username=用户名 --password=密码 registry.cn-hangzhou.aliyuncs.com
docker push registry.cn-hangzhou.aliyuncs.com/sanchar/mysql-master:5.7.32.1

至此 mysql-master 镜像已经推送到远程仓库,镜像地址直接使用 registry.cn-hangzhou.aliyuncs.com/sanchar/mysql-master:5.7.32.1 (公开的镜像,可以直接使用)

—> 构建 mysql-slave 镜像
docker build -t mysql/mysql-slave:1.0 .
docker tag mysql/mysql-slave:1.0 registry.cn-hangzhou.aliyuncs.com/sanchar/mysql-slave:5.7.32.1
docker login --username=用户名 --password=密码 registry.cn-hangzhou.aliyuncs.com
docker push registry.cn-hangzhou.aliyuncs.com/sanchar/mysql-slave:5.7.32.1

至此 mysql-slave 镜像已经推送到远程仓库,镜像地址直接使用 registry.cn-hangzhou.aliyuncs.com/sanchar/mysql-slave:5.7.32.1 (公开的镜像,可以直接使用)

k8s 部署 mysql-master 和 mysql-slave

先下载 yaml 文件,下载地址 https://github.com/sanchar01/mysql/tree/master/k8s_yaml

修改 mysql-master-pv.yaml、mysql-slave-pv.yaml 文件,如下替换对应的 nfs 服务器地址和 nfs 存储目录

  nfs: 
    path: /nfs/data/mysql/master   # 注意该路径需要 nfs 服务器上存在
    server: 192.168.1.28

修改 mysql-master.yaml、mysql-slave.yaml 文件,如下可替换所使用的镜像,初始化 root 账号的密码和对外端口等

   spec:
    containers:
    - name: mysql-master
      image: registry.cn-hangzhou.aliyuncs.com/sanchar/mysql-master:5.7.32.1
   ······
         env:
      - name: MYSQL_ROOT_PASSWORD
        value: "root"
      - name: MYSQL_REPLICATION_USER
        value: "repl"
      - name: MYSQL_REPLICATION_PASSWORD
        value: "repl"
  ······
  spec:
  type: NodePort
  ports:
  - port: 3306
    targetPort: 3306
    name: http
    nodePort: 30006  #外部通过该端口访问

修改完之后,先部署 mysql-master

kubectl create mysql-master-pv.yaml -n storage
kubectl create mysql-master.yaml -n storage

mysql-master 启动完成之后,部署 mysql-slave

kubectl create mysql-slave-pv.yaml -n storage
kubectl create mysql-slave.yaml -n storage

至此 mysql 主从库部署完成

Kubernetes(k8s)是一个用于自动化部署、扩展和管理容器化应用程序的开源平台。MySQL是一个流行的关系型数据库管理系统。在Kubernetes上部署MySQL8.0主从集群意味着在该平台上使用容器化的方式来管理MySQL数据库,主从集群是一种数据库复制的架构,用于提高数据库的可用性和性能。 要在Kubernetes上部署MySQL8.0主从集群,首先需要创建一个包含MySQL8.0镜像的容器,并定义相应的Pod和Service。然后可以使用Kubernetes的Deployment和StatefulSet等资源对象来定义MySQL主从集群的部署配置。可以通过定义多个Replica来实现数据库的水平扩展,同时可以使用Kubernetes的存储卷来实现数据的持久化存储,并通过Service来实现集群内部和外部的访问。 Kubernetes提供了一些工具和资源对象,如PersistentVolume(PV)、PersistentVolumeClaim(PVC)等,可以帮助用户管理数据库的持久化存储。此外,Kubernetes还提供了一些网络策略和服务发现的功能,可以帮助用户实现容器间的通信和负载均衡。 通过使用Kubernetes的灵活性和强大的管理能力,可以方便地部署和管理MySQL8.0主从集群,实现高可用性和高性能的数据库服务。同时,Kubernetes的自动扩展和自愈能力也可以帮助用户实现数据库集群的自动化管理,提高运维效率。因此,Kubernetes是一个理想的平台,用于部署和管理MySQL8.0主从集群
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值