MySQL是一个最常见和多功能的数据库软件,越来越多的用户选择了MySQL。MySQL支持从一个用户的应用程序到上百万用户的应用程序。遗憾的是它没有任何系统有效的管理和备份工具。大约30%-40%的MySQL数据库没有系统的备份,很多数据库管理用通过脚本来实现MySQL数据库备份。
一、什么是ZRM
ZRM(Zmanda Recovery Manager for MySQL)是一个健壮MySQL备份和还原解决方案,具有自动化和灵活的特征。它可以非常方便数据库管理员完成备份和恢复工作。ZRM分为商业版和社区版。社区版是免费的,最新的发行版是MySQL-zrm-2.2.0。
ZRM主要功能包括:
1、根据你的需求定时备份
2、集中备份MySQL,集中管理ZRM服务
3、详细的备份报表输出
4、通过默认提供的插件可以定制化备份方案
5、本地备份或者远程备份MySQL数据库
6、本地存储备份数据,通过SAN硬盘存储或者NAS/SAN存储
下面的图显示了在本机运行的ZRM for MySQL备份两台MySQL-Server上多个mysql数据库
备份的功能
ZRM for MySQL可以备份被mysql服务器管理的多个数据库
可以备份多台mysql服务器上的多个数据库
可以备份单个数据库中的表
可以对数据库进行热备
根据MySQL表使用的不同的存储引擎支持多种不同的备份方式
具有两种级别的备份:全备份和对数据库的增量备份
可以使用mysqldump,mysqlhotcopy,snapshots(Linux LVM/Solaris ZFS)和MySQL replication作为不同的备份方式
透明实现各种数据库表引擎数据库备份
在ZRM备份服务器与数据库服务器之间支持SSL认证,可以通过Internet和防火墙安全备份。
检验备份数据的完整性
使用标准的工具如gzip,GPG等可以对备份镜像进行压缩或者加密
灵活控制备份作业
支持快照备份,并转换真实备份
恢复的功能
ZRM for MySQL使得恢复备份的数据变得很容易
支持使用备份索引文件(index)记录备份过程信息
它可以使用报表工具查看备份索引文件
支持恢复完全备份和增量备份
通过选择MySQL二进制日志中的时间或位置,可选择性的恢复误操作的数据,恢复点可以是二进制日志中时间点或位置
ZRM for MySQL通过MySQL二进制日志可以很容易的过滤出对数据库操作的行为,可以帮助决定哪些被恢复,哪些不被恢复
根据你所做的备份的类型,可以使用备份在本机恢复或者在不同的机器上进行恢复
报告和计划任务能力
ZRM for MySQL可以立即执行备份计划或者按天/按周/按月做备份计划任务
它可以自动生成备份报告
它具有预先设定的备份报告也可以用户自定义的备份报告
它可以报告任何备份的统计或者这些统计的组合
它支持HTML或者Text格式的报告
它可以发送email告知备份的运行状态
它还可以通过RSS feed的方式提供备份报告
插件
二、安装ZRM
ZRM for MySQL套件是使用perl写的,所以使用环境必须支持perl,这个套件支持MySQL的版本有4.0.x(4.0.24或以上版本),4.1.x,5.x。
在安装ZRM for MySQL时首先需要检查下列事项:
1、MySQL的版本是否是被ZRM for MySQL支持的
2、确认ZRM服务器和mysql服务器上存在mysql用户和组。同时MySQL服务进程是使用相同的用户和组启动的
3、在MySQL服务器和ZRM服务器上的mysql用户的uid和gid要相同
4、ZRM for MySQL需要用到mysqladmin、mysqlhotcopy、mysqldump、mysqlbinlog、mysql这些MySql客户端的命令,这些命令需要安装在ZRM for MySQL运行的服务器上
5、MySQL ZRM必须的perl模块:perl-DBI、perl-DBD-MySQL、perl-XML-Parser
安装需要的perl模块
yum install perl-XML-Parser perl-DBI perl-DBD-MySQL
讯享网
获取ZRM安装包
讯享网wget http://www.zmanda.com/downloads/community/ZRM-MySQL/2.2/RPM/MySQL-zrm-2.2.0-1.noarch.rpm
安装ZRM
rpm -ivh MySQL-zrm-2.2.0-1.noarch.rpm
三、创建MySQL执行备份和恢复的用户
推荐新建一个MySQL备份用户来代替root用户。ZRM需要的mysql数据备份用户和mysql数据恢复用户所需的最小权限分别为::
备份用户:LOCK TABLES,SELECT,FILE,RELOAD,SUPER,SHOW VIEW
还原用户:CREATE,DROP,INDEX,SHUTDOWN,INSERT,ALTER,SUPER,REPLICATION CLIENT,CREATE VIEW
注:在MySQL5.x上执行逻辑备份时,SHOW VIEW and CREATE VIEW 权限是必须的。
建立一个给ZRM用的备份用户
讯享网mysql>grant select,insert,update,create,file,index,drop,reload,shutdown,alter,super,lock tables,replication client,show view,create view on *.* to 'zrm_backup'@'192.168.1.%' identified by '000000';
四、配置ZRM
备份集
ZRM for MySQL使用了”备份集”的功能来优化数据库备份。一个备份集包含的一套数据库或表,同一个备份集将使用同样的备份方式和同样的备份计划。每个备份集的名称在一个备份服务器上是唯一的。
在全局配置文件/etc/mysql-zrm/mysql-zrm.conf中的参数会作用于所有的数据库,或被备份集中的配置文件参数所覆盖
要指定备份集的备份参数,需要在备份集目录中添加mysql-zrm.conf配置文件。备份集目录里mysql-zrm.conf定义的参数可以覆盖全局配置文件中定义的。
除了可以在全局配置文件(通常为/etc/mysql-zrm.conf)和备份集配置文件(通常为/etc/backupsetname/mysql-zrm.conf)中指定备份参数,还可以直接在备份命令中指定参数。当配置了同样的备份参数时,它们的优先级是这样的:备份命令行-备份集的配置文件-全局配置文件。也就是说备份集配置文件中的备份参数会覆盖全局配置文件中的备份参数,备份命令行中的备份参数会覆盖备份集配置文件和全局配置文件中的备份参数。
在没有设置参数时,ZRM for MySQL采用默认的配置参数。
多个备份集的好处
1、根据MySQL数据应用及备份将花费的时间,创建多个备份组是非常明智的。同一个应用的多个数据库或表的备份应该在同一个备份组中。
2、在一个备份集中,用户可以定义要备份的数据库/表,用户可以定义要备份的数据库,或要备份的表,或要备份的数据库和表。
3、不同的备份集可以定义备份不同的数据库/表和不同的MySQL数据库备份参数。
4、所有的备份集可以共享备份数据存储路径。
-------------------------------------------------------------------------------------------------------------------------------------
常用备份集配置参数
备份参数
备份组中的数据库/表
备份时,可以指定单个或多个数据库/表。如果没有指定,默认为所有的数据库。
MySQL服务参数

