mysqlhotcopy備份比起系統自帶的備份可強大了些,它是采用SQL級別的備份機制,備份成的文件是sql了,這個都差不多,mysqlhotcopy備份支持的存儲引擎常用的有MyISAM,innodb,下面一起來看看.
mysqlhotcopy只是簡單的緩存寫入和文件復制的過程,占用資源和備份速度比mysqldump快很多很多,特別適合大的數據庫,但需要注意的是:mysqlhotcopy只支持MyISAM 引擎
1.安裝perl,代碼如下:
#yum -y install perl perl-DBI
使用mysqlhotcopy需要安裝perl支持,因為mysqlhotcopy是perl寫的.
2.安裝DBD-mysql,代碼如下:
- #wget http://m.survivalescaperooms.com/upimages/soft/DBD-mysql-4.020.tar.gz
- #tar xzvf DBD-mysql-4.020.tar.gz
- #cd DBD-mysql-4.020
- #perl Makefile.PL --mysql_config=mysql_config
- #make
- #make install
3.備份示例,代碼如下:
#mysqlhotcopy -u root -p 密碼 --addtodest 數據庫名1 數據庫名2 備份目錄
4.恢復
停止mysql服務,復制備份的數據庫目錄到相應的mysql數據目錄下,用chown更改目錄所有者為mysql服務器運行的用戶,啟動mysql服務.
5.執行perl Makefile.PL --mysql_config=mysql_config編譯的時候如果出現如下錯誤:
- Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 20.
- BEGIN failed--compilation aborted at Makefile.PL line 20.
解決方法:
#yum -y install perl-ExtUtils-MakeMaker
如果還是不行就用下面兩條:
- #yum -y install perl-ExtUtils-MakeMaker*
- #yum -y install perl-Time-HiRes*
6.mysqldump和mysqlhotcopy備份shell腳本示例,mysqlbackup.sh,代碼如下:
- #!/bin/bash
- # Enviroment
- PATH=/usr/local/sbin:/usr/bin:/bin
- # Configure The Directory of Backup
- BACKUPDIR=/data/backup/mysql # mysql backup dir
- SAVE=4 #how many days to save lastest
- HOST=192.168.10.32 # mysql host
- ROOT=root # mysql account
- ROOTPASS='XXXXXX' # mysql root password
- DUMPLIST='mysql database1 database2 database3' # backup with mysqldump
- HOTCOPYLIST='database4' # backup with mysqlhotcopy
- # define
- SQLDIR=$BACKUPDIR/sql/ # mysqldump to sql save path
- HOTCOPYDIR=$BACKUPDIR/hotcopy/ # mysqlhotcopy copy files path
- TMPDIR=$BACKUPDIR/tmp # temporary dir
- DATETIME=`date -d now +%Y-%m-%d_%H-%M` # create date dir
- # Create Directory
- if [ ! -d $SQLDIR ]; then
- mkdir -p $SQLDIR
- fi
- if [ ! -d $HOTCOPYDIR ]; then
- mkdir -p $HOTCOPYDIR
- fi
- rm -rf $TMPDIR
- mkdir -p $TMPDIR
- # ----- Backup MySQL -----
- # Backup with Database
- for dbname in $DUMPLIST
- do
- mysqldump -h$HOST -u$ROOT -p$ROOTPASS $dbname > $TMPDIR/$dbname.sql
- done
- for dbname in $HOTCOPYLIST
- do
- mysqlhotcopy -u $ROOT -p $ROOTPASS $dbname $TMPDIR
- done
- # move hotcopy dir
- cd $HOTCOPYDIR
- mkdir -p $DATETIME
- cd $DATETIME
- for dbname in $HOTCOPYLIST
- do //Vevb.com
- mv ../../tmp/$dbname ./
- done
- # create MySQL tar
- cd $SQLDIR
- tar -czf $SQLDIR/mysql_backup.$DATETIME.tar.gz ../tmp
- rm -fr $TMPDIR
- find $SQLDIR -type f -mtime +$SAVE | xargs rm -f
- find $HOTCOPYDIR -type d -mtime +$SAVE | xargs rm -rf
新聞熱點
疑難解答