首页 > 数据库 >云计算-k8s上使用定时任务配置elatiscdump和mysqldump

云计算-k8s上使用定时任务配置elatiscdump和mysqldump

时间:2024-09-19 14:22:45浏览次数:9  
标签:name ELASTIC 备份 elasticsearch mysqldump k8s backup elatiscdump log

现在很多中间件都是容器化部署到k8s平台上,例如elasticsearch和mysql。一般的商业产品k8s都有针对这些中间的备份功能,但是如果我们要对这些容器的化的中间件导出数据进行备份,可以采用k8s的定时任务来执行

elasticdump定时任务

elasitcdump是一款开源的 ES 数据迁移工具,国内码云地址

 https://gitee.com/AshitaKaze/elasticsearch-dump,有了它就能进行导出迁移

以下是k8s的定时任务

1、使用elasticdump镜像导出容器化的elasticsearch的索引,保存到宿主机指定目录

2、每天的00:30执行

3、导出指定索引

apiVersion: batch/v1
kind: CronJob
metadata:
  name: cpaas-elasticsearch-dump
  namespace: cpaas-system
spec:
  concurrencyPolicy: Allow
  failedJobsHistoryLimit: 20
  jobTemplate:
    metadata:
      creationTimestamp: null
    spec:
      activeDeadlineSeconds: 7200
      backoffLimit: 6
      template:
        metadata:
          creationTimestamp: null
        spec:
          affinity: {}
          containers:
            - args:
                - -ecx
                #使用elasitcdump循环导出指定的索引
                - |
                  suffix=`date +%Y%m%d`;
                  indices=( log-workload-$suffix log-system-$suffix log-kubernetes-$suffix log-platform-$suffix );
                  for index in ${indices[@]}; do elasticdump --limit=1000 --input $ELASTIC_PROTOCOL://$ELASTIC_USERNAME:$ELASTIC_PASSWORD@$ELASTIC_HOST/$index --direction=dump --output=/opt/$index.json; done
              command:
                - /bin/bash
              #elasitc的配置,引入保密字典,作为环境变量注入
              env:
                - name: ELASTIC_USERNAME
                  valueFrom:
                    secretKeyRef:
                      key: username
                      name: elasticsearch-basic-auth
                - name: ELASTIC_PASSWORD
                  valueFrom:
                    secretKeyRef:
                      key: password
                      name: elasticsearch-basic-auth
                - name: ELASTIC_PROTOCOL
                  value: http
                - name: ELASTIC_HOST
                  value: cpaas-elasticsearch:9200
                - name: INDEX_PREFIX
                  value: log-workload
              envFrom:
                - secretRef:
                    name: elasticsearch-basic-auth
              #elasticdump镜像地址
              image: elasticdump/elasticsearch-dump:latest
              imagePullPolicy: IfNotPresent
              name: elasticsearch-dump
              resources:
                limits:
                  cpu: 800m
                  memory: 800Mi
                requests:
                  cpu: 800m
                  memory: 800Mi
              terminationMessagePath: /dev/termination-log
              terminationMessagePolicy: File
              #保存路径
              volumeMounts:
                - mountPath: /opt
                  name: backup
          dnsPolicy: ClusterFirst
          restartPolicy: Never
          schedulerName: default-scheduler
          securityContext: {}
          terminationGracePeriodSeconds: 30
          #保存到宿主机上主机路径
          volumes:
            - hostPath:
                path: /cpaas/esbackup
                type: ""
              name: backup
  schedule: 30 00 * * *
  successfulJobsHistoryLimit: 20
  suspend: false

mysqldump定时任务

以下是mysqldump定时任务

    apiVersion: batch/v1beta1
    kind: CronJob
    metadata:
      name:  mysqldump
    spec:
      jobTemplate:
        spec:
          completions: 1
          template:
            spec:
              restartPolicy: Never
              volumes:
                - name: mysql-master-script
                  hostPath:
                    path: /root/app/mysql/shell #定义备份脚本路径
                - name: mysql-master-backup
                  hostPath:
                    path: /root/app/db/backup  #保存到主机路径
                - name: local-time
                  hostPath:
                    path: /etc/localtime
              containers:
                - name: mysqldump-container
                  image: nacos/nacos-mysql-master:latest
                  volumeMounts:
                    - name: mysql-master-script
                      mountPath: /var/db/script
                    - name: local-time
                      mountPath: /etc/localtime
                    - name: mysql-master-backup
                      mountPath: /var/db/backup #定义保存路径挂载
                  command:
                    - "sh"
                    - "/var/db/script/mysqldump.sh"
      schedule: "30 00 * * *"

