首頁  >  文章  >  資料庫  >  MySQL資料庫的shell腳本自動備份詳情介紹

MySQL資料庫的shell腳本自動備份詳情介紹

黄舟
黄舟原創
2017-03-20 14:10:421382瀏覽

這篇文章主要介紹了MySQL資料庫的shell腳本自動備份的相關資料,網站或應用的後台都有備份資料庫的功能按鈕,但需要去手動執行。我們需要一個安全性的,每天自動備份的方法需要的朋友可以參考下

#MySQL資料庫的shell腳本自動備份

經常備份資料庫是一個好習慣,雖然資料庫損壞或資料遺失的機率很低,但一旦發生這種事情,後悔是沒用的。一般網站或應用程式的後台都有備份資料庫的功能按鈕,但需要去手動執行。我們需要一種安全的,每天自動備份的方法。下面的這個shell腳本就是能讓你透過過設定Crontab來每天備份MySQL資料庫的方法。

#!/bin/bash
# 数据库认证
 user=""
 password=""
 host=""
 db_name=""
# 其它
 backup_path="/path/to/your/home/_backup/mysql"
 date=$(date +"%d-%b-%Y")
# 设置导出文件的缺省权限
 umask 177
# Dump数据库到SQL文件
 mysqldump --user=$user --password=$password --host=$host $db_name > $backup_path/$db_name-$date.sql

透過上面的腳本,我們可以每天匯出一份sql備份文件,文件的名稱按當日日期產生。日積月累,這樣的文件會產生很多,有必要定時刪除一些老舊的備份的文件,下面的這行命令就是做這個任務的,你可以把它加在上面的腳本後面。

# 删除30天之前的就备份文件
 find $backup_path/* -mtime +30 -exec rm {} \;

我在使用上面的腳本時曾經遇到過一個問題,Crontab定時執行腳本導出沒有報錯,但導出的是空的SQL文件,但登錄到控制台手工執行這個腳本是備份成功的。後來發現是Crontab執行腳本是缺少系統環境信息,找不到 mysqldump ,改正的方法是使用 mysqldump 全路徑就行了。而之所以沒有報錯訊息,是因為 mysqldump 把錯誤訊息輸出到了 stderr。在指令的後面結尾接 “2>&1” 這樣一個訊息重定向指令就可以看到錯誤訊息了:

mysqldump -ujoe -ppassword > /tmp/somefile 2>&1

以上是MySQL資料庫的shell腳本自動備份詳情介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn