资讯专栏INFORMATION COLUMN

Percona Xtrabackup 安装

曹金海 / 1166人阅读

摘要:服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置。因此,此时数据文件仍处理不一致状态。准备的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态。

Percona XtraBackup 简介

Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具。特点:
(1)备份过程快速、可靠;
(2)备份过程不会打断正在执行的事务;
(3)能够基于压缩等功能节约磁盘空间和流量;
(4)自动实现备份检验;
(5)还原速度快;

获取: http://www.percona.com/software/percona-xtrabackup/

RedHat/CentOS 安装:

直接安装 rpm 包:

[root@bogon ~]# yum localinstall percona-xtrabackup-24-2.4.3-1.el6.x86_64.rpm --skip-broken
Loaded plugins: fastestmirror
Setting up Local Package Process
Examining percona-xtrabackup-24-2.4.3-1.el6.x86_64.rpm: percona-xtrabackup-24-2.4.3-1.el6.x86_64
Marking percona-xtrabackup-24-2.4.3-1.el6.x86_64.rpm to be installed
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package percona-xtrabackup-24.x86_64 0:2.4.3-1.el6 will be installed
--> Processing Dependency: perl(DBD::mysql) for package: percona-xtrabackup-24-2.4.3-1.el6.x86_64
--> Processing Dependency: libev.so.4()(64bit) for package: percona-xtrabackup-24-2.4.3-1.el6.x86_64
--> Running transaction check
---> Package percona-xtrabackup-24.x86_64 0:2.4.3-1.el6 will be installed
--> Processing Dependency: libev.so.4()(64bit) for package: percona-xtrabackup-24-2.4.3-1.el6.x86_64
---> Package perl-DBD-MySQL.x86_64 0:4.013-3.el6 will be installed
--> Processing Dependency: perl(DBI::Const::GetInfoType) for package: perl-DBD-MySQL-4.013-3.el6.x86_64
--> Processing Dependency: perl(DBI) for package: perl-DBD-MySQL-4.013-3.el6.x86_64
--> Running transaction check
---> Package percona-xtrabackup-24.x86_64 0:2.4.3-1.el6 will be installed
--> Processing Dependency: libev.so.4()(64bit) for package: percona-xtrabackup-24-2.4.3-1.el6.x86_64
---> Package perl-DBI.x86_64 0:1.609-4.el6 will be installed
 
Packages skipped because of dependency problems:
    percona-xtrabackup-24-2.4.3-1.el6.x86_64 from /percona-xtrabackup-24-2.4.3-1.el6.x86_64
    perl-DBD-MySQL-4.013-3.el6.x86_64 from srr
    perl-DBI-1.609-4.el6.x86_64 from srr
[root@bogon ~]# yum localinstall percona-xtrabackup-24-2.4.3-1.el6.x86_64.rpm
Loaded plugins: fastestmirror
Setting up Local Package Process
Examining percona-xtrabackup-24-2.4.3-1.el6.x86_64.rpm: percona-xtrabackup-24-2.4.3-1.el6.x86_64
Marking percona-xtrabackup-24-2.4.3-1.el6.x86_64.rpm to be installed
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package percona-xtrabackup-24.x86_64 0:2.4.3-1.el6 will be installed
--> Processing Dependency: perl(DBD::mysql) for package: percona-xtrabackup-24-2.4.3-1.el6.x86_64
--> Processing Dependency: libev.so.4()(64bit) for package: percona-xtrabackup-24-2.4.3-1.el6.x86_64
--> Running transaction check
---> Package percona-xtrabackup-24.x86_64 0:2.4.3-1.el6 will be installed
--> Processing Dependency: libev.so.4()(64bit) for package: percona-xtrabackup-24-2.4.3-1.el6.x86_64
---> Package perl-DBD-MySQL.x86_64 0:4.013-3.el6 will be installed
--> Processing Dependency: perl(DBI::Const::GetInfoType) for package: perl-DBD-MySQL-4.013-3.el6.x86_64
--> Processing Dependency: perl(DBI) for package: perl-DBD-MySQL-4.013-3.el6.x86_64
--> Running transaction check
---> Package percona-xtrabackup-24.x86_64 0:2.4.3-1.el6 will be installed
--> Processing Dependency: libev.so.4()(64bit) for package: percona-xtrabackup-24-2.4.3-1.el6.x86_64
---> Package perl-DBI.x86_64 0:1.609-4.el6 will be installed
--> Finished Dependency Resolution
Error: Package: percona-xtrabackup-24-2.4.3-1.el6.x86_64 (/percona-xtrabackup-24-2.4.3-1.el6.x86_64)
           Requires: libev.so.4()(64bit)
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest

