上一篇文章写了关于mysqldump做备份以及使用mysqlbinlog做增量备份
Mysqldump做为数据的逻辑备份工具还行,但是无法进行在线热备,而没有物理备份工具,在数据量比较大的时候,恢复的时间也会长得无法接受。
注:此文并非原创,而是以前看到一个侠客写的,今天只是贴出来与大家共享,哪位侠客如有冒犯,敬请原谅。
percona出品的Xtrabackup
可以在线对InnoDB/XtraDB引擎的表进行物理备份,备份及还原速度都很快,下面是一个实际备份的例子,采用了gzip将备份流进行压缩后再另外一台机器上还原的一个
实例,
1.软件安装:
首先得在备份和数据还原的机器上都得安装下列软件(附:安装最新版本的xtrabackup,备份成功,但是无法恢复回去)
1.MySQL-client-community-5.0.41-0.rhel5.x86_64.rpm
2.perl-DBI-1.52-2.el5.x86_64.rpm
3.xtrabackup-0.7-1.rhel5.x86_64.rpm
直接通过rpm -Uvh 包就可以直接进行安装了。
2.数据备份
执行下面命令进行文件备份,
innobackupex-1.5.1 --user=root --password="123456" --defaults-file=/etc/my.cnf --slave-info --stream=tar /data/backup/test 2> /data/backup/test.log | gzip > /data/backup/test/sz-5-2.tar.gz
简单的对各个参数的说明:
--user --password
mysql数据库的用户名和密码,如果有myisam的表为了保证数据的一致性,它需要用户名和密码对数据库进行锁表,具体锁表的时间是拷贝整个myisam表的表文件和数据文件的时间
--defaults-file
mysql数据库的默认配置文件my.cnf保存的位置
--slave-info
方便通过全备建立一个从
--stream
文件流保存的方式,一般采用tar,另外一种为cpio方式,这种方式一下使用很少
/data/backup/test
备份后数据文件保存的位置
2> /data/backup/test.log
备份当中的输出信息输出到/data/backup/test.log中
| gzip -9 > /data/backup/test/sz-5-2.tar.gz
对输出的流进行gzip进行压缩。
3.数据还原
编译完mysql以后,把备份机器my.cnf拷贝到/etc/目录下 ,并建立mysql的数据目录,记住了别通过mysql_install_db初始化数据库。
把文件拷贝到一个目录当中,譬如/data/backup/test中
1.解压:
千万记得使用这个命令进行解压: tar xfi 备份文件
2. 执行innobackupex-1.5.1 --defaults-file=/etc/my.cnf --apply-log /data/backup/test/
3. 执行innobackupex-1.5.1 --defaults-file=/etc/my.cnf --copy-back /data/backup/test/
4.进入mysql的数据目录当中,对所有文件赋给mysql用户的权限,
5.启动mysql