隨筆-199  評論-203  文章-11  trackbacks-0
          我以前備份都使用mysqldump,導成文本文件便于存放,但是速度很慢的。最快的備份方法當然是直接把數據目錄copy一份了。但是一般來說,都要關閉 MySQL的服務才能做,不然在你copy的時候剛好還有人讀寫表那麻煩就大了。這次朋友介紹我使用mysqlhotcopy。就相當于上面,不過他可以熱備份.他備份非常快,我測試一個2.8G的mysql他備份的時間在3分鐘內完成.

              下面是它的介紹:

              mysqlhotcopy是一個Perl腳本,最初由Tim Bunce編寫并提供。它使用LOCK TABLES、FLUSH TABLES和cp或scp來快速備份數據庫。它是備份數據庫或單個表的最快的途徑,但它只能運行在數據庫目錄所在的機器上。mysqlhotcopy只用于備份MyISAM。它運行在Unix和NetWare中

              使用方法見下面的腳本.加入crotab中吧.

              #!/bin/sh
              # Name:mysqlbackup.sh
              # PS:MySQL DataBase Backup,Use mysqlhotcopy script.
              # Last Modify:2008-06-12
              # 定義變量,請根據具體情況修改
              # 定義腳本所在目錄
              scriptsDir=`pwd`

              # 數據庫的數據目錄
              dataDir=/var/lib/mysql

              # 數據備份目錄
              tmpBackupDir=/tmp/mysqlblackup
              backupDir=/backup/mysql

              # 用來備份數據庫的用戶名和密碼
              mysqlUser=root
              mysqlPWD='you password'

              # 如果臨時備份目錄存在,清空它,如果不存在則創建它
              if [[ -e $tmpBackupDir ]]; then
                rm -rf $tmpBackupDir/*
              else
                mkdir $tmpBackupDir
              fi

              # 如果備份目錄不存在則創建它
              if [[ ! -e $backupDir ]];then
                mkdir $backupDir
              fi

              # 得到數據庫備份列表,在此可以過濾不想備份的數據庫
              for databases in `find $dataDir -type d | \
                sed -e "s/\/var\/lib\/mysql\///" | \
                sed -e "s/test//"`; do
                if [[ $databases == "" ]]; then
                  continue
                else

              # 備份數據庫
              /usr/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完成

              加入到crontab中設置每周5運行
              0 0 * * 5 /backup/blackup.sh

              注意:恢復數據庫到備份時的狀態

          posted on 2009-08-19 12:53 Werther 閱讀(864) 評論(0)  編輯  收藏 所屬分類: 16.MySQL
          主站蜘蛛池模板: 富阳市| 万源市| 香港| 玉溪市| 金沙县| 阳山县| 商都县| 威海市| 商南县| 耿马| 涿鹿县| 凤台县| 拜泉县| 亳州市| 余姚市| 偏关县| 禹城市| 高安市| 商都县| 曲周县| 井陉县| 怀集县| 虎林市| 瓦房店市| 伊宁市| 上思县| 宁化县| 沅江市| 通化县| 汨罗市| 江山市| 靖边县| 高碑店市| 邹平县| 太仆寺旗| 沂源县| 临湘市| 南漳县| 高台县| 乳源| 阿拉尔市|