不懂博客—所知甚少因而建立此博客记录不懂知识;学习、关注、体验互联网。

mysqlhotcopy的使用和安装方法【快速备份mysql数据库】及错误解

来源:未知 作者:winner 时间:2012-01-20 【 打印

mysqlhotcopy是使用LOCK TABLES、FLUSH TABLES和cp或scp来快速备份数据库,mysqlhotcopy是由Tim Bunce用Perl脚本编写的。它是备份数据库或单个表的最快的途径,但它不能远程运行只能运行在数据库目录所在的机器上。注意:mysqlhotcopy只用于备份MyISAM。

mysqlhotcopy与mysql自带的mysqldump异同比较:
  mysqlhotcopy只适用于 MyISAM 引擎,而后则则可同时使用于MyISAM引擎和InodDB引擎.
  mysqlhotcopy和mysqldump相同的地方都是在线执行 LOCK TABLES 以及 UNLOCK TABLES
  mysqlhotcopy是一个快速文件意义上的COPY,mysqldump是一个mysql数据库端的SQL语句集合。
  mysqlhotcopy恢复只需要COPY备份文件到源目录覆盖即可,mysqldump需要导入SQL文件到原库中,并且可能产生很多导入出错的情况。
  mysqlhotcopy只能运行在数据库目录所在的机器上,mysqldump可以用在远程客户端,不过备份的文件还是保存在数据库服务器上。
  mysqlhotcopy在使用前必须安装perl-DBD-mysql包,而mysqldump则不需要。

使用mysqlhotcopy之前需要安装perl-DBI和DBD-mysql:
1:安装perl-DBI
yum -y install perl-DBI
#(如果不行则执行yum -y install perl perl-DBI)

2:安装DBD-mysql (如果编译出错请看最后面)
wget http://www.fcbu.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=/usr/local/mysql/bin/mysql_config
make
make install

如果你的mysql不是安装在/usr/local/mysql/目录,mysql_config的路径请按照你自己的填写。
DBD-mysql的官网可以找到最新的版 http://www.cpan.org/modules/by-module/DBD/(目前最新的为DBD-mysql-4.020)
转载请注明来源:http://linux.fcbu.com/mysqlhotcopy.htm
一个常用的备份例子:

/usr/local/mysql/bin/mysqlhotcopy -u root -p 密码 --addtodest 数据库名1 数据库名2  备份目录

–addtodest的意思是当备份存在时,不中断备份,只添加新的文件进去。
更多的选项可以执行/usr/local/mysql/bin/mysqlhotcopy –help查看。

恢复用mysqlhotcopy备份的mysql数据库方法:
停止mysql服务。
复制备份的数据库目录到相应的mysql数据目录下。
用chown更改目录所有者为mysql服务器运行的用户。
启动mysql服务就顺利完成了,速度非常快。

执行perl Makefile.PL --mysql_config=/usr/local/mysql/bin/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*

转载请注明来源:http://linux.fcbu.com/mysqlhotcopy.htm

----------- 2012/6/1 更新 -----------------

错误1:运行mysqlhotcopy进行数据库备份的时候遇到如下错误:
Invalid db.table name 'fcbudatabase.fcbudatabase`.`wp_commentmeta' at /usr/local/mysql/bin/mysqlhotcopy line 855.
解决方法:
vi /usr/bin/mysqlhotcopy
#在第 835 下新增一行,即在my @dbh_tables = eval { $dbh->tables() };下面新增如下一行:
map { s/^.*?\.//o } @dbh_tables;
保存即可解决
 

错误2:install_driver(mysql) failed: Can't load '/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/DBD/mysql/mysql.so' for module DBD::mysql: libmysqlclient.so.15: 无法打开共享对象文件: 没有那个文件或目录 at /usr/lib/perl5/5.8.8/i386-linux-thread-multi/DynaLoader.pm line 230.
 at (eval 7) line 3
Compilation failed in require at (eval 7) line 3.
Perhaps a required shared library or dll isn't installed where expected
 at /usr/local/mysql/bin/mysqlhotcopy line 178
解决方法:
这个错误出现的原因是因为安装mysql后的路径配置的问题,需要把库文件路径信息加入到/etc/ld.so.conf
echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
再重新载入:
ldconfig
就一切正常了。

分类目录: | 标签:mysqlhotcopy mysql
自动监控linux服务器负载并重启Web服务的脚本
64位CentOS 6.0编译安装LNMP(Nginx1.0.10 PHP5.3.8 Mysql5.5.18)