引言
使用Mysql的時候遇到需要定時備份資料庫的問題,但苦于Mysql自身沒有提供直接的工具,
準備作業
- 一臺Linux(Centos7為例)服務器,
- 安裝Docker服務,
- 安裝并啟動Mysql容器服務,
安裝7z壓縮工具(可選)
安裝7z的目的主要是用于對資料庫備份后的檔案的壓縮和加密,如果不需要也可以跳過此步驟,
yum -y install epel-release
yum -y install p7zip p7zip-plugins
安裝完成后使用以下命令測驗時候安裝成功
7za -h
撰寫Shell檔案
給出一個備份的范例
#!/bin/bash
# 資料庫引數
backupDatabase=<資料庫名稱>
password=<資料庫密碼>
# 存放備份的目錄,可以是任意位置,先創建并賦權
baseDir=/data/databack/
# 最終檔案名,使用類似 mysql_database_20201231.sql
fileName=mysql_${backupDatabase}_`date +%Y%m%d%H%M%S`
# 備份資料庫 其中mysql代表容器名稱,如果沒有名稱可以用其他方法代替
docker exec mysql mysqldump -uroot -p${password} ${backupDatabase} > ${baseDir}${fileName}.sql
加密并壓縮資料庫檔案并洗掉超過90天的備份檔案(可選)
如果需要對資料庫加密并洗掉指定天數前的備份,可以在Shell檔案中追加以下命令,
# 必須先正確安裝7z才能使用7za命令壓縮檔案
# 加密壓縮 使用7zip 密碼123456
7za a ${baseDir}${fileName}.7z ${baseDir}${fileName}.sql -p123456
# 洗掉剛剛備份的sql檔案,留下壓縮的
rm -f ${baseDir}${fileName}.sql;
# 洗掉大于90天的備份資料
find ${baseDir} -mtime +90 -name "mysql_${backupDatabase}_*.7z" -exec rm -rf {} \;
在Linux添加定時任務
添加定時任務需要使用到Linux的crontab服務,我們可以通過下列命令來檢測并安裝這個服務,
# 檢查crontab工具是否安裝
crontab -l
# 檢查crond服務是否啟動
service crond status
# 如果未安裝服務我們需要進行安裝
yum install vixie-cron
yum install crontabs
再確認安裝完成后我們使用命令 crontab -e 打開crontab的編輯功能,添加如下示例:
# 定時任務 每日0點備份
# 注意別忘記 sh 命令
0 0 * * * sh /root/databack/dockerMysqlBackup.sh
添加完成后可以使用命令(systemctl restart crond),重啟下crond服務確保服務能正常運行,
crontab格式介紹
參考生成工具 https://tool.lu/crontab/
格式: * * * * * comand(*以空格或tab隔開)
- 第一個* : 分鐘(0--59)
- 第二個* : 小時(0--23)
- 第三個* : 日期(0--31)
- 第四個* : 月份(1--12)
- 第五個* : 星期0--7(0或者7表示星期天)
- comand : 要執行的操作
舉例:
- 每晚21:30重啟apache: 30 21 * * * service httpd restart
- 每月1、10、22日的4:45重啟apache : 45 4 1,10,22 * * service httpd restart
- 每月1到10日的4:45重啟apache : 45 4 1-10 * * service httpd restart
- 每隔兩分鐘重啟apache : */2 * * * * service httpd restart 或者 1-59/2 * * * * service httpd restart
- 每晚11點到早上7點間,每隔1小時重啟apache : 0 23-7/1 * * * service httpd restart
- 每晚18:00至23:00,每隔30分鐘重啟apache : 0,30 18-23 * * * service httpd restart 或 0-59/30 18-23 * * * service httpd restart
本文來自博客園,作者:一塊白板,轉載請注明原文鏈接:https://www.cnblogs.com/ykbb/p/15923706.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/431398.html
標籤:其他
