數據庫的備份,對於生產環境來講尤其重要,數據庫的備份分爲物理備份和邏輯備份。mysql
物理備份:使用相關的複製命令直接將數據庫的數據目錄中的數據複製一份貨多分副本,常使用工具:XtraBackup。sql
邏輯備份:使用mysql自帶的mysqldump命令把須要備份的數據以sql語句的形式存儲起來。shell
下邊咱們將使用mysqldump命令進行數據備份。使用自動任務進行每日備份。數據庫
mkdir /usr/local/mysqlDataBackup
cd /usr/local/mysqlDataBackup
backup.shbash
單數據庫腳本:工具
#!/bin/bash #This scripts is for auto backup databases #create by weijb at 2021-07-28 #delete data from 7 day before DATAdelete=‘date +%F -d "-7 day"‘ rm -rf /usr/local/mysqlDataBackup/*_${DATAdelete}.sql.gz MYSQL_CMD=/usr/bin/mysqldump MYSQL_USER=帳號 MYSQL_PWD=密碼 DATA=‘date +%F‘ DBname=test_db ${MYSQL_CMD} -u${MYSQL_USER} -p${MYSQL_PWD} --compact -B ${DBname} | gzip >/usr/local/mysqlDataBackup/${DBname}_${DATA}.sql.gz
解析:優化
DATAdelete=‘date +%F -d "-7 day"‘ 當前時間前7天的日期spa
rm -rf /usr/local/mysqlDataBackup/*_${DATAdelete}.sql.gz 刪除前7天的備份數據,節省空間,只保留最新的7天數據rest
MYSQL_CMD=/usr/bin/mysqldump mysql自帶的mysqldump命令所在的位置
MYSQL_USER=帳號 mysql鏈接的帳號
MYSQL_PWD=密碼 mysql鏈接的密碼
DATA=‘date +%F‘ 獲取當前日期,%F 表示格式:%Y-%m-%d 例如:2021-07-28
DBname=test_db 須要備份的數據庫名,當前的數據庫名爲:test_db
${MYSQL_CMD} -u${MYSQL_USER} -p${MYSQL_PWD} --compact -B ${DBname} | gzip >/usr/local/mysqlDataBackup/${DBname}_${DATA}.sql.gz
--compact 優化輸出信息
-B 包含建庫的語句
gzip 壓縮備份,減小備份的文件大小
usr/local/mysqlDataBackup/${DBname}_${DATA}.sql.gz 備份文件保存的路徑以及名字
多數據庫備份:code
#!/bin/bash #This scripts is for auto backup databases #create by weijb at 2021-07-28 #delete data from 7 day before
DATAdelete=‘date +%F -d "-7 day"‘ rm -rf /usr/local/mysqlDataBackup/*_${DATAdelete}.sql.gz MYSQL_CMD=/usr/bin/mysqldump MYSQL_USER=帳號 MYSQL_PWD=密碼 DATA=‘date +%F‘ DBname=‘ mysql -u${MYSQL_USER} -p${MYSQL_PWD} -e "show databases;" | sed '1,5d'‘ for DBname in ${DBname} do ${MYSQL_CMD} -u${MYSQL_USER} -p${MYSQL_PWD} --compact -B ${DBname} | gzip >/usr/local/mysqlDataBackup/${DBname}_${DATA}.sql.gz done
解析:
-e "show databases;" | sed '1,5d'‘ 顯示全部的數據庫,並截取mysql自帶的information_schema、mysql、performance_schema、sys意外的全部數據庫。
cd /usr/local/mysqlDataBackup
chmod +x backup.sh
sh backup.sh
/usr/local/mysqlDataBackup 下生成文件說明編寫成功。
天天凌晨1點對數據庫進行備份:
crontab -e
輸入i進行編輯:
00 01 * * * /usr/local/mysqlDataBackup/backup.sh
使用esc退出文件編輯,輸入 :wq 保存並退出。
查詢任務是否設置成功:
crontab -l
重啓crontab服務:
service crond restart
至此,mysql的自動任務腳本備份數據庫到此完成。