首页 > 数据库 >部署K8S集群(四):部署MySQL

部署K8S集群(四):部署MySQL

时间:2024-09-09 22:04:23浏览次数:10  
标签:opt name 部署 MySQL yaml mysql K8S backup

  1. 密码文件:MySQL Secret
# VGVzdA== -> Test
# ZGJyZWFkZXI= -> root
# cGFzc0AxMjM0 -> pass@1234
mkdir -p /opt/mysql
mkdir -p /data/mysql
cat > /opt/mysql/mysql-secret.yaml << EOF
apiVersion: v1
kind: Secret
metadata:
  name: mysql-secret
type: Opaque
data:
  mysql-root-password: cGFzc0AxMjM0
  mysql-database: VGVzdA==
  mysql-user: ZGJyZWFkZXI=
  mysql-password: ZGJyZWFkZXI=
EOF

kubectl apply -f /opt/mysql/mysql-secret.yaml
  1. 持久化存储:PersistentVolume、PersistentVolumeClaim
cat > /opt/mysql/mysql-pv.yaml << EOF
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: /data/mysql
EOF
kubectl apply -f /opt/mysql/mysql-pv.yaml

cat > /opt/mysql/mysql-pvc.yaml << EOF
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
EOF
kubectl apply -f /opt/mysql/mysql-pvc.yaml
  1. 配置文件:MySQL Deployment
cat > /opt/mysql/mysql-deployment.yaml << EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:latest
        env: 
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-secret
              key: mysql-root-password
        - name: MYSQL_DATABASE
          valueFrom:
            secretKeyRef:
              name: mysql-secret
              key: mysql-database
        - name: MYSQL_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-secret
              key: mysql-password
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mysql-storage
          mountPath: /var/lib/mysql
      volumes:
      - name: mysql-storage
        persistentVolumeClaim:
          claimName: mysql-pvc
---
apiVersion: v1
kind: Service
metadata:
  name: mysql-service
spec:
  type: NodePort
  ports:
  - port: 3306
    targetPort: 3306
    nodePort: 30006
  selector:
    app: mysql
EOF

kubectl apply -f /opt/mysql/mysql-deployment.yaml
  1. 利用cronjob实现备份
mkdir -p /backup/mysql
cat > /opt/mysql/mysql-backup-cronjob.yaml << EOF
apiVersion: batch/v1
kind: CronJob
metadata:
  name: mysql-backup
spec:
  schedule: "0 3 * * *"  # 可以根据需要调整备份时间
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: mysql-backup
            image: mysql:latest  # 确保这个镜像中包含 mysqldump
            command:
            - /bin/sh
            - -c
            - |
              mysqldump -h mysql-service -uroot -p$MYSQL_ROOT_PASSWORD $MYSQL_DATABASE > /backup/mysql/backup-$(date +\%F-\%H\%M\%S).sql
            env:
            - name: MYSQL_ROOT_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mysql-secret
                  key: mysql-root-password
            - name: MYSQL_DATABASE
              valueFrom:
                secretKeyRef:
                  name: mysql-secret
                  key: mysql-database
            volumeMounts:
            - name: backup-storage
              mountPath: /backup/mysql
          volumes:
          - name: backup-storage
            persistentVolumeClaim:
              claimName: mysql-pvc
          restartPolicy: OnFailure
EOF
kubectl apply -f /opt/mysql/mysql-backup-cronjob.yaml
  1. 查看状态
kubectl get pods
#NAME                                READY   STATUS    RESTARTS       AGE
#mysql-deployment-57b4b9987c-h458p   1/1     Running   2 (15m ago)    15m

标签:opt,name,部署,MySQL,yaml,mysql,K8S,backup
From: https://www.cnblogs.com/Ar4te-blog/p/18405435

相关文章

  • MySQL——视图(二)视图管理(7)删除视图
            当视图不再需要时,可以将其删除,删除视图时,只能删除视图的定义,不会删除数据。删除一个或多个视图可以使用DROPVIEW语句,删除视图的基本语法格式如下所示:DROPVIEWIIEEXISTS]view_name[,view_name1]...[RESTRICT|CASCADE]        在上述......
  • MySQL——视图(三)应用实例——视图的应用
            本节将通过一个应用案例让读者熟练掌握在实际开发中创建并使用视图的完整过程。1.案例的目的        掌握视图的创建、查询、更新和删除操作。        假如有来自河北和山东的三个理科学生报考北京大学(PekingUniversity)和清华大学(Tsinghua......
  • 海豚调度器(DolphinScheduler)单机模式的部署与使用
    一、概述1、什么是DolphinScheduler  ApacheDolphinScheduler(下面简称DS) 是一个为企业级应用场景设计的开源任务调度系统,它提供了分布式的、可扩展的并且易于使用的可视化界面,让用户能够高效地管理和调度复杂的工作流任务,覆盖从任务创建到监控的全生命周期数据处理流程......
  • MySQL的SQL语句
    一、SQL1、概念 SQL:StructureQueryLanguage(结构化查询语言),SQL最早是被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准。后来被国际化标准组织(ISO)采纳为关系型数据库语言的国际标准。​2、分类​1)DDL(DataDefinitionLanguage):数据定义语言,用来定义数据库对象......
  • JSP课程设计|基于Jsp和MySql实现的农场信息管理系统
    3.1基本开发环境配置根据上述要求,结合项目开发实际需要,我们将项目所需基本开发环境清单列出如下所示。操作系统:MicrosoftWindow10编程语言:Java编程IDE:JetBrains-IntellijIdeaUltimate服务器:Apache-Tomcat-9.0.6数据库:MySQL5.7.21CommunityServer由于这些环......
  • java毕业设计-基于springboot+vue的高校运动会管理系统设计和实现,基于springboot+vue
    博主介绍:✌️码农一枚,专注于大学生项目实战开发、讲解和毕业......
  • java毕业设计-基于springboot+vue的篮球吧一体化服务平台设计和实现,-基于springboot的
    博主介绍:✌️码农一枚,专注于大学生项目实战开发、讲解和毕业......
  • anolis 8 安装部署spdk
    SPDK的部署可以参考官方https://github.com/spdk/spdk有文档这里记录一下,基于AnolisOSrelease8.6kernel5.10.134-13.an8.x86_64v下的部署以及遇到的问题使用v22版本,这里会gitclonegithub项目,国内访问github会失败,建议自行GG解决github访问过慢问题哈下载......
  • MySQL数据库insert,delete,update,select语句
    MySQL数据库insert,delete,update,select语句是在做数据处理是的重要部分首先我们要先拥有一个表格,这里我建立了一个student表然后在这个表格中添加一些数据这里要使用insert的语句INSERTINTOstudent(NO,NAME,age)VALUES(1001,'张三',20);这里我创建到的表有三个属性......
  • Ubuntu系统一键部署轻量级博客VanBlog并实现无公网IP远程访问
    文章目录前言1.Linux本地部署2.VanBlog简单使用3.安装内网穿透4.创建公网地址5.创建固定公网地址前言今天和大家分享如何在LinuxUbuntu系统搭建一款轻量级个人博客VanBlog,并结合cpolar内网穿透软件生成公网地址,轻松实现随时随地远程访问本地部署的......