共计 3120 个字符,预计需要花费 8 分钟才能阅读完成。
MySQL-zrm 备份工具特别适合初次应用此工具的小白使用,原因看完就明白,OK,开始吧!
1、前期准备:
因为 mysql-zrm 这个备份工具是用 perl 语言写成的工具,所有要先安装一些软件包,来为 mysql-zrm 工具提供必要的环境
yum install perl-DBI perl-DBD-MySQL perl-XML-Parser -y
PS:(网上好多人云亦云,要不就是复制、转载别人的,不需要那么复杂,只需要安装这 3 个包即可)
2、创建备份用户
mysql> grant select,insert,update,create,drop,reload,alter,super,lock tables on *.* to ‘backup’@’localhost’ identified by ‘backup’;
mysql> flush privileges;
3、为每个数据库设置单独的存放目录,这样方便管理和恢复数据(本例有三个数据库)
cd /etc/mysql-zrm
mkdir {,_1,_2}
cp mysql-zrm.conf test
cp mysql-zrm.conf test_1
cp mysql-zrm.conf test_2
4、在 /etc/mysql-zrm/test、test_1、test_2 目录下分别修改 mysql-zrm.conf 配置文件:设置包括但不限于:备份用户名、密码、备份级别等参数
backup-level=0 #备份级别,0 表示全备,1 表示增备,也可以在命令行中指定
backup-mode=logical #备份方式,逻辑备份
destination=/common #备份数据存放目录,默认 /var/lib/mysql-zrm/ 目录
retention-policy=30D #备份文件存放时间,30 天
compress=1 #备份压缩,gzip 方式
verbose=1 #记录详细信息
database=”test” #需要备份的数据库,分别在 test、test_1、test_2 目录下修改对应的
database=”test_1″
database=”test_2″
user=”backup”
password=”backup”
port=3306
socket=/var/lib/mysql/mysql.sock
<?xml:namespace prefix=”o”>
?xml:namespace>
PS:如果你需要备份所有的数据库,仅仅需要在 /etc/mysql-zrm/mysql-zrm.conf 配置文件中需改参数 all-databases= 1 即可
5、好了,配置好了,可以进行备份了!
先进行一次全备:
[root@dns1 mysql-zrm]#mysql-zrm-scheduler –now –backup-set test
ls /common/test/20170407091226(这个是我的备份文件存放目录)
backup.sql index zrm_checksum
backup-data:备份的数据文件
index:备份信息,包括备份级别,备份的数据库名称等
zrm_checksum:备份文件存放目录,和备份文件的检验和,以此来实现增备的基础
注意我红色加粗的部分了吗?这个备份是有规定的!!必须在 /etc/mysql-zrm/ 目录下进行(网上好多不写明目录,导致切出该目录怎么也备份不了。。。。都是眼泪啊!
/usr/bin/mysql-zrm started successfully 成功的备份信息
再进行一次增量备份:
[root@dns1 mysql-zrm]#mysql-zrm-scheduler –now –backup-level=1 –backup-set test
index mysql.000163 zrm_checksum
没错就是备份 binlog 日志来实现增备的,所以你要开启你的 binlog。。
6、查看备份的数据信息:
mysql-zrm-reporter –show restore-info where backup-set=test 主要指明你的备份目录
mysql-zrm-reporter –show backup-performance-info where backup-set xin 主要指明备份文件大小、备份时间、是否压缩等
7、OK,备份成功了,再测试一下如何来恢复你的数据:(全备和增备唯一的区别就是备份的恢复目录别写错了)
[root@dns1 common]# mysql-zrm –action restore –source=/common/test/20170407091226/ –backup-set test –verbose
PS:common 目录是你的备份数据存放目录
好了,现在已经整完了整个流程,你的备份实现了吧,当然了,因为每个人的机器原来的环境不一致,如果你备份的时候,出现了什么问题,欢迎写留言,这也是促进我自身的一种方式!
mysql-zrm 增备数据恢复时的注意事项
mysql-zrm –action restore –source=/common/test/20170407091226/–backup-set test –verbose
对于一个数据库的全备、增备恢复当然没有问题了
但是,但是,但是:当备份多个库时有异常情况:
备份多个数据库时,全备虽然备份了 SQL 语句,但是也会滚动一个 binlog 日志,备份几个数据库滚动几次,这是其一;
第二种情况是:数据恢复时,对于多个库的全备恢复没有任何的问题,但是增备数据的恢复有些问题,有 5 个数据库进行了数据增备,由于增备的原理是备份 binlog 日志实现,同时滚动一个 binlog 日志,所以第一个数据库的增备操作其实已经备份了所有数据库的增量数据,其余 4 个数据库没有必要在执行增备操作,且除了第一个增备的数据文件外,其他的增备数据 binlog 是空的,这是其二;
增备数据恢复时,如:我对 test、test_1 库分别进行了全备和增备操作,如果我不小心只将 test_1 库 DROP 了,那么可以对 test_1 库进行全备数据恢复操作,但是对 test_1 库进行增备数据操作时,用 test_1/20170407091226 增备目录进行恢复时,会报错,原因就是你的增备数据在第一个增备数据文件里,所以对于增备数据的恢复操作,需要进行数据的刷选操作,进行恢复; 这是其三
对于进行增备时的数据库选择也有规定 index mysql.000205 mysql.000206 mysql.000207 zrm_checksum,如:我对 test、test_1、test_2 进行增备时,如果我选择了 test 库进行数据的增备,那么 test 会比较自己的 index 文件,会将当前 binlog 进行备份,还有将其他的 binlog 日志进行备份,但是因为是全备的原因 binlog 日志在 test_2 滚到了最新的,也就是说 test_2 库对应的 binglog 是存有最新变更的数据的,比如上面列的 mysql.000205 mysql.000206 日志就是滚动的空 binlog 日志,只有 mysql.000207 才存有最新的数据,所以在进行数据的增备时选择最后的 test_2 库进行数据的增备!这是其四
此四点,是 mysql-zrm 增备数据恢复时最需要注意的点了,网上的都是对一个数据进行的测试,没有实际的考虑到实际的生产环境是极少肯能只备份一个数据库的,最后希望本文能对你有所帮助!
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-05/143869.htm