软件测试 | mysqlhotcopy(MyISAM 表热备份工具)
mysqlhotcopy 是一个 Perl 脚本,它使用 LOCK TABLES、FLUSH TABLES、cp 或 scp 来快速备份数据库。它是备份数据库或单个表的最快途径,其缺点是 mysqlhotcopy 只用于备份 MyISAM,而且它需要运行在 Liunx/UNIX 环境中。
需要注意的是,mysqlhotcopy 是 Perl 脚本,因此需要安装 Perl 的 MySQL 数据库接口包,我们可以从 Linux 的官方 FTP(http://ftp.redhat.com)上下载它,以笔者的测试环境(Linux AS4,INTEL32 位处理器)为例,从目录/pub/redhat/linux/enterprise/4/en/os/i386/SRPMS 中下载包 perl-DBD-MySQL-2.9004-3.1.src.rpm。而此包的安装又依赖于 MySQL 的开发包,因此还需要下载 MySQL 相应版本的开发包,笔者测试环境中下载的包名为:MySQL-devel-community-5.0.41-0.rhel4.i386.rpm。后者的安装过程和普通 rpm 一样,这里不在赘述,而前者从 FTP 站点下载的是源码包,需要重新编译后才可以安装。编译的过程简单描述如下。
(1)在操作系统上 su 到 root 用户。
(2)执行如下命令,生成.spec 文件。
(3)此时进入 cd /usr/src/redhat/SPECS,可以看到 perl-DBD-MySQL.spec
(4)执行如下命令,将 spec 文件编译为 RPM 安装文件。
(5)进入 RPM 最后放置目录,一般为/usr/src/redhat/RPMS/i386。
(6)安装生成的 rpm 包
至此,源码包安装完毕。
mysqlhotcopy 的用法如下:
下面的例子中将 mysql 数据库备份到到当前目录下的 backup 下:
mysqlhotcopy 的常用选项如下。
--allowold:如果备份路径下中含有同名备份,则将旧的备份目录 rename 为目录名 _old。
--addtodest:如果备份路径下存在同名目录,则仅仅将新的文件加入目录。
--noindices:不备份所有的索引文件。
--flushlog:表被锁定后刷新日志。
这些选项的含义都很简单,读者可以下去自己测试,这里就不再举例。更多的选项,可以用 mysqlhotcopy –help 命令或者 perldoc /usr/bin/mysqlhotcopy 命令进行查询。
评论