报这个错是因为没有安装epel-release

yum install epel-release

之后则可以正常安装

XtraBackup 备份:
1.完全备份:

Xtabackup 的命令行工具: innobackupex

innobackupex --user=DBUSER --password=DBUSERPASS /path/to/BACKUP-DIR/

进行备份的用户最小权限为: RELOAD, LOCK TABLES, REPLICATION CLIENT , 可多带带创建一个最小权限用户

使用innobakupex备份时,其会调用xtrabackup备份所有的InnoDB表,复制所有关于表结构定义的相关文件(.frm)、以及MyISAM、MERGE、CSV和ARCHIVE表的相关文件,同时还会备份触发器和数据库配置信息相关的文件。这些文件会被保存至一个以时间命令的目录中。

在备份的同时,innobackupex还会在备份目录中创建如下文件:
(1)xtrabackup_checkpoints —— 备份类型(如完全或增量)、备份状态(如是否已经为prepared状态)和LSN(日志序列号)范围信息;

每个InnoDB页(通常为16k大小)都会包含一个日志序列号,即LSN。LSN是整个数据库系统的系统版本号,每个页面相关的LSN能够表明此页面最近是如何发生改变的。

(2)xtrabackup_binlog_info —— mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置。

(3)xtrabackup_binlog_pos_innodb —— 二进制日志文件及用于InnoDB或XtraDB表的二进制日志文件的当前position。

(4)xtrabackup_binary —— 备份中用到的xtrabackup的可执行文件;

(5)backup-my.cnf —— 备份命令用到的配置选项信息;

在使用innobackupex进行备份时,还可以使用--no-timestamp选项来阻止命令自动创建一个以时间命名的目录;如此一来,innobackupex命令将会创建一个BACKUP-DIR目录来存储备份数据。

[root@bogon ~]# service mysqld start
Starting MySQL (Percona Server) SUCCESS!
[root@bogon ~]# mysql -h127.0.0.1 -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 2
Server version: 5.7.11-4 Percona Server (GPL), Release 4, Revision 5c940e1
 
Copyright (c) 2009-2016 Percona LLC and/or its affiliates
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
 
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
 
Type "help;" or "h" for help. Type "c" to clear the current input statement.
 
mysql> create database week1;
Query OK, 1 row affected (0.00 sec)
 
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| week1              |
+--------------------+
5 rows in set (0.00 sec)
 
mysql> grant all privileges on *.* to "shiina"@"%" identified by "shiina";
Query OK, 0 rows affected, 1 warning (0.01 sec)
 
mysql> q
Bye
[root@bogon ~]# innobackupex --user=shiina --password=shiina /backup/
... #省略很多很多
...
160530 05:39:31 Finished backing up non-InnoDB tables and files
160530 05:39:31 Executing LOCK BINLOG FOR BACKUP...
160530 05:39:31 Executing FLUSH NO_WRITE_TO_BINLOG ENGINE LOGS...
xtrabackup: The latest check point (for incremental): "2491433"
xtrabackup: Stopping log copying thread.
.160530 05:39:31 >> log scanned up to (2491442)
 
