程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 在CentOS實現mysql數據庫的自動備份

在CentOS實現mysql數據庫的自動備份

編輯:MySQL綜合教程

在CentOS實現mysql數據庫的自動備份          數據是一個比較重要的數據,經常需要備份,每次都手動比較麻煩。本腳本主要現實在CentOS中實現對數據庫的備份和保留最近十五天的備份文件。避免太多無用陳舊的備份占用空間。

#!/bin/bash  
id="root" #用戶名  
pwd="123123" #密碼  
dbs="conedu commlib" #數據庫名字的列表,多個數據庫用空格分開。  
backuppath="/root/mysqlbackup" #保存備份的位置  
day=15   #保留最近幾天的備份  
[ ! -d $backpath ] &&mkdir -p $backuppath  #判斷備份目錄是否存在,不存時新建目錄。  
cd $backuppath   #轉到備份目錄,這句話可以省略。可以直接將路徑到命令的也行。  
  
backupname=mysql_$(date +%Y-%m-%d)  #生成備份文件的名字的前綴,不帶後綴。  
for db in $dbs;   #dbs是一個數據名字的集合。遍歷所有的數據。  
do  
   mysqldump -u$id -p$pwd -S /var/lib/mysql/mysql.sock $db >$backupname_$db.sql  #備份單個數據為.sql文件。放到當前位置  
   if [ "$?" == "0" ]  #$? 得到上一個shell命令的執行的返回值。0表示執行成功。其他表示錯誤。並將將結果寫入到日志中。  
   then  
       echo $(date +%Y-%m-%d)" $db  mysqldump sucess">>mysql.log   
   else  
      echo $(date +%Y-%m-%d)"  $db mysql dump failed">>mysql.log  
      exit 0  
   fi  
done  
tar -czf $backupname.tar.gz *.sql #壓縮所有sql文件  
if [ "$?" == "0" ]  
then  
   echo $(date +%Y-%m-%d)" tar sucess">>mysql.log  
else  
   echo $(date +%Y-%m-%d)" tar failed">>mysql.log  
   exit 0  
fi  
rm -f *.sql  #刪除所有的sql文件  
delname=mysql_$(date -d "$day day ago" +%Y-%m-%d).tar.gz  #得到要刪除的太舊的備份的名字。  
rm -f $delname  #刪除文件。  

 

只要在 /etc/crontab中添加一行,就可以在指定時間,自動備份了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved