千家信息网

xtrabackup安装

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,xtabakcup*****************************************************************安装************************
千家信息网最后更新 2025年11月07日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/

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




备份 数据 增量 权限 事务 数据库 全备 应用 目录 用户 日志 服务 时候 测试 编译 预备 方法 结果 问题 两个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网互联网科技有限公司怎么样 宿迁市网络安全和信息化 学习软件开发要有哪些职业天赋 软件开发需要什么岗位人员 区块狗是不是用的腾讯云服务器 服务器会自动返回cookie吗 网络安全文字如何写 华为云数据库服务怎么样 辽宁信息产业网络技术公司 数据库的优点缺点 湖南网络技术学院可专升本吗 网络安全行业特征分析 常州边缘计算服务器 桓台办公系统oa软件开发 图书馆数据库大揭秘 静安区网络技术服务 数据库应用技术的思维导图 网络技术基础知识总结 江苏游戏软件开发工程 命令行打开服务器管理器 关于网络安全作文结尾 服装销售数据库业务逻辑 软件开发直播平台毕业论文 计算机与网络安全书籍 贝叶斯网络 网络安全 沈阳学软件开发专业 ftp服务器 缩略图 云服务器存储数据安全吗 数据库原理与技术试卷 软件开发 笔记本电脑性价比排行
0