k8s利用jobs完成对mysql数据库的修改插入

需要对一个k8s上mysql数据库修改插入数据,sql语句经常会变动。
可以建议使用jobs和configmap的方式完成。

1、完成dockerfile,需要安装mysql前台客户端和部署shell脚本。

FROM centos7-jdk8

COPY init.sh /opt/
COPY mysql-community-client-5.7.23-1.el7.x86_64.rpm /opt/
RUN rpm -ivh /opt/mysql-community-client-5.7.23-1.el7.x86_64.rpm --nodeps --force
RUN mkdir /opt/sql
RUN chmod +x /opt
WORKDIR /opt

init.sh脚本:

#!/bin/bash
#execute all script in specified directory
MYDATE=`date +%F'-'%T'-'%w`
MYSQL_PATH=/opt/sql/common #指定的目录
mysql -h127.0.0.1 -uroot -p12345#LC < /opt/sql/init.sql
for file in ${MYSQL_PATH}/*
do
if [ -f "$file" ] ; then
postfix=`echo $file | awk -F'.' '{print  "."$NF}'`
  if [ $postfix = ".sql" ] ; then
        mysql -h127.0.0.1 -uroot -p12345 < $file 
  fi
fi
done

2、完成jobs

apiVersion: batch/v1
kind: Job
metadata:
 name: mysqlinit
spec:
 template:
  metadata:
   labels:
    job-name: mysqlinit
  spec:
   containers:
   - name: mysqlinit1
     image: mysql-init:1.0.0
     command: ["sh", "init.sh"]
     env:
       - name: MYSQL_ROOT_PASSWORD
         valueFrom:
           configMapKeyRef:
             name: allsmart-config
             key: MYSQL_ROOT_PASSWORD
     volumeMounts:
       - name: init-config
         mountPath: /opt/sql
   volumes:
       - name: init-config
         configMap:
           name: allsmart-config
           items:
            - key: cloud.sql
              path: common/cloud.sql
            - key: config.sql
              path: common/config.sql
   restartPolicy: Never

执行jobs,即可完成对mysql 的修改插入。
原理:所有的sql文件,如cloud.sql都是通过configmap挂载的,脚本会遍历目录common下的所有sql文件执行,后续需要修改的话,直接修改configmap即可。
需要添加sql也只需要修改jobs的yaml文件。
可以参照此方法完成k8s上数据库的插入部署。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,K8S中的MySQL数据库备份脚本可以使用多种工具和脚本来实现。其中,常用的工具包括mysqldump、xtrabackup、mysqlbackup和mysql shell。这些工具可以通过编写shell脚本或Windows bat脚本来执行备份操作。 一个示例的备份脚本如下所示: ```bash #!/bin/bash backup_path="/opt/app-ai/deepwise/data/mysql-backup" data_dir="/opt/app-ai/deepwise/data/mysql-data" DATE=$(date +%Y-%m-%d_%H-%M-%S) backup(){ if \[ ! -z "${data_dir}" \];then mkdir -p ${backup_path} date >> ${backup_path}/${DATE}.log echo "innobackupex --user=root --password=password --host=mysql-headless ${backup_path} > ${backup_path}/${DATE}.log 2>&1 &" innobackupex --user=root --password=password --host=mysql-headless ${backup_path} > ${backup_path}/${DATE}.log 2>&1 date >> ${backup_path}/${DATE}.log fi } clean(){ find ${backup_path}/ -name "*" -mtime +14 -exec rm -rf {} \; } backup clean ``` 这个脚本使用innobackupex工具来执行MySQL备份操作,并将备份文件存储在指定的路径中。同时,还包括了清理过期备份文件的功能。 此外,还可以使用Kubernetes的CronJob来定期执行增量备份操作。一个示例的CronJob配置如下所示: ```yaml apiVersion: batch/v1beta1 kind: CronJob metadata: namespace: deepwise name: mysql-incdump spec: jobTemplate: spec: completions: 1 template: spec: restartPolicy: Never volumes: - name: mysql-script hostPath: path: /opt/app-ai/deepwise/data/scripts - name: mysql-backup hostPath: path: /opt/app-ai/deepwise/data/mysql-backup - name: local-time hostPath: path: /etc/localtime - name: mysql-data hostPath: path: /opt/app-ai/deepwise/data/mysql-data containers: - name: mysqldump-container image: percona/percona-xtrabackup:2.4 volumeMounts: - name: mysql-script mountPath: /opt/app-ai/deepwise/data/scripts - name: local-time mountPath: /etc/localtime - name: mysql-backup mountPath: /opt/app-ai/deepwise/data/mysql-backup - name: mysql-data mountPath: /var/lib/mysql command: - "sh" - "/opt/app-ai/deepwise/data/scripts/backup_inc.sh" schedule: "0 0 * * *" ``` 这个CronJob配置使用percona/percona-xtrabackup镜像来执行增量备份操作,并将备份文件存储在指定的路径中。备份脚本backup_inc.sh位于/opt/app-ai/deepwise/data/scripts目录下。 请根据实际情况修改脚本和配置文件中的路径和参数,以适应您的环境和需求。 #### 引用[.reference_title] - *1* [分享(2)一个 mysqldump 备份 MySQL 数据库的脚本](https://blog.csdn.net/weixin_44496870/article/details/129706015)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [[kubernetes]-使用cronjob定时备份mysql](https://blog.csdn.net/xujiamin0022016/article/details/124648643)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值