Use mysqlhotcopy
First of all, the Perl package and DBD/DBI of the system must be complete, and the version must correspond well, otherwise it is easy to make mistakes in calling mysqlhotcopy. The famous mistake is:
Can't locate DBI.pm in @ INC
Also note that the digits of OS and Mysql must be the same, otherwise an error will occur when Mysqlhotcopy calls perl.
[@ more@]
Take mysql 4.0.27 as an example. For DBI, we choose DBI-1.53,DBD and DBD-mysql-3.0008.
Upload 2 packages to the server and install them directly with yum, but in some cases there will be errors in the version that make hotcopy unavailable.
Tar zxvf DBI.tar.gz
Cd DBI-1.53
Perl Makefile.PL
Make
Make test
Make install
Tar zxvf DBD-mysql-3.0008.tar.gz
Cd DBD-mysql-3.0008
Perl Makefile.PL-mysql_config=/usr/local/mysql/bin/mysql_config
Make
Make test
Make install
When you finish the installation, you can test the pull.
Here is the backup script:
#! / bin/bash
#
# Use mysqlhotcopy backup mysql database
#
Cmd='/usr/local/mysql/bin/mysqlhotcopy-Q'
BackupPatch='/usr/backup/data'
Logfile='/usr/backup/data/backup.log'
DBNAME= `ls-l / usr/local/mysql/data/ | grep'^ d' | awk'{print $9}'`
Error () {
Case "${1}" in
1)
Echo "mysqlhotcoyp error"
Exit 1
2)
Exit 2
*)
Useage
Esac
}
Do_check () {
For loop in $DBNAME
Do
[- d $loop] & & rm-rf $BackupPatch/$loop
Done
}
Do_backup () {
$cmd $DBNAME $BackupPatch 2 > > $logfile | | {date > > $logfile;error 1;}
}
Do_compress () {
Cd $BackupPatch
Ts= `date +% Y% m% d`
Fname=db.$ts.tgz
[- f $fname] & & rm $BackupPatch/$fname
Tar czvf $fname $DBNAME
}
Check_3 () {
Num= `ls * .tgz | wc-l`
If [$num-gt 3]; then
Do_delold
Check_3
Fi
}
Do_delold () {
Old= `ls * .tgz | sort | head-n 1`
Rm-f $BackupPatch/$old
}
# Main###
Cd $BackupPatch
Echo "- backup start at $(date +"% y-%m-%d% H:%M:%S ") -" > > $logfile
Do_check
Do_backup
Do_compress
Check_3
Do_check
Chown-R backup.backup $BackupPatch/
Echo "- backup finish at $(date +"% y-%m-%d% H:%M:%S ") -" > > $logfile
Exit 0
After the backup, you can use md5sum to generate the check code. Once you need to transfer the remote backup, you can verify it.