首页 > 代码库 > xtrabackup安装

xtrabackup安装

xtabakcup


*****************************************************************  

安装  

*****************************************************************  

----1.编译安装percona-xtrabackup  

yum -y install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr \  

bison libtool  zlib-devel libgcrypt-devel  libcurl-devel  crypt*  libgcrypt* \  

python-sphinx openssl   imake libxml2-devel expat-devel   ncurses5-devel ncurses-devle   vim-common  libgpg-error-devel   libidn-devel  

  

NOTE:2.2.16 需要python-sphinx openssl两个依赖包.    

  

---2.安装相关插件  

  

yum -y install perl-DBI  

yum -y install perl-DBD-MySQL  

yum -y install  perl-Time-HiRes  

yum -y install perl-IO-Socket-SSL  


---3.编译安装组件

http://dist.schmorp.de/libev/  

  

#tar xvzf libev-4.22.tar.gz  


# ./configure  

  

# make   

  

# make install  


#tar xvzf mysql-boost-5.7.15.tar.gz (编译时候用)


--4.安装xtrabackup

tar xvzf percona-xtrabackup-2.4.4.tar.gz

cd percona-xtrabackup-2.4.4.tar.gz


cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DSYSCONFDIR=/etc \

-DWITH_BOOST=/home/mysql-5.7.15/boost


make


make install


---测试结果  

# xtrabackup --version

xtrabackup version 2.4.4 based on MySQL server 5.7.13 Linux (x86_64) (revision id: df58cf2)


---4.备份预备工作


权限和连接


xtrabackup需要连接到数据库和datadir操作权限。


xtrabackup或者innobackupex在使用过程中设计到2类用户权限:


1.系统用户,用来调用innobackupex或者xtrabackup


2.数据库用户,数据库内使用的用户


需要的权限:连接到服务是为了执行备份,需要在datadir上有read,write和execute权限。在数据库中需要以下权限:


  RELOAD和LOCK TABLES权限为了执行FLUSH TABLES WITH READ LOCK   。


  REPLICATION CLIENT为了获取binary log 位置


  CREATE TABLESPACE权限为了导入表,用户表级别的恢复


  SUPER权限在slave环境下备份用来启动和关闭slave线程

 

mysql>CREATEUSER‘bkpuser‘@‘localhost‘ IDENTIFIED BY‘s3cret‘;

mysql>GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON*.*TO‘bkpuser‘@‘localhost‘;

mysql> FLUSH PRIVILEGES;


---5.全备份和增量备份

全备份

$ innobackupex --user=DBUSER --password=DBUSERPASS /data/backups


从信息中会发现备份被创建在/data/backups/2016-10-25_00-00-09


内部机制:在备份的时候innobackupex会调用xtrabackup来备份innodb表,并复制所有的表定义,其他引擎的表(MyISAM,MERGE,CSV,ARCHIVE)。


增量备份


增量备份呢是为了减少空间使用和备份的时间。


增量备份的实现,依赖于innodb页上面的LSN(log sequence number),每次对数据库的修改都会导致LSN自增。


增量备份会复制指定LSN之后的所有数据页

$ innobackupex --user=DBUSER --password=DBUSERPASS -target-dir=/data/backups/1 --incremental-basedir=/data/backups/2016-10-25_00-00-09/

1目录下回有增量备份新目录


然后再创建一个增量备份


在增量备份1的基础上再创建一个增量备份,记为增量备份2。


$ innobackupex --user=DBUSER --password=DBUSERPASS -target-dir=/data/backups/2 --incremental-basedir=/data/backups/1/2016-10-25_10-10-11/



 增量备份替代方法


#可以使用指定—incremental-lsn来代替—incremental-basedir的方法创建增量备份。


#innobackupex --incremental /data/backups --incremental-lsn=1291135


#innobackupex --incremental /data/backups --incremental-lsn=1358967



---6.恢复数据


预备增量备份


1.需要先预备全备,但是只重做已提交事务,不回滚未提交事务,然后应用到全备,也是只重做已提交事务,不回滚未提交事务


2.回滚未提交事务


如果已经回滚了未提交事务,那么就无法再应用增量备份



在全备上,使用—redo-only只做已提交事务,不回滚未提交事务


innobackupex --apply-log --redo-only /data/backups/2016-10-25_00-00-09


应用第一个增量备份


innobackupex --apply-log --redo-only /data/backups/2016-10-25_00-00-09 --incremental-dir=/data/backups/1/2016-10-25_10-10-11/


应用第二个增量备份


innobackupex --apply-log /data/backups/2016-10-25_00-00-09 --incremental-dir=/data/backups/2/2016-10-25_16-30-32/


输出结果,注意LSN的变化:


162026 22:08:43 InnoDB: Shutdown completed; log sequence number 1358967

161026 22:08:43 innobackupex: completed OK!



回滚未提交事务


当应用完所有增量备份的时候,就需要回滚所有为完成事务(如果最后一步加了 –redo-only就需要回滚未提交,不执行的话在服务启动阶段服务会处理未提交事务)。

innobackupex --apply-log /data/backups/2016-10-25_00-00-09


还原操作

service mysqld stop

删除数据库数据目录下的所有数据或者备份数据目录下的所有数据

还原:

innobackupex --copy-back /data/backups/2016-10-25_00-00-09


改变数据库目录权限

chown -R mysql:mysql data/mysqldb


启动数据库

service mysqld start



恢复顺序:

# 全备应用日志 

[root@client103 ~]# innobackupex  --apply-log /tmp/backup/2014-01-11_15-37-31/ 

# 第一次的增量备份应用日志,应用完日志后,将合并到全备上,恢复使用全备恢复 

[root@client103 ~]# innobackupex  --apply-log /tmp/backup/2014-01-11_15-37-31/ --incremental-dir=/tmp/backup/2014-01-11_15-45-06/ 

# 将第二次增量备份应用日志并合并到全备上 

[root@client103 ~]# innobackupex  --apply-log /tmp/backup/2014-01-11_15-37-31/ --incremental-dir=/tmp/backup/2014-01-11_15-46-33/ 

# 此时两次增量备份其实都合并到全备上了,恢复是只需要使用全备进行恢复就可以了 

# 模拟数据故障[删除数据库的数据目录,执行如下命令还原] 

[root@client103 ~]# innobackupex --copy-back /tmp/backup/2014-01-11_15-37-31/ 

# 恢复后的数据默认权限是有问题的,所以需要修改数据目录权限,如下 

[root@client103 ~]# chown -R mysql:mysql /var/lib/mysql/ 

# 此时数据恢复完成,重启数据库服务,进行测试就可以了。大家自行测试,有问题留言反馈!




本文出自 “饿狼的传说” 博客,请务必保留此出处http://9548010.blog.51cto.com/9538010/1869074

xtrabackup安装