来源:自学PHP网 时间:2015-04-16 10:51 作者: 阅读:次
[导读] 一、Xtrabackup介绍 1、Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。 Xtrabackup有两个...
一、Xtrabackup介绍 1、Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB
Hotbackup的一个很好的替代品。 在线(热)备份整个库的InnoDB、
XtraDB表 XtraBackup基于InnoDB的crash-recovery功能。它会复制innodb的data
file,由于不锁表,复制出来的数据是不一致的,在恢复的时候使用crash-recovery,使得数据恢复一致。 : 4、实现细节 5、innobackupex 相关参数 注:xtrabackup命令只备份数据文件,并不备份数据表结构(.frm),所以使用xtrabackup恢复的时候,你必须有对应表结构文件(.frm),所以,个人推荐采用innobackupex命令
[此命令相当于冷备份,复制数据目录的索引,数据,结构文件,但会有短暂的锁表(时间依赖于MyISAM大小)]。 参数说明如下: --defaults-file:指定my.cnf参数文件的位置[此配置文件里必须指定datadir]。 --apply-log:同xtrabackup的--prepare参数,一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据
文件仍处理不一致状态。--apply-log的作用是通过回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态。 --copy-back:做数据恢复时将备份数据文件拷贝到MySQL服务器的datadir。 --remote-host=HOSTNAME: 通过ssh将备份数据存储到进程服务器上。 --stream=[tar]:备份文件输出格式, 该文件可在XtarBackup binary文件中获得. 在使用参数stream=tar备份的时候,你的xtrabackup_logfile可能会临时放在/tmp目录下,如果你备份的时候并发写入较大的话,xtrabackup_logfile可能会很大(5G+),很可能会撑满你的/tmp目录,可以通过参数--tmpdir指定目录来解决这个问题。 --tmpdir=DIRECTORY:当有指定--remote-host
or --stream时, 事务日志临时存储的目录, 默认采用MySQL配置文件中所指定的临时目录tmpdir。 --redo-only
--apply-log:强制备份日志时只redo,跳过rollback,这在做增量备份时非常必要。 --use-memory=*:该参数在prepare的时候使用,控制prepare时innodb实例使用的内存。 --databases=LIST:列出需要备份的databases,如果没有指定该参数,所有包含MyISAM和InnoDB表的database都会被备份。 --slave-info:备份从库,
加上--slave-info备份目录下会多生成一个xtrabackup_slave_info 文件, 这里会保存主日志文件以及偏移, 文件内容类似于:CHANGE MASTER TO MASTER_LOG_FILE='', MASTER_LOG_POS=0。 --socket=SOCKET:指定mysql.sock所在位置,以便备份进程登录mysql。 二、xtrabackup-2.1.6-702安装 本文通过源码方式安装xtrabackup-2.1.6-702 下载地址:http://www.percona.com/downloads/XtraBackup/ 1、编译所需的依赖包 查看编译所需的依赖包是否安装,如果没有安装,则安装之。 rpm -q libaio libaio-devel perl-Time-HiRes curl curl-devel zlib-devel openssl-devel perl cpio expat-devel gettext-devel perl-ExtUtils-MakeMaker perl-DBD-MySQL.* yum -y install 包名 2、安装 tar -zxvf percona-xtrabackup-2.1.6-702-Linux-x86_64.tar.gz cd percona-xtrabackup-2.1.6-702-Linux-x86_64/bin 将innobackupex、xtrabackup等文件copy到mysql程序目录下/bin目录 三、innobackupex使用参数介绍 由于innobackupex能同时备份InnoDB和MyISAM引擎的表,这里重点介绍innobackupex的备份与恢复使用。通常一般都直接使用innobackupex,因为它能同时备份InnoDB和MyISAM引擎的表。要注意的是my.cnf里datadir这个参数是必须要指定的,xtrabackup_55是根据它去定位innodb数据文件的位置。 1、 innobackupex语法及参数说明 innobackup
[--sleep=MS] [--compress[=LEVEL]] [--include=REGEXP] [--user=NAME] [--password=WORD] innobackup --apply-log [--use-memory=MB] [--uncompress] [--defaults-file=MY.CNF] [--ibbackup=IBBACKUP-BINARY] BACKUP-DIR innobackup
--copy-back [--defaults-file=MY.CNF] BACKUP-DIR 是给ibbackup使用的,指定每备份1M数据,过程停止拷贝多少毫秒,也是为了在备份时尽量减小对正常业务的影响,具体可以查看ibbackup的手册
; 四、备份与恢复 1、备份 #
全备 innobackupex --defaults-file=/etc/my.cnf --no-timestamp --port=3306 --user=backup --password=backup --incremental --incremental-basedir=/backupdir/bak_data/full_bak /backupdir/bak_data/one_backup >/backupdir/bak_data/innoback.log 2>&1 # 第二次增量备份 innobackupex --defaults-file=/etc/my.cnf --no-timestamp --port=3306 --user=backup --password=backup --incremental --incremental-basedir=/backupdir/bak_data/one_backup /backupdir/bak_data/two_backup >/backupdir/bak_data/innoback.log 2>&1 # 第三次增量备份 innobackupex --defaults-file=/etc/my.cnf --no-timestamp --port=3306 --user=backup --password=backup --incremental --incremental-basedir=/backupdir/bak_data/two_backup /backupdir/bak_data/three_backup >/backupdir/bak_data/innoback.log 2>&1 2、恢复 是否用--redo-only
--apply-log 组合参数,我也搞不清,测试用和不用--redo-only,感觉数据都没有问题????? #
全备应用日志 #
恢复后的数据默认权限是有问题的,所以需要修改数据目录权限,如下 五、错误处理 特别说明: 如果出现如下错误,说明没有装 dbi和dbd innobackupex: Connecting to MySQL server with DSN 'dbi:mysql:;mysql_read_default_file=/etc/my.cnf;mysql_read_default_group=xtrabackup' as 'root' (using password: YES). innobackupex: Error: Failed to connect to MySQL server as DBD::mysql module is not installed at /usr/bin/innobackupex line
则按如下步骤进行操作: Percona Toolkit 的安装: 1、下载percona toolkit的包:(可以是源码包,或者RPM) 访问:http://www.percona.com/software/percona-toolkit/ 下载最新稳定的版本。也可以如下命令行的方式下载最新版本。 wget percona.com/get/percona-toolkit.tar.gz wget percona.com/get/percona-toolkit.rpm 2、安装于Perl相关的模块
yum install perl-DBI yum install perl-DBD-MySQL yum install perl-Time-HiRes yum install perl-IO-Socket-SSL
3、安装Percona Toolkit rpm -ivh percona-toolkit-2.2.6-1.noarch.rpm
OK,就这么简单,安装完毕。
安装错误:在yum install perl-DBD-MySQL时,出现如下错误信息
---> Package perl-DBD-MySQL.x86_64 0:3.0007-2.el5 set to be updated --> Processing Dependency: libmysqlclient.so.15(libmysqlclient_15)(64bit) for package: perl-DBD-MySQL --> Processing Dependency: libmysqlclient.so.15()(64bit) for package: perl-DBD-MySQL --> Running transaction check ---> Package mysql.x86_64 0:5.0.95-5.el5_9 set to be updated --> Processing Conflict: mysql conflicts MySQL --> Finished Dependency Resolution mysql-5.0.95-5.el5_9.x86_64 from updates has depsolving problems mysql conflicts with MySQL-server Error: mysql conflicts with MySQL-server
由于我安装的是5.6.xx的MySQL版本,而系统自带的是5.1xx版本的,而libmysqlclient.so.15是由5.0版本提供的,所以就 出错了。如果你的系统是centos6.X系列的,MySQL自带的为5.1以上,可能不会出现这个问题了。解决方案如下:
rpm -ivh MySQL-shared-compat-5.5.31-1.rhel5.x86_64.rpm MySQL-shared-compat为客户端的libraries ,向下兼容。 在yum install perl-DBD-MySQL就没有问题了。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com