千家信息网

MySQL - Xtrabackup安装及所遇问题处理

发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,Xtarbackup简介Xtrabackup是由percona开源的免费数据库热备份软件,它能对InnoDB数据库和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份同样需要加表锁);m
千家信息网最后更新 2025年11月08日MySQL - Xtrabackup安装及所遇问题处理

Xtarbackup简介
Xtrabackup是由percona开源的免费数据库热备份软件,它能对InnoDB数据库和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份同样需要加表锁);mysqldump备份方式是采用的逻辑备份,其最大的缺陷是备份和恢复速度较慢,如果数据库大于50G,mysqldump备份就不太适合。
Xtrabackup优点

1)备份速度快,物理备份可靠
2)备份过程不会打断正在执行的事务(无需锁表)
3)能够基于压缩等功能节约磁盘空间和流量
4)自动备份校验
5)还原速度快
6)可以流传将备份传输到另外一台机器上
7)在不增加服务器负载的情况备份数据

Xtrabackup备份原理
备份开始时首先会开启一个后台检测进程,实时检测mysql redo的变化,一旦发现有新的日志写入,立刻将日志记入后台日志文件xtrabackup_log中,之后复制innodb的数据文件一系统表空间文件ibdatax,复制结束后,将执行flush tables with readlock,然后复制.frm MYI MYD等文件,最后执行unlock tables,最终停止xtrabackup_log。
Xtrabackup增量备份介绍

xtrabackup增量备份的原理是:

1)、首先完成一个完全备份,并记录下此时检查点LSN;
2)、然后增量备份时,比较表空间中每个页的LSN是否大于上次备份的LSN,若是则备份该页并记录当前检查点的LSN。

增量备份优点:

1)、数据库太大没有足够的空间全量备份,增量备份能有效节省空间,并且效率高;
2)、支持热备份,备份过程不锁表(针对InnoDB而言),不阻塞数据库的读写;
3)、每日备份只产生少量数据,也可采用远程备份,节省本地空间;
4)、备份恢复基于文件操作,降低直接对数据库操作风险;
5)、备份效率更高,恢复效率更高。

安装
运行环境是centos 7.2
下载XtraBackup:
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/7/x86_64/Percona-XtraBackup-2.4.9-ra467167cdd4-el7-x86_64-bundle.tar

(Percona-XtraBackup-8.0下载:
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-8.0.4/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.4-1.el7.x86_64.rpm
依赖:yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr bison libtool ncurses5-devel perl perl-devel perl-Digest-MD5 perl-Time-HiRes perl-DBD-MySQL libev libev-devel libgcrypt libgcrypt-devel curl curl-devel python-setuptools libarchive-devel)

解压:tar -xf Percona-XtraBackup-2.4.9-ra467167cdd4-el7-x86_64-bundle.tar
检查安装percona-xtrabackup-24-2.4.9-1.el6.x86_64.rpm所需依赖包:
yum -y install percona-xtrabackup-24-2.4.9-1.el6.x86_64.rpm --skip-broken
根据提示进行安装:
yum -y install perl-* mariadb-libs
还有一个依赖包需要手动下载安装
wget http://mirror.centos.org/centos/7/extras/x86_64/Packages/libev-4.15-7.el7.x86_64.rpm
安装完成几个依赖包,尝试安装percona-xtrabackup
yum -y install percona-xtrabackup-24-2.4.9-1.el6.x86_64.rpm
我这显示正确安装,没有报错。

[root@localhost src]# which xtrabackup
/usr/bin/xtrabackup
[root@localhost src]# innobackupex -v
innobackupex version 2.4.9 Linux (x86_64) (revision id: a467167cdd4)
[root@localhost src]#

mysql创建数据库以及表
mysql> create database home ;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
mysql> create table address (name varchar(10) not null,homeaddress varchar(20) not null);
Query OK, 0 rows affected (0.08 sec)
mysql> use home ;
Database changed
mysql> insert into address values('zhuangsan','guangzhou');
Query OK, 1 row affected (0.02 sec)

mysql> insert into address values('lisi','shanghai');
Query OK, 1 row affected (0.01 sec)

mysql> insert into address values('waner','shenzhen');
Query OK, 1 row affected (0.03 sec)
全量备份:
[root@localhost run]# innobackupex --defaults-file=/etc/my.cnf --user=root --password="123abc" --backup /data/mysqldata

--user :mysql的用户帐号
--password:为帐号的密码
/data/mysqldata:数据备份目录

[root@localhost run]# ls /data/mysqldata/2018-03-09_17-25-31/ #在这个目录中可以看到备份信息,同样可以看到我们创建的库的名称。

[root@localhost ~]# innobackupex --apply-log /data/mysqldata/2018-03-09_17-25-31/ #使用此参数使相关数据性文件保持一致性状态。

