前言:
備份很重要、備份很重要、備份很重要。(PS:對應備份我也不免入俗了,重要的事情說三遍!!!)
但是我們不用每次都自己操作備份或導出數據文件,可以Shell腳本幫我們自動完成這項重復勞動。
備份數據庫前的思考:確定備份文件存放位置、備份文件名策略、是否自動刪除超過指定天數的歷史文件。
需要備份哪些數據庫還是所有的數據庫。
MySQL json?導出備份文件后,是否需要對備份的數據文件進行壓縮減小體積。
想清楚上面的幾個問題后,就可以著手操作了。
準備條件
使用[mysqldump]配置文件方法創建備份專用賬號CREATE USER 'backupuser'@'localhost' IDENTIFIED BY 'p455w0rd';
GRANT SELECT, SHOW VIEW, LOCK TABLES, RELOAD, REPLICATION CLIENT ON *.* TO 'backupuser'@'localhost';
FLUSH PRIVILEGES;
MySQL source,將1中添加的賬號添加至配置文件中[mysqldump]
user=backupuser
password=p455w0rd
備份腳本#!/bin/bash
# 直接指定備份數據庫使用的用戶名、密碼。(不建議)
# user="db_username"
MySQL手機版。# password="db_password"
# 指定備份具體的數據庫,多個數據庫,中間用空格進分割。如果全部備份可以使用參數 --all-databases
# dbname="db1 db2 db3"
# 指定備份存放目錄、備份文件名、備份文件名日期信息
backup_path="/data/bak/db"
backupname="db"
MySQL cluster、date=$(date "+%Y%m%d")
echo "Backing up mysql databases..."
# 檢測是否已存在備份文件,如有,進行刪除操作
if [ -f "$backup_path/$backupname-$date.sql.bz2" ]; then
rm -fv $backup_path/$backupname-$date.sql*
fi
MYSQL8.0?echo "Dumping databases..."
## 直接指定username, password(不推薦)
# mysqldump --user=$user --password=$password --databases $dbname > $backup_path/$backupname-$date.sql
## 將username, password放在配置文件中[mysqldump]下(推薦)
# mysqldump --databases $dbname > $backup_path/$backupname-$date.sql
## 備份所有數據庫
MySQL下載,mysqldump --all-databases > $backup_path/$backupname-$date.sql
echo "Compressing databases..."
bzip2 $backup_path/$backupname-$date.sql
chmod 600 $backup_path/$backupname-$date.sql.bz2
# Delete files older than 30 days(移除超過30天的歷史備份文件)
echo "Checking for old files..."
MySQL漢化、find $backup_path/* -mtime +30 -exec rm {} \;
echo "Done."
使用Crontab定時執行
進入Crontab編輯模式:crontab -e
添加定時任務:# m h dom mon dow command
30 1 * * * . /etc/profile; /data/soft/script/mysql_backup.sh > /data/soft/script/mysql_backup.log 2>&1 &
說明:每天凌晨1:30執行。
由于后臺MySQL是使用源碼形式安裝的,所有MySQL的命令不能直接運行,我在環境變量文件/etc/profile最后添加了export PATH=$PATH:/data/soft/mysql/bin。
. /etc/profile;,使環境變量生效。
2>&1:如果執行過程中有異常信息,將stderr也重定向標準輸出流stdout。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态