最近有項目需要定期備份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