一、前言
1咧党、本文主要內(nèi)容
- 實(shí)現(xiàn)數(shù)據(jù)庫全量備份
- 實(shí)現(xiàn)定時(shí)執(zhí)行備份
- 實(shí)現(xiàn)定時(shí)清理7天之前的備份
2秘蛔、環(huán)境信息
環(huán)境/工具 | 說明 |
---|---|
MySQL | v5.7.x |
mysqldump | MySQL自帶的數(shù)據(jù)導(dǎo)出工具 |
crontab | 功能相當(dāng)于Windows的任務(wù)計(jì)劃工具 |
二、備份準(zhǔn)備&備份測試
1、備份目錄準(zhǔn)備
#mysql專用目錄
mkdir /mysql
#mysql備份目錄
mkdir /mysql/backup
#mysql備份腳本
mkdir /mysql/backup/scripts
#mysql備份文件
mkdir /mysql/backup/files
#mysql備份日志
mkdir /mysql/backup/logs
2深员、備份腳本準(zhǔn)備
- 新建完整備份腳本
vi /mysql/backup/scripts/backup_full.sh
- 腳本內(nèi)容
#!/bin/bash
#備份目錄
BACKUP_ROOT=/mysql/backup
BACKUP_FILEDIR=$BACKUP_ROOT/files
BACKUP_LOGDIR=$BACKUP_ROOT/logs
#當(dāng)前日期
DATE=$(date +%Y%m%d)
######備份######
#查詢所有數(shù)據(jù)庫
#-uroot -p123456表示使用root賬號執(zhí)行命令负蠕,且root賬號的密碼為:123456
DATABASES=$(mysql -uroot -p123456 -e "show databases" | grep -Ev "Database|sys|information_schema")
#DATABASES=$(mysql -uroot -p123456 -e "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME NOT IN ('sys','mysql','information_schema','performance_schema');" | grep -v "SCHEMA_NAME","ken.io")
echo $DATABASES
#循環(huán)數(shù)據(jù)庫進(jìn)行備份
for db in $DATABASES
do
echo
echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz BEGIN----------
mysqldump -uroot -pRoot@1024 --default-character-set=utf8 -q --lock-all-tables --flush-logs -E -R --triggers -B ${db} | gzip > $BACKUP_FILEDIR/${db}_$DATE.sql.gz
echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz COMPLETE----------
echo
done
echo "done"
3、備份測試&驗(yàn)證
注意此處的報(bào)錯(cuò):mysqldump: Got errno 11 on write
是因?yàn)楸4娴奈募A不存在倦畅,需要提前手動創(chuàng)建sh腳本里面涉及到的所有文件夾
#執(zhí)行備份腳本
sh /mysql/backup/scripts/backup_full.sh
#查看備份文件
ll /mysql/backup/files -h
#解壓指定文件({file}自己替換成備份的文件)
gunzip /mysql/backup/files/{file}
三遮糖、定時(shí)任務(wù)
- 安裝crontab
yum install -y crontab
1、定時(shí)執(zhí)行MySQL完整備份
- 創(chuàng)建定時(shí)備份任務(wù)
#添加定時(shí)任務(wù)
crontab -e
#每天凌晨3點(diǎn)執(zhí)行
00 3 * * * sh /mysql/backup/scripts/backup_full.sh
#查看定時(shí)任務(wù)
crontab -l
2叠赐、定時(shí)清理7天以前的備份
- 創(chuàng)建文件清理腳本
#創(chuàng)建腳本文件
vi /mysql/backup/scripts/backup_full_clean.sh
#寫入以下內(nèi)容
#!/bin/bash
find /mysql/backup/files -mtime +7 -name "*.gz" -exec rm -rf {} \;
- 創(chuàng)建定時(shí)清理任務(wù)
#添加定時(shí)任務(wù)
crontab -e
#每天凌晨1點(diǎn)執(zhí)行
00 1 * * * sh /mysql/backup/scripts/backup_full_clean.sh
#查看定時(shí)任務(wù)
crontab -l
四欲账、備注
1、crontab命令示例
命令 | 說明 |
---|---|
* * * * * command |
每1分鐘執(zhí)行一次command |
30 * * * * command |
每30分鐘執(zhí)行一次command |
3,59 * * * * myCommand |
每小時(shí)的第3和第59分鐘執(zhí)行 |
3,59 9-18 * * * myCommand |
在上午9點(diǎn)到18點(diǎn)的第3和第59分鐘執(zhí)行 |
3,59 9-18 */2 * * myCommand |
每隔兩天的上午9點(diǎn)到18點(diǎn)的第3和第59分鐘執(zhí)行 |
3,59 9-18 * * 1 myCommand |
每周一上午9點(diǎn)到18點(diǎn)的第3和第59分鐘執(zhí)行 |
2芭概、附錄
- https://blog.csdn.net/zmcyu/article/details/75353245
- http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html
本文由 ken.io 創(chuàng)作赛不,采用CC BY 3.0 CN協(xié)議 進(jìn)行許可。 可自由轉(zhuǎn)載罢洲、引用踢故、甚至修改,但需署名作者且注明出處奏路。