Linux計划任務定時備份數據


最近有項目需要定期備份mysql數據的需求,通過linux系統的crontab計划任務實現了一個簡單demo,通過mysqldump命令對mysql數據進行備份。

首先新建一個腳本文件:mysqlbak.sh(我這里的目錄是 /data/mysqlbak/ )

#!/bin/bash

#備份文件存放路徑
backupdir=/data/mysqlbak
time=` date +%Y%m%d%H%M `

echo -e `date '+%F %T %A'` " Crontab Start \n" >> $backupdir/crontab_mysqlbak_log_`date +'%Y'`.log

#備份所有數據庫並打包
mysqldump  -h192.168.2.150 -uxxh -p"xxh密碼"  --all-databases --single-transaction --default-character-set=utf8 |gzip > $backupdir/mysql$time.sql.gz
#刪除7天之外的備份文件
find $backupdir -name "mysql*.sql.gz" -type f -mtime +7 -exec rm {} \; > /dev/null 2>&1

echo -e `date '+%F %T %A'` " Crontab End \n" >> $backupdir/crontab_mysqlbak_log_`date +'%Y'`.log

保存成 mysqlbak.sh,然后執行  sudo chmod +x mysqlbak.sh 給腳本添加可執行權限。

然后把這個腳本添加到任務計划中:

sudo crontab -u root -e 或者  sudo crontab -e 即可進入任務計划。

#計划任務每天3:00執行腳本
00 03 * * * /bin/bash /data/mysqlbak/mysqlbak.sh

到這里就完成了。然后過了幾天再來查看效果如下:

 通過命令 tail -f crontab_log_2020.log 查看輸出的日志:

 

 這個案例實現了基本功能,如果要其他功能請自行修改。 

 

【mysql備份全部全部數據庫示例】

1,備份數據庫,排除mysql本身的庫以及被鎖定的表。

2,備份數據庫,排除mysql本身的庫以及被鎖定的表,同時壓縮備份。

#備份數據庫,排除mysql本身的庫以及被鎖定的表。
mysql -h10.90.2.189 -u用戶名 -p"密碼" -P3306 -e 'show databases;'|grep -Ev "Database|information_schema|mysql|performance_schema|testxxx" |xargs mysqldump -h10.90.2.189 -u用戶名 -p"密碼" -P3306 --databases > 333.sql

#備份數據庫,排除mysql本身的庫以及被鎖定的表。同時壓縮備份。
mysql -h10.90.2.189 -u用戶名 -p"密碼" -P3306 -e 'show databases;'|grep -Ev "Database|information_schema|mysql|performance_schema|testxxx" |xargs mysqldump -h10.90.2.189 -u用戶名 -p"密碼" -P3306 --databases --single-transaction --default-character-set=utf8 |gzip > 344.sql.gz

 

#備份數據庫,排除mysql本身的庫以及被鎖定的表。
mysql -h10.90.2.189 -u用戶名 -p"密碼" -P3306 -e 'show databases;'|grep -Ev "Database|information_schema|mysql|performance_schema|testxxx" |xargs mysqldump -h10.90.2.189 -u用戶名 -p"密碼" -P3306 --databases > 333.sql

#備份數據庫,排除mysql本身的庫以及被鎖定的表。同時壓縮備份。
mysql -h10.90.2.189 -u用戶名 -p"密碼" -P3306 -e 'show databases;'|grep -Ev "Database|information_schema|mysql|performance_schema|testxxx" |xargs mysqldump -h10.90.2.189 -u用戶名 -p"密碼" -P3306 --databases --single-transaction --default-character-set=utf8 |gzip > 344.sql.gz

 

 

 

【mysql恢復備份】

下面示例常見的根據備份恢復mysql數據的方法:

解壓:
gzip -d mysql2020703.sql.gz

非壓縮備份文件恢復:
mysql -uxxh -p < mysql2020703.sql

從壓縮文件直接恢復:
gzip < mysql22020703.sql.gz | mysql -h 192.168.10.125 -P3306 -u xxh -p"mysql密碼"

 

【完】

【shell腳本按當前日期輸出日志】https://www.cnblogs.com/xiongzaiqiren/p/11413242.html

【Linux計划任務,定時清空日志】https://www.cnblogs.com/xiongzaiqiren/p/11190371.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM