12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
ADADADADAD
mysql数据库 时间:2024-12-25 09:55:13
作者:文/会员上传
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
防伪码:没有相当程度的孤独是不可能有内心的平和。1、概述Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle)、Perc
以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。
防伪码:没有相当程度的孤独是不可能有内心的平和。
1、概述
Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle)、Percona Server 和 MariaDB,并且开源,淘宝的RDS for MySQL的物理备份就是基于XtraBackup做的。
Xtrabackup有两个主要的工具:xtrabackup、innobackupex
(1)xtrabackup是C/C++编译的二进制文件,只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表;
(2)innobackupex则封装了xtrabackup,是一个perl脚本封装,所以能同时备份处理innodb和myisam,但在处理myisam时需要加一个读锁;
1.1 备份原理
整个备份过程如下图:
innobackupex 在启动后,会先 fork 一个进程,启动 xtrabackup进程,然后就等待 xtrabackup 备份完 ibd 数据文件;
xtrabackup 在备份 InnoDB 相关数据时,是有2种线程的,1种是 redo 拷贝线程,负责拷贝 redo 文件,1种是 ibd 拷贝线程,负责拷贝 ibd 文件;redo 拷贝线程只有一个,在 ibd 拷贝线程之前启动,在 ibd 线程结束后结束。xtrabackup 进程开始执行后,先启动 redo 拷贝线程,从最新的 checkpoint 点开始顺序拷贝 redo 日志;然后再启动 ibd 数据拷贝线程,在 xtrabackup 拷贝 ibd 过程中,innobackupex 进程一直处于等待状态(等待文件被创建)。
xtrabackup 拷贝完成idb后,通知 innobackupex(通过创建文件),同时自己进入等待(redo 线程仍然继续拷贝);
innobackupex 收到 xtrabackup 通知后,执行FLUSH TABLES WITH READ LOCK (FTWRL),取得一致性位点,然后开始备份非 InnoDB 文件(包括 frm、MYD、MYI、CSV、opt、par等)。拷贝非 InnoDB 文件过程中,因为数据库处于全局只读状态,如果在业务的主库备份的话,要特别小心,非 InnoDB 表(主要是MyISAM)比较多的话整库只读时间就会比较长,这个影响一定要评估到。
当 innobackupex 拷贝完所有非 InnoDB 表文件后,通知 xtrabackup(通过删文件) ,同时自己进入等待(等待另一个文件被创建);
xtrabackup 收到 innobackupex 备份完非 InnoDB 通知后,就停止 redo 拷贝线程,然后通知 innobackupex redo log 拷贝完成(通过创建文件);
innobackupex 收到 redo 备份完成通知后,就开始解锁,执行 UNLOCK TABLES;
最后 innobackupex 和 xtrabackup 进程各自完成收尾工作,如资源的释放、写备份元数据信息等,innobackupex 等待 xtrabackup 子进程结束后退出。
1.2 常用参数
--defaults-file:指明服务器的配置文件,此参数必须作为innobackupex的第一个参数,否则报错
--host:指明连接数据库的主机
--user:指明执行数据库备份的用户名
--password:指明执行备份的密码
--backup:指明为备份,此参数可以忽略
--apply-log:重做日志
--copy-back:执行数据恢复
--slave-info:备份从库的show slave status信息,仅用于在备份从库时使用
--no-lock:不锁表,仅适用于存储引擎为innodb,并且不在乎备份位置点时使用
2、安装XtraBackup
2.1 环境准备
MySQL的安装步骤略。
2.2 创建备份用户
mysql>createuser'backup'@'localhost'identifiedby'123456';QueryOK,0rowsaffected(0.04sec)mysql>grantreload,locktables,replicationclient,processon*.*to'backup'@'localhost'identifiedby'123456';QueryOK,0rowsaffected(0.30sec)mysql>flushprivileges;QueryOK,0rowsaffected(0.04sec)
2.3 创建备份目录
[root@MySQL-01~]#mkdir/backup
2.4 下载xtraBackup
[root@MySQL-01~]#cd/opt#下载可能较慢。[root@MySQL-01opt]#wgethttps://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.7/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.7-2.el6.x86_64.rpm
2.4 安装XtraBackup
#安装的时候出现报错,原因为依赖包未安装。[root@MySQL-01opt]#rpm-ivhpercona-xtrabackup-24-2.4.7-2.el6.x86_64.rpmwarning:percona-xtrabackup-24-2.4.7-2.el6.x86_64.rpm:HeaderV4DSA/SHA1Signature,keyIDcd2efd2a:NOKEYerror:Faileddependencies:libev.so.4()(64bit)isneededbypercona-xtrabackup-24-2.4.7-2.el6.x86_64perl(DBD::mysql)isneededbypercona-xtrabackup-24-2.4.7-2.el6.x86_64#安装相关依赖包[root@MySQL-01opt]#yum-yinstalllibev-develperl-DBD-MySQL[root@MySQL-01opt]#rpm-ivhpercona-xtrabackup-24-2.4.7-2.el6.x86_64.rpmwarning:percona-xtrabackup-24-2.4.7-2.el6.x86_64.rpm:HeaderV4DSA/SHA1Signature,keyIDcd2efd2a:NOKEYPreparing...###########################################[100%]1:percona-xtrabackup-24###########################################[100%][root@MySQL-01opt]#rpm-qlpercona-xtrabackup-24-2.4.7-2.el6.x86_64/usr/bin/innobackupex#innobackupex脚本工具/usr/bin/xbcloud/usr/bin/xbcloud_osenv/usr/bin/xbcrypt/usr/bin/xbstream/usr/bin/xtrabackup#最主要的备份工具/usr/share/doc/percona-xtrabackup-24-2.4.7/usr/share/doc/percona-xtrabackup-24-2.4.7/COPYING/usr/share/man/man1/innobackupex.1.gz/usr/share/man/man1/xbcrypt.1.gz/usr/share/man/man1/xbstream.1.gz/usr/share/man/man1/xtrabackup.1.gz
3、备份与恢复测试
3.1 全量备份
#defaults-file:my.cnf配置路径[root@MySQL-01opt]#innobackupex--defaults-file=/app/mysql/my.cnf--user=backup--password=123456/backup#查看backup目录下已经有备份文件[root@MySQL-01opt]#ll/backup/total4drwxr-x---5rootroot4096Jul1417:252017-07-14_17-25-24[root@MySQL-01opt]#ls/backup/2017-07-14_17-25-24/backup-my.cnfperformance_schemaxtrabackup_checkpointsibdata1repxtrabackup_infomysqlxtrabackup_binlog_infoxtrabackup_logfile[root@MySQL-01opt]#cat/backup/2017-07-14_17-25-24/xtrabackup_checkpointsbackup_type=full-backuped#备份方式为全量备份from_lsn=0#由于是全备,其实LSN号为0to_lsn=13835894#截止LSN号last_lsn=13835894compact=0recover_binlog_info=0
3.2 模拟恢复
既然全量备份已经完成,那么就来测试一下。
#将数据库停掉[root@MySQL-01~]#servicemysqldstopShuttingdownMySQL............SUCCESS!#将data文件移到backup目录下[root@MySQL-01~]#mv/app/mysql/data/backup/data_bak#无法启动mysqld了[root@MySQL-01~]#servicemysqldstartStartingMySQL.Loggingto'/app/mysql/data/MySQL-01.err'..ERROR!TheserverquitwithoutupdatingPIDfile(/app/mysql/data/MySQL-01.pid).#apply-log参数:在真正恢复数据库数据之前,先将数据库redo日志状态恢复。[root@MySQL-01~]#innobackupex--defaults-file=/app/mysql/my.cnf--user=backup--password=123456--apply-log/backup/2017-07-14_17-25-24#执行数据恢复[root@MySQL-01~]#innobackupex--defaults-file=/app/mysql/my.cnf--user=backup--password=123456--copy-back/backup/2017-07-14_17-25-24[root@MySQL-01~]#chown-Rmysql.mysql/app/mysql/data#再次启动数据库,显示成功[root@MySQL-01~]#servicemysqldstartStartingMySQL.Loggingto'/app/mysql/data/MySQL-01.err'..SUCCESS!
4、参考
http://mysql.taobao.org/monthly/2016/03/07/
http://www.cnblogs.com/olinux/p/5207887.html
11-20
11-19
11-20
11-20
11-20
11-19
11-20
11-20
11-19
11-20
11-19
11-19
11-19
11-19
11-19
11-19