日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

我們一起聊聊K8s定時(shí)備份MySQL并發(fā)送到指定郵箱

來源: 責(zé)編: 時(shí)間:2024-01-02 09:31:32 201觀看
導(dǎo)讀一、背景:一開始的初衷是,想寫一個(gè)腳本來監(jiān)控服務(wù)器的高占用率進(jìn)程并通過郵件發(fā)送給我,然后突發(fā)奇想,可以使用這種方式來備份我的數(shù)據(jù)庫,開始動手!二、設(shè)計(jì)思路:通過編寫Shell腳本,調(diào)用Linux的mail工具,MySQLDump的方式來保存

一、背景:

一開始的初衷是,想寫一個(gè)腳本來監(jiān)控服務(wù)器的高占用率進(jìn)程并通過郵件發(fā)送給我,然后突發(fā)奇想,可以使用這種方式來備份我的數(shù)據(jù)庫,開始動手!a2E28資訊網(wǎng)——每日最新資訊28at.com

二、設(shè)計(jì)思路:

通過編寫Shell腳本,調(diào)用Linux的mail工具,MySQLDump的方式來保存數(shù)據(jù)庫的sql文件,通過Mail工具添加到附件,最后發(fā)送到我的郵箱。a2E28資訊網(wǎng)——每日最新資訊28at.com

三、編寫啟動腳本

首先我們來編寫一個(gè)啟動腳本 為了方便以后的個(gè)性化配置,我們將腳本中的變量都提取到一個(gè)application.yml文件中,文件如下:a2E28資訊網(wǎng)——每日最新資訊28at.com

RUNTIME: 084900 HOST: 172.16.1.2USER: rootPORT: 3306PASSWORD: 123456DATABASE: deanTARGETMAIL: deanmr@qq.com

接下來我們來寫一下shell腳本,邏輯也很簡單,當(dāng)前時(shí)間與啟動時(shí)間相同時(shí),則調(diào)用sendmail函數(shù)發(fā)送郵件a2E28資訊網(wǎng)——每日最新資訊28at.com

#!/bin/bashRUNTIME=$(cat ./application.yml | grep RUNTIME| awk '{print $2}')HOST=$(cat ./application.yml | grep HOST| awk '{print $2}')USER=$(cat ./application.yml | grep USER| awk '{print $2}')PORT=$(cat ./application.yml | grep PORT| awk '{print $2}')PASSWORD=$(cat ./application.yml | grep PASSWORD| awk '{print $2}')DATABASE=$(cat ./application.yml | grep DATABASE| awk '{print $2}')TARGETMAIL=$(cat ./application.yml | grep TARGETMAIL| awk '{print $2}')function  sendmail(){  echo -e "mysqlbak_$CURRENT_TIME" |mail -s "mysqlbak_$CURRENT_TIME" -a $DATABASE.sql $TARGETMAIL  sleep 1}while truedo   CURRENT_TIME=$(date +%H%M%S)  if [ $CURRENT_TIME = $RUNTIME ];then    echo "starting bak mysql database"    sendmail    continue  else    echo $CURRENT_TIME    sleep 1  fidone

四、構(gòu)建鏡像

因?yàn)槲覀冏詈笠诺絢8s平臺上的,所以我們要構(gòu)建一個(gè)鏡像,在構(gòu)建鏡像之前,請先把a(bǔ)pplication.yml demo.sh Dockerfile放在同一目錄下 Dockerfile如下:PS:添加了mysql的客戶端,郵件mail客戶端a2E28資訊網(wǎng)——每日最新資訊28at.com

FROM centosRUN mkdir /app && yum install -y mysql.x86_64 sendmail  mailx libreport-plugin-mailx WORKDIR /appCOPY demo.sh .COPY application.yml .CMD ["/bin/sh","demo.sh"]

使用docker build命令構(gòu)建鏡像,要記得加一下最后的點(diǎn)a2E28資訊網(wǎng)——每日最新資訊28at.com

docker build -t mysqlmail-bak:1.0.1 .

五、添加邊車容器

邊車容器(sidecar):邊車容器就是與主容器一起在一個(gè)pod中運(yùn)行的容器,為業(yè)務(wù)容器賦能,共享一個(gè)網(wǎng)絡(luò)空間,所以可以用127.0.0.1:3306連接主容器的數(shù)據(jù)庫。a2E28資訊網(wǎng)——每日最新資訊28at.com

5.1 創(chuàng)建配置文件

為了方便調(diào)試,我把里面的shell腳本也掛載出來。創(chuàng)建兩個(gè)configmap,分別對應(yīng)容器內(nèi)的配置文件與shell腳本,后面如果不需要調(diào)試可以取消mysqlshell的掛載。a2E28資訊網(wǎng)——每日最新資訊28at.com