ssl-options
连接MySQL服务器的SSL选项。要使用该选项要求MySQL服务器启用了SSL。该选项只有逻辑备份时使用。如:
ssl-options=”–ssl –ssl-ca=/openssl/cacert.pem –ssl-cert=/openssl/client-cert.pem –ssl-key=/openssl/client-key.pem”
ZRM程序参数
ZRM组件参数
所有的组件都是可选的。
1、远程增量备份
2、从远程服务器复制MySQL从服务器数据文件
3、执行mysqlhotcopy时,从远程复制数据
4、恢复数据到远程的MySQL数据库
五、实例
创建备份集
安装完后,/etc/mysql-zrm/是其配置文件的所在地。/etc/mysql-zrm/目录下有一个mysql-zrm.conf文件,这是最重要的配置文件。你也可以在/etc/mysql-zrm/目录下,创建一些目录,每一个目录就是一个备份集的名称。
这里我们先创建一个测试用备份集
mkdir /etc/mysql-zrm/test cp /etc/mysql-zrm/mysql-zrm.conf /etc/mysql-zrm/test
修改配置文件
讯享网vi /etc/mysql-zrm/test/mysql-zrm.conf backup-level=0 backup-mode=logical backup-type=regular destination=/data0/backup/mysql/zrmtest retention-policy=30D compress=1 database="test" user="root" password="" port=3306 socket=/tmp/mysql.sock mysql-binpath="/usr/local/webserver/mysql/bin/" mysql-binlog-path="/data0/mysql/binlog/"
创建备份文件
全备(逻辑)
#使用test备份集进行逻辑全备 mysql-zrm-backup --backup-set test #查看生成的备份数据(在备份目录下生成了一个以备份集和备份日期为文件夹名的目录) ls /data0/backup/mysql/zrmtest/test/130/ backup-data index zrm_checksum
下面的例子我都直接在命令行修改对应参数来说明了,这样方便一些。
全备(物理)
讯享网mysql-zrm-backup --backup-set test --backup-mode=raw #查看生成的备份数据(物理备份会产生一个对应的备份目录,里面是所备份表的相关物理文件。) ls test/948/ index test zrm_checksum
增量备份
#查看生成的备份数据(增量与全备不同的地方是,增备备份的是二进制日志文件。) mysql-zrm-backup --backup-set test --backup-level=1 --backup-mode=logical --database=test ls test/430/ binlog.000041 index zrm_checksum
恢复备份数据
讯享网mysql-zrm-restore --backup-set test --source-directory=/data0/backup/mysql/zrmtest/test/430/
注:这里以上面的增量备份恢复数据,其它同理。
自动定时备份
创建一个自动备份计划
#建立了一个每天凌晨1点执行test备份集的备份计划 mysql-zrm-scheduler --add --interval daily --start 01:00 --backup-set test schedule:INFO: ZRM for MySQL Community Edition - version 2.2.0 Logging to /var/log/mysql-zrm/mysql-zrm-scheduler.log DONE
查询已创建的备份计划
讯享网mysql-zrm-scheduler --query schedule:INFO: ZRM for MySQL Community Edition - version 2.2.0 Logging to /var/log/mysql-zrm/mysql-zrm-scheduler.log 0 1 * * * /usr/bin/zrm-pre-scheduler --action backup --backup-set test --backup-level 0 --interval daily
删除已创建的备份计划
mysql-zrm-scheduler --delete --interval daily --start 01:00 schedule:INFO: ZRM for MySQL Community Edition - version 2.2.0 Logging to /var/log/mysql-zrm/mysql-zrm-scheduler.log 1 crontab entry deleted DONE mysql-zrm-scheduler --query schedule:INFO: ZRM for MySQL Community Edition - version 2.2.0 Logging to /var/log/mysql-zrm/mysql-zrm-scheduler.log No mysql-zrm related schedule entry found.
查看备份报告
讯享网mysql-zrm-reporter --where backup-set=test --show backup-status-info REPORT TYPE : backup-status-info backup_set backup_date backup_level backup_status backup_type comment ----------------------------------------------------------------------------------------------------------------------------- test 2011年05月30日 1 Backup succeeded regular ---- 星期一 04时04分30秒 test 2011年05月30日 0 Backup succeeded regular ---- 星期一 03时49分48秒
从这个报告中我们可以看到备份的名字、备份时间、备份级别、备份的状态。
mysql-zrm-reporter --where backup-set=test --show backup-performance-info REPORT TYPE : backup-performance-info backup_set backup_date backup_level backup_size backup_size_compressed backup_time backup_type compress_encrypt_time ---------------------------------------------------------------------------------------------------------------------------------------------------------------- test 2011年05月30日 0 9.38 MB 2.42 MB 00:00:01 regular 00:00:10
这份报告中我们能看到备份的大小,压缩后的大小,备份所用时间等
检验备份数据是否正确
讯享网mysql-zrm-verify-backup --backup-set test verify-backup:INFO: ZRM for MySQL Community Edition - version 2.2.0 test:verify-backup:INFO: Verification successful
远程备份
ZRM远程备份数据库有两种方法
1、使用远程socket连接
配置远程mysql服务器
获取ZRM客户端安装包
wget http://www.zmanda.com/downloads/community/ZRM-MySQL/2.2/RPM/MySQL-zrm-client-2.2.0-1.noarch.rpm
安装ZRM客户端
讯享网rpm -ivh MySQL-zrm-client-2.2.0-1.noarch.rpm
查看监听端口是否正常启动
netstat -ln|grep 25300 tcp 0 0 0.0.0.0:25300 0.0.0.0:* LISTEN
修改备份服务器ZRM的配置
这里主要修改全局配置文件,以方便下面的备份集都可以使用。在上面配置的文件主要增加以下几项
讯享网vi /etc/mysql-zrm/mysql-zrm.conf #执行远程拷贝的脚本 copy-plugin=/usr/share/mysql-zrm/plugins/socket-copy.pl #远程mysql服务器上binlog的路径 remote-mysql-binpath="/usr/local/webserver/mysq/bin" #远程client的端口,跟远程数据库上启动监听端口需一致 socket-remote-port="25300"
测试:
mysql-zrm-backup --backup-set test --backup-mode=logical --host=192.168.1.106 backup:INFO: ZRM for MySQL Community Edition - version 2.2.0 test:backup:INFO: START OF BACKUP test:backup:INFO: PHASE START: Initialization test:backup:INFO: The quick backup-type is supported only for snapshot backups. Setting backup-type to 'regular' test:backup:INFO: backup-set=test test:backup:INFO: backup-date=443 test:backup:INFO: mysql-server-os=Linux/Unix test:backup:INFO: backup-type=regular test:backup:INFO: host=192.168.1.106 ...... test:backup:INFO: PHASE END: Running post backup plugin test:backup:INFO: PHASE START: Cleanup test:backup:INFO: PHASE END: Cleanup test:backup:INFO: END OF BACKUP
2、使用SSH连接
讯享网vi /etc/mysql-zrm/mysql-zrm.conf #执行远程拷贝的脚本 copy-plugin=/usr/share/mysql-zrm/plugins/ssh-copy.pl #远程mysql服务器上binlog的路径 remote-mysql-binpath="/usr/local/webserver/mysq/bin" #指定SSH所用的用户 ssh-user="root"
测试
# mysql-zrm-backup --backup-set test --backup-mode=logical --host=192.168.1.107 --user=root backup:INFO: ZRM for MySQL Community Edition - version 2.2.0 test:backup:INFO: START OF BACKUP test:backup:INFO: PHASE START: Initialization test:backup:INFO: The quick backup-type is supported only for snapshot backups. Setting backup-type to 'regular' test:backup:INFO: backup-set=test test:backup:INFO: backup-date=039 test:backup:INFO: mysql-server-os=Linux/Unix test:backup:INFO: backup-type=regular test:backup:INFO: host=192.168.1.107 test:backup:INFO: backup-date-epoch= ...... test:backup:INFO: Backup succeeded test:backup:INFO: PHASE START: Running post backup plugin test:backup:INFO: PHASE END: Running post backup plugin test:backup:INFO: PHASE START: Cleanup test:backup:INFO: PHASE END: Cleanup test:backup:INFO: END OF BACKUP
六、参考文档
http://www.google.com
http://www.wenzizone.cn/?p=237
http://www.shubo.info/?m=
http://blog.wgzhao.com/2009/04/15/backup-remote-mysql-with-zrm.html
http://wiki.zmanda.com/index.php/Zmanda_Recovery_Manager_for_MySQL_Users_Manual
http://wiki.zmanda.com/index.php/Zmanda_Recovery_Manager_for_MySQL_Man_pages
http://www.mysqlsystems.com/2010/03/zmanda-for-mysql-backup_recovery.html
http://bbs.chinaunix.net/viewthread.php?tid=&extra=&page=1

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/125778.html