恢复:
删除表信息:
mysql> show databases
-> ;
+------------------------------+
| Database |
+------------------------------+
| information_schema |
| #mysql50#2018-03-09_17-25-31 |
| home |
| mysql |
| performance_schema |
| sys |
+------------------------------+
6 rows in set (0.09 sec)

mysql> use home;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+----------------+
| Tables_in_home |
+----------------+
| address |
+----------------+
1 row in set (0.00 sec)

mysql> drop table address;
Query OK, 0 rows affected (0.02 sec)
mysql> select * from address
->;

ERROR 1146 (42S02): Table 'home.address' doesn't exist
mysql>

恢复之前必须保证数据目录为空,即mysqldata目录。由于之前的备份数据在mysqldata目录中,所以需要将里面的数据copy出来,确保mysqldata目录是空的。才能正常恢复数据。要不然会报mysqldata目录非空错误。
[root@localhost mysqldata]# innobackupex --defaults-file=/etc/my.cnf --copy-back /data/mysqldata.bak/2018-03-09_17-25-31/


所遇问题处理 注:
恢复数据后,启动mysql出现报错,无法启动。
[root@localhost mysqldata]# service mysqld start
Starting MySQL.. ERROR! The server quit without updating PID file (/var/run/mysqld/mysqld.pid).

检查过/var/run/mysqld目录没问题,进入恢复数据文件目录和之前的数据进行对比,发现所以数据的所有者不是mysql而是root


修改恢复目录的数据权限
[root@localhost data]# chown -R mysql:mysql mysqldata
重新启动mysql,正常启动

查看数据是否恢复。

数据恢复正常。
增量备份与恢复:
新插入一些数据,创建用于增量备份的数据,用来模拟删除掉了全备后的数据,能否通过增量备份文件来恢复。
mysql> select * from address;
+-----------+-------------+
| name | homeaddress |
+-----------+-------------+
| zhuangsan | guangzhou |
| lisi | shanghai |
| waner | shenzhen |
| jinjin | jiangxi |
| xiaoxiong | xi`an |
| meimei | fujian |
+-----------+-------------+
6 rows in set (0.00 sec)

mysql>

增量备份:
[root@localhost mysqldata.bak]# innobackupex --defaults-file=/etc/my.cnf --user=root --password=123abc --incremental /data/mysqldata --incremental-basedir=/data/mysqldata.bak/2018-03-09_17-25-31
--incremental /data/mysqldata 指定增量备份文件存放目录
--incremental-basedir=/data/mysqldata.bak/2018-03-09_17-25-31 指定上一次全量备份或增量备份的存放目录

显示以下内容说明成功:
180323 14:54:20 Executing UNLOCK TABLES
180323 14:54:20 All tables unlocked
180323 14:54:20 [00] Copying ib_buffer_pool to /data/mysqldata/2018-03-23_14-54-12/ib_buffer_pool
180323 14:54:20 [00] ...done
180323 14:54:20 Backup created in directory '/data/mysqldata/2018-03-23_14-54-12/'
180323 14:54:20 [00] Writing /data/mysqldata/2018-03-23_14-54-12/backup-my.cnf
180323 14:54:20 [00] ...done
180323 14:54:20 [00] Writing /data/mysqldata/2018-03-23_14-54-12/xtrabackup_info
180323 14:54:20 [00] ...done
xtrabackup: Transaction log of lsn (2564189) to (2564198) was copied.
180323 14:54:20 completed OK!
[root@localhost mysqldata.bak]#

查看备份情况

删除一条数据测试增量恢复

在恢复数据之前记得关闭数据库服务。


备份 数据 增量 目录 数据库 文件 空间 检查 效率 日志 速度 问题 优点 信息 原理 后台 情况 检查点 过程 速度快 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 浩云科技是做网络安全的吗 数据库技术实验二实验报告 软件开发的未来趋势论文6000 网络安全钓鱼邮件 网络安全和信息化建设基本情况 浦东新区市场网络技术费用是多少 数据库sa登录失败 品质的软件开发技能培训 南通品质软件开发诚信服务 福吉德网络技术怎么样 数据中心数据库技术 数据库中数据类型怎么查看 手机服务器在哪儿设置 如何登录国家网络安全 数据库中fk 富士通更换服务器硬盘步骤 两台服务器如何配置无密钥登陆 物超所值的监控服务器 国内网络安全系统 数据库的对应关系有多对一吗 腾讯云轻量应用服务器远程登录 威努特 工业网络安全 软件开发管理职业规划书 js与html连接数据库 微服务器什么意思 数据库访问技术学什么好 深圳市微桥网络技术有限公司 替换数据库字段空格 嘉兴建设智慧医院软件开发 三门峡软件开发简介
0