apiVersion: v1kind: ConfigMapmetadata:  name: mysqlmail-conf  namespace: deandata:  application.yml: |     RUNTIME: 105800    HOST: 127.0.0.1    USER: root    PASSWORD: 123456    DATABASE: dean    TARGETMAIL: deanmr@qq.com---apiVersion: v1kind: ConfigMapmetadata:  name: mysqlmail-shell  namespace: deandata:  demo.sh: |    #!/bin/bash    RUNTIME=$(cat ./application.yml | grep RUNTIME| awk '{print $2}')    HOST=$(cat ./application.yml | grep HOST| awk '{print $2}')    USER=$(cat ./application.yml | grep USER| awk '{print $2}')    PASSWORD=$(cat ./application.yml | grep PASSWORD| awk '{print $2}')    DATABASE=$(cat ./application.yml | grep DATABASE| awk '{print $2}')    TARGETMAIL=$(cat ./application.yml | grep TARGETMAIL| awk '{print $2}')        function  sendmail(){      mysqldump -h$HOST  -u$USER -p$PASSWORD  --complete-insert --skip-add-drop-table  --column-statistics=0 --hex-blob $DATABASE  > $DATABASE.sql      echo -e "mysqlbak_$CURRENT_TIME" |mail -s "mysqlbak_$CURRENT_TIME" -a $DATABASE.sql $TARGETMAIL      sleep 1    }    while true    do       CURRENT_TIME=$(date +%H%M%S)      if [ $CURRENT_TIME = $RUNTIME ];then        echo "starting bak mysql database"        sendmail        continue      else        echo $CURRENT_TIME        sleep 1      fi    done

5.2 創(chuàng)建有狀態(tài)服務(wù)部署文件

我們的deploy文件使用的是上篇文章中創(chuàng)建的mysql有狀態(tài)服務(wù)的yamla2E28資訊網(wǎng)——每日最新資訊28at.com

apiVersion: apps/v1kind: StatefulSetmetadata:  name: mysql  namespace: deanspec:  serviceName: mysql-service  selector:    matchLabels:      app: mysql  replicas: 1  template:    metadata:      labels:        app: mysql    spec:      containers:      - name: mysqlmail-bak        imagePullPolicy: IfNotPresent        image: mysqlmail-bak:1.0.1        volumeMounts:        - name: mysqlmail-conf          mountPath: /app/application.yml          subPath: application.yml        - name: mysqlmail-shell          mountPath: /app/demo.sh          subPath: demo.sh      - name: mysql-pod        imagePullPolicy: IfNotPresent        image: mysql:5.7        env:        - name: MYSQL_ROOT_PASSWORD          value: "123456"        ports:        - containerPort: 3306          name: msyql-listin        volumeMounts:        - name: mysql-data            mountPath: /var/lib/mysql          subPath: mysql-data        - name: mysql-conf          mountPath: /etc/mysql/conf.d/my.cnf          subPath: my.cnf      volumes:      - name: mysql-data        hostPath:          path: /data/mysql      - name: mysql-conf        configMap:          name: mysql-conf      - name: mysqlmail-conf        configMap:           name: mysqlmail-conf      - name: mysqlmail-shell        configMap:          name: mysqlmail-shell---apiVersion: v1kind: Servicemetadata:  name: mysql-service  namespace: dean  labels:    app: mysqlspec:  ports:  - targetPort: 3306    port: 3306  clusterIP: None  selector:     app: mysql

六、測試

我們上面給他定的時(shí)間是RUNTIME: 105800,上海時(shí)區(qū)也就是18點(diǎn)58分,我們來看一下效果 查看日志, 注意:當(dāng)一個(gè)pod包含多個(gè)容器時(shí),要使用 -c 參數(shù)指定查看哪個(gè)容器a2E28資訊網(wǎng)——每日最新資訊28at.com

[root@VM-24-15-centos solo]# kubectl logs -n solo mysql-0  -c mysqlmail-bak | grep mysql -C 5105755105756105757105758105759starting bak mysql databasemysqldump: [Warning] Using a password on the command line interface can be insecure.105801105802

從日志可以看到,郵件已經(jīng)發(fā)送成功了!我們來去郵箱看一下,發(fā)現(xiàn)也已經(jīng)成功了,至此我們的實(shí)驗(yàn)完美完成!a2E28資訊網(wǎng)——每日最新資訊28at.com


a2E28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-55253-0.html我們一起聊聊K8s定時(shí)備份MySQL并發(fā)送到指定郵箱

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 我們一起聊聊K8s定時(shí)備份MySQL并發(fā)送到指定郵箱

