类似mysqlhotcopy备份mysql myisam脚本
2011-01-12 17:13
441 查看
公司之前都是使用mysqldump 备份数据,前面有备份脚本,但是倒入的时候很慢.我们的数据量很大,如果恢复 将是一个漫长的时间,恢复时间太长,影响业务.
我就另想他法,load data恢复的时候比mysqldump恢复时间要快,但是需要一个表一个表的操作.如果写脚本容易出现错误.
然后想到了mysqlhotcopy备份方式.适合我们myisam的存储引擎.copy速度相当快.但是不知道什么原因一直报错误如下.
如有高手请指出 此错如何解决
查看mysqlhotcopy脚本 第452行如下
google baidu 都没有找到,既然mysqlhotcopy是先锁表,然后调用linux 上的cp scp命令直接拷贝数据文件.然后就自己写了一个.测试之后挺好用.现在贴出脚本.有什么好的方法希望指出.
我就另想他法,load data恢复的时候比mysqldump恢复时间要快,但是需要一个表一个表的操作.如果写脚本容易出现错误.
ACKUP TABLE语法其实和
mysqlhotcopy的工作原理差不多,都是锁表,然后拷贝数据文件。它能实现在线备份,但是效果不理想,因此不推荐使用。它只拷贝表结构文件和数据文件,不同时拷贝索引文件,因此恢复时比较慢。
然后想到了mysqlhotcopy备份方式.适合我们myisam的存储引擎.copy速度相当快.但是不知道什么原因一直报错误如下.
如有高手请指出 此错如何解决
|
450 else { 451 my $start = time; 452 $dbh->do("LOCK all TABLES "); 453 printf "Locked $num_tables tables in %d seconds.\n", time-$start unless $opt{quiet}; 454 $hc_started = time; # count from time lock is granted 455 456 # flush tables to make on-disk copy up to date |
#/bin/bash #This script backup mysqld data.edit badboy,connect leezhenhua17@163.com user=root host=localhost passwd=123456 database=mysql bak_dir=/backup/${database} DATE=`date '+%Y%m%d'` logfile=/backup/log/${DATE}.log C_DATE=`date "-d 7 day ago" '+%Y%m%d'` MYSQL="mysql -u${user} -p$passwd -h $host $database" echo "================================================" >>$logfile echo "= `date '+%Y-%m-%d %H:%M:%S'`" >>$logfile #database tables i=1 tables=($(${MYSQL} -A -Bse "show tables")) tab_num=`echo ${#tables[@]}` for arg in ${tables[@]} do if [ $i -eq $tab_num ] then echo $arg|awk '{print $1,"read"}' >>/tmp/tables else echo $arg|awk '{print $1,"read,"}' >>/tmp/tables fi i=$(($i+1)) done lock_tables=`cat /tmp/tables|awk '{printf("%s",$0)}'` echo "`date '+%Y-%m-%d %H:%M:%S'` start backup database $database" >> $logfile $MYSQL -A -Bse "lock table $lock_tables ;system cp -r "'/data/mysql'" "'/backup/'";" >>$logfile 2>&1 #echo $? if [ $? -eq 0 ] then echo "`date '+%Y-%m-%d %H:%M:%S'`Backup $database successed" >> $logfile cd /backup if [ -d ${database}${DATE} ] then echo "`date '+%Y-%m-%d %H:%M:%S'` ${database}${DATE} is exist" >> $logfile else mv $database ${database}${DATE} echo "`date '+%Y-%m-%d %H:%M:%S'` del useless file" >> $logfile rm -rf /tmp/tables cd /backup/${database}${DATE} rm -rf im* cdr* oplog* fi else echo "`date '+%Y-%m-%d %H:%M:%S'` Backup $database Failed" >> $logfile fi cd /backup if [ -d $database${C_DATE} ] then echo "`date '+%Y-%m-%d %H:%M:%S'` $database database exist" >> $logfile tar -zcvf $database${C_DATE}.tar $database >> $logfile 2>&1 echo "`date '+%Y-%m-%d %H:%I:%S'` Delete 7 days before the data $database " >> $logfile rm -rf $database else echo "`date '+%Y-%m-%d %H:%I:%S'` $database${C_DATE} not exist" >> $logfile fi |
相关文章推荐
- Mysql数据备份二(脚本备份mysqlhotcopy)
- CentOS下使用mysqlhotcopy定时备份MySQL数据库(MyISAM存储引擎)
- 使用MySQL自带工具mysqlhotcopy快速备份MyISAM引擎的MySQL数据库
- 利用MySQL的mysqlhotcopy实现数据库自动备份的SH脚本源码
- mysqlhotcopy 备份myisam表
- MySQL 备份和恢复策略二:使用mysqlhotcopy备份数据库
- MySQL 备份和恢复策略二:使用mysqlhotcopy备份数据库
- 在线备份MySQL及远程copy到远程备份服务器shell脚本
- mysqlhotcopy备份报错
- mysqlhotcopy 只能用于MyISAM表不能用户InnoDB表
- MySQL备份工具之mysqlhotcopy
- 用mysqlhotcopy 备份指定数据库 推荐
- mysql自动备份维护shell脚本 (copy)
- mysqlhotcopy + binlog 实现mysql增量备份
- MySQL备份工具之mysqlhotcopy
- Linux数据库热备份mysqlhotcopy
- mysqldump VS mysqlhotcopy及脚本实例
- Centos下使用mysqlhotcopy备份
- 使用mysqlhotcopy 物理增量备份