千家信息网

MySQL - Xtrabackup安装及出现问题处理方法

发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,下面讲讲关于MySQL - Xtrabackup安装及出现问题处理方法,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完MySQL - Xtrabackup安装及出现问题处理
千家信息网最后更新 2024年11月26日MySQL - Xtrabackup安装及出现问题处理方法

下面讲讲关于MySQL - Xtrabackup安装及出现问题处理方法,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完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]#

查看备份情况

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

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


对于以上MySQL - Xtrabackup安装及出现问题处理方法相关内容,大家还有什么不明白的地方吗?或者想要了解更多相关,可以继续关注我们的行业资讯板块。

备份 数据 增量 目录 数据库 文件 空间 问题 处理 检查 方法 效率 日志 速度 优点 信息 内容 原理 后台 情况 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 华为java软件开发怎么样 部队关了网络安全的对照检查 企业强化工控网络安全 软件开发如何报价给客户 荔湾区正规网络技术开发展示 广州诺特软件开发有限公司福利 百事网络技术有限公司电话 杭州滨江软件开发工作室 医保系统单位代码数据库 运用网络技术所带来的便利 网络安全 证书 国安印章网络技术有限公司电话 资阳软件开发简介 数据安全和网络安全区别 江苏智铭网络技术公司 梦中交谈打一网络技术 XC7K325T用什么软件开发 关于软件开发的设计报告 面试数据库读写分离 深圳掌柜网络技术有限公司 cuit网络安全学院 控号手数据库异常 网络安全法从草案到正式发布 新时代网络安全培训 职工网络安全知识竞赛答题 我的世界国服务器 北京市技能大赛工业软件开发 四川易倍网络技术有限公司 网络安全性心得体会 酒店网络安全需求分析总结
0