下一篇: 你是否想知道如何應(yīng)對高并發(fā)?Go語言為你提供了答案!

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 對標(biāo)蘋果的靈動島 華為帶來實(shí)況窗功能

    繼蘋果的靈動島之后,華為也在今天正式推出了“實(shí)況窗”功能。據(jù)今天鴻蒙OS 4.0的現(xiàn)場演示顯示,華為的實(shí)況窗可以更高效的展現(xiàn)出實(shí)時(shí)通知,比如鎖屏上就能看到外賣、打車、銀行
  • 7月安卓手機(jī)好評榜:三星S23Ultra好評率第一

    性能榜和性價(jià)比榜之后,我們來看最后的安卓手機(jī)好評榜,數(shù)據(jù)來源安兔兔評測,收集時(shí)間2023年7月1日至7月31日,僅限國內(nèi)市場。第一名:三星Galaxy S23 Ultra好評率:95.71%在即將迎來新
  • 6月安卓手機(jī)性能榜:vivo/iQOO霸占旗艦排行榜前三

    2023年上半年已經(jīng)正式過去了,我們也迎來了安兔兔V10版本,在新的驍龍8Gen3和天璣9300發(fā)布之前,性能榜的榜單大體會以驍龍8Gen2和天璣9200+為主,至于那顆3.36GHz的驍龍8Gen2領(lǐng)先
  • 28個(gè)SpringBoot項(xiàng)目中常用注解,日常開發(fā)、求職面試不再懵圈

    前言在使用SpringBoot開發(fā)中或者在求職面試中都會使用到很多注解或者問到注解相關(guān)的知識。本文主要對一些常用的注解進(jìn)行了總結(jié),同時(shí)也會舉出具體例子,供大家學(xué)習(xí)和參考。注解
  • 之家push系統(tǒng)迭代之路

    前言在這個(gè)信息爆炸的互聯(lián)網(wǎng)時(shí)代,能夠及時(shí)準(zhǔn)確獲取信息是當(dāng)今社會要解決的關(guān)鍵問題之一。隨著之家用戶體量和內(nèi)容規(guī)模的不斷增大,傳統(tǒng)的靠"主動拉"獲取信息的方式已不能滿足用
  • 從零到英雄:高并發(fā)與性能優(yōu)化的神奇之旅

    作者 | 波哥審校 | 重樓作為公司的架構(gòu)師或者程序員,你是否曾經(jīng)為公司的系統(tǒng)在面對高并發(fā)和性能瓶頸時(shí)感到手足無措或者焦頭爛額呢?筆者在出道那會為此是吃盡了苦頭的,不過也得
  • 騰訊VS網(wǎng)易,最卷游戲暑期檔,誰能笑到最后?

    作者:無銹缽來源:財(cái)經(jīng)無忌7月16日晚,上海1862時(shí)尚藝術(shù)中心。伴隨著幻象的精準(zhǔn)命中,碩大的熒幕之上,比分被定格在了14:12,被寄予厚望的EDG戰(zhàn)隊(duì)以絕對的優(yōu)勢戰(zhàn)勝了BLG戰(zhàn)隊(duì),拿下了總決
  • 三星顯示已開始為AR設(shè)備研發(fā)硅基LED微顯示屏

    7月18日消息,據(jù)外媒報(bào)道,隨著蘋果首款頭顯產(chǎn)品Vision Pro在6月份正式推出,AR/VR/MR等頭顯產(chǎn)品也就將成為各大公司下一個(gè)重要的競爭領(lǐng)域,對顯示屏這一關(guān)
  • 華為舉行春季智慧辦公新品發(fā)布會 首次推出電子墨水屏平板

    北京時(shí)間2月27日晚,華為在巴塞羅那舉行春季智慧辦公新品發(fā)布會,在海外市場推出之前已經(jīng)在中國市場上市的筆記本、平板、激光打印機(jī)等辦公產(chǎn)品,并首次推出搭載
Top 主站蜘蛛池模板: 肃宁县| 策勒县| 黑龙江省| 黔西| 乌兰县| 阿城市| 胶南市| 中江县| 克拉玛依市| 星座| 华宁县| 明水县| 行唐县| 思茅市| 霍州市| 福建省| 库尔勒市| 蒙山县| 融水| 友谊县| 湖北省| 临漳县| 廉江市| 博罗县| 新乡市| 郸城县| 大石桥市| 华坪县| 海城市| 沾化县| 兰溪市| 肇庆市| 喜德县| 广州市| 聂拉木县| 余姚市| 永嘉县| 谷城县| 黑龙江省| 平顶山市| 多伦县|