备份脚本

  #!/bin/bash
    #保存备份个数
    number=3
    #备份保存路径
    backup_dir=/var/db/backup
    #日期
    dd=`date +%Y%m%d`
    #备份工具
    tool=/usr/bin/mysqldump
    #用户名
    username=root
    #密码
    password=root
    #将要备份的数据库
    database_name=test
    #简单写法  mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.sql
    $tool -u $username -p$password -hmysql-master -P3306 --databases $database_name > $backup_dir/$database_name-$dd.sql
    
    #写创建备份日志
    echo "create $backup_dir/$database_name-$dd.sql" >> $backup_dir/log.txt
    #找出需要删除的备份
    delfile=`ls -l -crt  $backup_dir/*.sql | awk '{print $9 }' | head -1`
    #判断现在的备份数量是否大于$number
    count=`ls -l -crt  $backup_dir/*.sql | awk '{print $9 }' | wc -l`
    if [ $count -gt $number ]
    then
      rm $delfile  //删除最早生成的备份只保留number数量的备份
      #写删除文件日志
      echo "delete $delfile" >> $backup_dir/log.txt
    fi


总结

现在都是容器化部署应用了,现在是要再容器化应用进行运维,备份导出思路跟之前还是基本一致

标签:name,ELASTIC,备份,elasticsearch,mysqldump,k8s,backup,elatiscdump,log
From: https://blog.51cto.com/u_11555417/12056781

相关文章

  • Kubernetes(K8S)实战:构建高可用的微服务架构
    Kubernetes(K8S)实战:构建高可用的微服务架构在云计算与容器化技术日新月异的今天,Kubernetes(简称K8S)凭借其强大的容器编排能力,已成为企业构建云原生应用的首选平台。本文将深入探讨Kubernetes的核心概念、架构设计原则,并通过一个实际案例——构建一个高可用的微服务架构,展示如......
  • 删除k8s集群
    第一步:停止K8S所有节点执行systemctlstopkubeletsystemctlstopdocker 第二步:清空K8S集群设置所有节点执行:kubeadmreset-f 第三步:删除K8S相关软件所有节点执行:列出kube关键字的软件yumlistinstalled|grepkube卸载相关软件yum-yremovekube*再次查看确保都......
  • 记录k8s驱逐告警过程
    1.故障背景上述图片是我司阿里云K8S环境的事件告警。FreeDiskSpaceFailed磁盘空间不足。(实际剩下还有百分之20可用) 2.故障原因前提环境:由于历史遗留问题,整个线上k8s环境的node所有机器磁盘仅有60G,这在生产上是明显不符合环境使用规范的,线上磁盘空间规划极小;且由于该机器......
  • (装)K8s 总体架构及目录结构
    原文:https://www.guoshaohe.com/cloud-computing/kubernetes-source-read/12491.kubernetes总体架构目前想对kubernetes1.21的源码进行一次阅读分析,本篇文章是对k8s的整体架构进行一个大致分析,先要搞清楚每个组件的功能和任务,在根据不同的组件进行深度的源码分析。......
  • k8s集群负载均衡
    动一下小手点一下赞。谢谢!你的赞就是我更新的动力。Kubernetes(K8S)是一个用于自动部署、扩展和管理容器化应用程序的开源平台。在K8S集群中,负载均衡是非常重要的一环,可以实现将流量分发到不同的节点,保证集群的稳定和高可用性。在本文中,我将向您介绍如何在K8S集群中实现负载均衡,并通......
  • k8s集群备份与迁移
    什么是Velero?Velero是一个用Go语言开发的开源工具,用于Kubernetes集群的备份、恢复、灾难恢复和迁移。Velero备份工作流程当用户发起velerobackupcreate时,会执行如下四个动作:velero客户端调用KubernetesAPI创建自定义资源并存储到etcd;BackupController通过Kuber......
  • k8s的RC和RS的区别
    动一下小手点一下赞。谢谢!你的赞就是我更新的动力。在深入了解Kubernetes(K8S)中的ReplicationController(RC)和ReplicaSet(RS)之前,首先我们需要了解它们的概念和作用。RC是Kubernetes早期版本的概念,用于确保在任何时间都能保持指定数量的Pod副本。RS是RC的新版本,提供了更强大的选择器支......
  • 在k8s中,客户端访问服务的链路流程,ingress--->service--->deployment--->pod--->container
                                                                图片来源:自己画的ingress是一个API资源。客户端访问ingress的不同urlingress给客户端返回不同的服务。就和nginx反向代理服务器一样。根据......
  • k8s官网下载模板yaml方法
    动一下小手点一下赞。谢谢!你的赞就是我更新的动力。Kubernetes官网下载模板yaml方法指南概述Kubernetes(简称K8s)是一个开源的容器编排平台,可以实现容器化应用的部署、扩展和管理。Kubernetes官网提供了丰富的资源和文档,其中包括各种示例的模板yaml文件,用于快速部署应用和配置资源。......
  • k8s Service 服务
    目录一、为什么需要Service二、Kubernetes中的服务发现与负载均衡--Service三、用例解读1、Service语法2、创建和查看Service四、HeadlessService五、集群内访问Service六、向集群外暴露Service七、操作示例1、获取集群状态信息2、创建Service、Deployment3、创建客户端......