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/ 

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


新闻名称:xtrabackup安装
网页路径:http://ybzwz.com/article/iicdhd.html