Linux下mysql自動備份壓縮
阿新 • • 發佈:2018-12-25
本文要實現的內容
- 自動備份mysql指定的資料庫
- 壓縮備份的資料庫
- 刪除舊有的備份(7天前)
實現是方法編寫一個備份指令碼,然後使用crontab定時執行指令碼達到自動備份的目的。
本次配置的環境目錄如下:
mysql安裝目錄: /usr/local/mysql
mysql備份目錄: /app/deploy/backup/mysql
mysql配置檔案: /etc/my.cnf
備份shell檔案: /usr/local/bin/mysql-data-backup.sh
- 1
- 2
- 3
- 4
環境介紹完畢,下面正式開始
1、新建備份指令碼
mkdir -p /app/deploy/backup/mysql #新建資料備份所在目錄
ln -s /usr/local/mysql/bin/mysqldump /usr/local/bin #建立備份執行程式的軟連結
touch /usr/local/bin/mysql-data-backup.sh
chmod +x /usr/local/bin/mysql-data-backup.sh #增加指令碼的執行許可權
- 1
- 2
- 3
- 4
2、配置mysql的[client]選項
使用mysqldump -u root -proot test_db > /app/deploy/backup/mysql/backup.sql 會報以下錯誤:
Warning: Using a password on the command line interface can be insecure.
- 1
這個種情況下,官方也給出瞭解決方法,那就是增加配置檔案裡的[client]中的內容。
vi /etc/my.cnf
加入以下內容
[client]
host=localhost
user=root
password=root
- 1
- 2
- 3
- 4
這時候可用以下命令進行備份
mysqldump --defaults-extra-file=/etc/my.cnf test_db > /app/deploy/backup/mysql/backup.sql
- 1
3、編寫備份指令碼
vi /usr/local/bin/mysql-data-backup.sh
- 1
指令碼內容如下:
#!/bin/bash
#description: mysql-data automatically backup script
# 檔名為test_db+日期
backupDatabase=test_db
fileName=${backupDatabase}`date +%Y%m%d`
# 定義baseDir變數
baseDir=/app/deploy/backup/mysql/
# 備份資料庫
mysqldump --defaults-extra-file=/etc/my.cnf ${backupDatabase} > ${baseDir}${fileName}.sql
# 壓縮
tar -zcPvf ${baseDir}${fileName}.sql.tar.gz ${baseDir}${fileName}.sql
# 刪除剛剛備份的sql檔案,留下壓縮的
rm -f ${baseDir}${fileName}.sql;
# 刪除7天前備份的資料,只保留一星期內的資料
find ${baseDir} -mtime +7 -name "${backupDatabase}*.tar.gz" -exec rm -rf {} \;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
4、編寫定時任務
vi /var/spool/cron/crontabs/root
- 1
加入以下內容
# 每天的23時59分進行備份(使用/bin/bash解析器執行指令碼)
59 23 * * * /bin/bash /usr/local/bin/mysql-data-backup.sh
出處:https://blog.csdn.net/massivestars/article/details/52445228