隨筆-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
          主站蜘蛛池模板: 佛教| 阳江市| 绥芬河市| 惠来县| 保定市| 长白| 永顺县| 五华县| 海原县| 佳木斯市| 普安县| 河西区| 维西| 北川| 宾川县| 汝城县| 双鸭山市| 长白| 绥德县| 商丘市| 通化市| 松潘县| 琼海市| 沁水县| 赤水市| 灵石县| 云安县| 开原市| 神农架林区| 广西| 台州市| 长武县| 临西县| 三明市| 长垣县| 千阳县| 雅江县| 潮安县| 石屏县| 于田县| 威信县|