CentOS下使用mysqlhotcopy定時備份MySQL數據庫(MyISAM存儲引擎)

CentOS下使用mysqlhotcopy定時備份MySQL數據庫(MyISAM存儲引擎)

mysqlhotcopy與mysqldump比較: mysql

  1. 前者是一個快速文件意義上的COPY,後者是一個數據庫端的SQL語句集合。
  2. 前者只能運行在數據庫目錄所在的機器上,後者能夠用在遠程客戶端,不過備份的文件仍是保存在服務器上。
  3. 相同的地方都是在線執行 LOCK TABLES 以及 UNLOCK TABLES
  4. 前者恢復只須要COPY備份文件到源目錄覆蓋便可,後者須要導入SQL文件到原庫中。(source 或 mysql < bakfile.sql)
  5. 前者只適用於 MyISAM 引擎,然後則則可同時使用於MyISAM引擎和InodDB引擎.
  6. 前者在使用前必須安裝perl-DBD-mysql包,然後者則不須要.


使用mysqlhotcopy以前須要安裝perl-DBI和DBD-mysql: sql

yum -y install perl perl-DBI
Shell腳本以下:
# Name:mysqlbackup.sh
# PS:MySQL DataBase Backup,Use mysqlhotcopy script.
# Last Modify:2008-06-12
# 定義變量,請根據具體狀況修改
# 定義腳本所在目錄
scriptsDir=`pwd`
# 數據庫的數據目錄
dataDir=/usr/local/mysql/var/
# 數據備份目錄
tmpBackupDir=/tmp/mysqlblackup
backupDir=/home/backup/mysql
# 用來備份數據庫的用戶名和密碼
mysqlUser=root
mysqlPWD='456123'
# 若是臨時備份目錄存在,清空它,若是不存在則建立它
if [[ -e $tmpBackupDir ]]; then
        rm -rf $tmpBackupDir/*
else
        mkdir $tmpBackupDir
fi

# 若是備份目錄不存在則建立孾C
if [[ ! -e $backupDir ]];then
        mkdir $backupDir
fi
# 獲得數據庫備份列表,在此能夠過濾不想備份的數據庫

for databases in `find $dataDir -type d | \

sed -e "s/\/usr\/local\/mysql\/var\///" | \

sed -e "s/test//"`; do

if [[ $databases == "" ]]; then

        continue
else
# 備份數據

/usr/local/mysql/bin/mysqlhotcopy --user=$mysqlUser --password=$mysqlPWD -q "$databases" $tmpBackupDir

dateTime=`date "+%Y.%m.%d %H:%M:%S"`

echo "$dateTime Database:$databases backup success!" >>MySQLBackup.log

fi

done

# 壓縮備份文件

date=`date -I`

cd $tmpBackupDir

tar czf $backupDir/mysql-$date.tar.gz ./

#End完成

加入定時任務 shell

30 5 * * * /root/mysqlbackup.sh >> mysqlbackup.log 2>&1
如何還原? 一、中止mysql服務器。 二、複製備份的數據庫目錄到mysql數據目錄下。 三、更改目錄全部者爲mysql服務器運行的用戶(如mysql)。 四、啓動mysql服務器
相關文章
相關標籤/搜索