160530 05:39:31 Executing UNLOCK BINLOG
160530 05:39:31 Executing UNLOCK TABLES
160530 05:39:31 All tables unlocked
160530 05:39:31 [00] Copying ib_buffer_pool to /backup/2016-05-30_05-39-26/ib_buffer_pool
160530 05:39:31 [00]        ...done
160530 05:39:31 Backup created in directory "/backup/2016-05-30_05-39-26"
160530 05:39:31 [00] Writing backup-my.cnf
160530 05:39:31 [00]        ...done
160530 05:39:31 [00] Writing xtrabackup_info
160530 05:39:31 [00]        ...done
xtrabackup: Transaction log of lsn (2491433) to (2491442) was copied.
160530 05:39:31 completed OK!
[root@bogon ~]# ls /backup/2016-05-30_05-39-26/
backup-my.cnf   ibdata1  performance_schema  week1                   xtrabackup_info
ib_buffer_pool  mysql    sys                 xtrabackup_checkpoints  xtrabackup_logfile
2、准备(prepare)一个完全备份

一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态。

innobakupex命令的--apply-log选项可用于实现上述功能。如下面的命令:

innobackupex --apply-log /path/to/BACKUP-DIR

如果执行正确,其最后输出的几行信息通常如下:

xtrabackup: starting shutdown with innodb_fast_shutdown = 1
120407 9:01:36 InnoDB: Starting shutdown...
120407 9:01:40 InnoDB: Shutdown completed; log sequence number 92036620
120407 09:01:40 innobackupex: completed OK!

在实现“准备”的过程中,innobackupex通常还可以使用--use-memory选项来指定其可以使用的内存的大小,默认通常为100M。如果有足够的内存可用,可以多划分一些内存给prepare的过程,以提高其完成速度。

[root@bogon ~]# innobackupex --apply-log /backup/2016-05-30_05-39-26/
... #又省略了很多
...
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
InnoDB: FTS optimize thread exiting.
InnoDB: Starting shutdown...
InnoDB: Shutdown completed; log sequence number 2491944
160530 05:45:33 completed OK!
3、从一个完全备份中恢复数据

innobackupex命令的--copy-back选项用于执行恢复操作,其通过复制所有数据相关的文件至mysql服务器DATADIR目录中来执行恢复过程。innobackupex通过backup-my.cnf来获取DATADIR目录的相关信息。

innobackupex --copy-back /path/to/BACKUP-DIR

如果执行正确,其输出信息的最后几行通常如下:

innobackupex: Starting to copy InnoDB log files
innobackupex: in "/backup/2012-04-07_08-17-03"
innobackupex: back to original InnoDB log directory "/mydata/data"
innobackupex: Finished copying back files.
 
120407 09:36:10 innobackupex: completed OK!

请确保如上信息的最行一行出现“innobackupex: completed OK!”。

当数据恢复至DATADIR目录以后,还需要确保所有数据文件的属主和属组均为正确的用户,如mysql,否则,在启动mysqld之前还需要事先修改数据文件的属主和属组。如:

chown -R mysql:mysql /mydata/data/
 
[root@bogon ~]# rm -rf /data/mysql/*
[root@bogon ~]# innobackupex --copy-back /backup/2016-05-30_05-39-26/
... # 你懂
...
160530 05:49:54 completed OK!
[root@bogon ~]# chown -R mysql:mysql /data/mysql/*
[root@bogon ~]# ll /data/mysql/
total 122912
-rw-r----- 1 mysql mysql      290 May 30 05:49 ib_buffer_pool
-rw-r----- 1 mysql mysql 12582912 May 30 05:49 ibdata1
-rw-r----- 1 mysql mysql 50331648 May 30 05:49 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 May 30 05:49 ib_logfile1
-rw-r----- 1 mysql mysql 12582912 May 30 05:49 ibtmp1
drwxr-x--- 2 mysql mysql     4096 May 30 05:49 mysql
drwxr-x--- 2 mysql mysql     4096 May 30 05:49 performance_schema
drwxr-x--- 2 mysql mysql    12288 May 30 05:49 sys
drwxr-x--- 2 mysql mysql     4096 May 30 05:49 week1
-rw-r----- 1 mysql mysql      421 May 30 05:49 xtrabackup_info
[root@bogon ~]# mysql -h127.0.0.1 -p
...
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| week1              |
+--------------------+
5 rows in set (0.01 sec)

