1. 程式人生 > >Linux下mysql自動備份壓縮

Linux下mysql自動備份壓縮

本文要實現的內容

  • 自動備份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