然而此时 mysql 服务却出了问题 --> 服务无法停止, 因为pid文件被删除了, 找不到pid文件不知道mysql服务的进程号, 所以无法结束mysql进程
杀死进程, 重启服务, 一切正常

[root@bogon ~]# service mysqld restart
ERROR! MySQL (Percona Server) PID file could not be found!
Starting MySQL (Percona Server)... ERROR! The server quit without updating PID file (/data/mysql/bogon.pid).
[root@bogon ~]# kill 1382
[root@bogon ~]# service mysqld start
Starting MySQL (Percona Server). SUCCESS!
[root@bogon ~]# mysql -h127.0.0.1 -p
...
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| week1              |
+--------------------+
5 rows in set (0.00 sec)

完成

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/48656.html

相关文章

  • 通过 XtraBackup 实现不停机不锁表搭建主从同步

    摘要:备份时,会将的信息记录在文件中,通过此信息可以方便的搭建主从复制。因此,此时数据文件仍处理不一致状态。准备的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态。 简介 Xtrabackup是由 Percona 开发的一个开源软件,可实现对 InnoDB 的数据备份,支持在线热备份(备份时不影响数据读写)。备份时,Xtrabackup 会将 Ma...

    guqiu 评论0 收藏0
  • 恢复阿里云RDS的数据备份文件到本地数据库

    摘要:操作系统中已安装数据备份文件解压工具点击下载。导出数据数据库名称数据库名称 前言   写之前先说说这篇文章的来由,公司客户准备发布一些活动,采用在线报名的方式,由于前期表结构设计的不合理,后期优化对表结构的改动,导致部分活动用户报名数据丢失,于是想恢复mysql被误删的数据,幸运的是RDS每天会自动备份数据文件,官方也提供了恢复云数据库mysql的备份文件到自建数据库的文档,不再赘述,...

    ysl_unh 评论0 收藏0
  • XtraBackup不停机不锁表搭建MySQL主从同步实践

    摘要:当然我们在实际运维过程中都应针对不同的业务需求分析和选择合适的备份恢复方案,这篇文章就是针对多实例且一个实例对应多个的情况,实现在线不停机不锁表的主从同步,日后再继续更新分享基于的其它实用技能。 showImg(//i.v2ex.co/02ftb7pa.jpeg); 前言 Percona XtraBackup可以说是一个相对完美的免费开源数据备份工具,支持在线无锁表同步复制和可并行...

    dreamtecher 评论0 收藏0
  • Linux运维:mysql数据库的备份与恢复

    摘要:运维工程师的日常工作需要对各种数据进行备份,其中数据库数据的备份当属重点之一,为了方便管理,选择哪种备份方案是很重要的。以上版本进行备份恢复及以上的版本用工具会有问题。 运维工程师的日常工作需要对各种数据进行备份,其中数据库数据的备份当属重点之一,为了方便管理,选择哪种备份方案是很重要的。 数据备份种类 全量备份 全量备份就是指对某一个时间点上的所有数据或应用进行的一个完全拷贝。实际应...

    xuexiangjys 评论0 收藏0
  • MySQL物理备份

    摘要:介绍只能备份引擎的数据不能备份表结构开源的强烈推荐最新版本旧版本多可以备份和两种引擎的数据和表结构一般用这个备份时默认读取配置文件安装使用安装不安装这个备份会报错添加环境变量玩一手建议 Ⅰ、xtrabackup介绍 xtrabackup只能备份innodb引擎的数据,不能备份表结构,percona开源的,强烈推荐最新版本(旧版本bug多) innobackupex可以备份myisam...

    stonezhu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<