Percona-xtrabackup是 Percona公司开发的一个用于MySQL数据库物理热备的备份工具。

一、安装xtrabackup

采用rpm包的方式进行安装

[root@server- ~]# cd /usr/local/src/
[root@server- src]# wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
[root@server- src]# yum install -y percona-xtrabackup--2.4.-.el7.x86_64.rpm

二、xtrabackup工具介绍

xtrabackup主要包含两个工具:

xtrabackup:用于热备innodb,xtraxdb表中数据的工具,不能备份其他类型的表,也不能备份数据表结构。

innobackupex:是将xtrabackup进行封装的perl脚本,提供了备份myisam表的能力。

常用选项:

--host:指定主机

--user:指定用户名

--password:指定密码

--port:指定端口

--databases:指定数据库

--incremental:创建增量备份

--incremental-basedir:指定包含完全备份的目录

--incremental-dir:指定包含增量备份的目录

--apply-log:对备份进行预处理操作

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

--redo-only: 不回滚未提交事务

--copy-back:恢复备份目录

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

xtrabackup_checkpoints -- 备份类型(如完全或增量)、备份状态(如是否已经为prepared状态)和LSN(日志序列号)范围信息:每个InnoDB页(通常为16k大小)都会包含一个日志序列号,即LSN,LSN是整个数据库系统的系统版本号,每个页面相关的LSN能够表明此页面最近是如何发生改变的。

xtrabackup_binlog_info -- mysql服务器当前正在使用的二进制日志文件及备份这一刻位置二进制日志时间的位置。xtrabackup_binlog_pos_innodb -- 二进制日志文件及用于InnoDB或XtraDB表的二进制日志文件的当前position。

xtrabackup_binary -- 备份中用到的xtrabackup的可执行文件;

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

三、主库全库备份

在主库上执行如下命令

[root@server- bak]# innobackupex --defaults-file=/etc/mysql/my.cnf --user=root --password=xxxxxx /home/mysql-5.7./bak
:: innobackupex: Starting the backup operation IMPORTANT: Please check that the backup run completes successfully.
At the end of a successful backup run innobackupex
prints "completed OK!". :: version_check Connecting to MySQL server with DSN 'dbi:mysql:;mysql_read_default_group=xtrabackup' as 'root' (using password: YES).
Failed to connect to MySQL server: DBI connect(';mysql_read_default_group=xtrabackup','root',...) failed: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) at - line 1314.
:: Connecting to MySQL server host: localhost, user: root, password: set, port: not set, socket: not set
Failed to connect to MySQL server: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2).
[root@server- bak]#

报错,sock文件找不到,因为my.cnf里配置了另外一个路径的socket,所以找不到默认路径的文件,我们指定Socket连接方式来连接mysql

innobackupex --user=root --password=xxxxxxx --socket=/home/mysql-5.7.26/mysql.sock /home/mysql-5.7.26/bak/

执行到最后,显示如下信息

 :: Executing FLUSH NO_WRITE_TO_BINLOG ENGINE LOGS...
xtrabackup: The latest check point (for incremental): ''
xtrabackup: Stopping log copying thread.
. :: >> log scanned up to () :: Executing UNLOCK TABLES
:: All tables unlocked
:: [] Copying ib_buffer_pool to /home/mysql-5.7./bak/--13_11--/ib_buffer_pool
:: [] ...done
:: Backup created in directory '/home/mysql-5.7.26/bak/2019-12-13_11-00-50/'
MySQL binlog position: filename 'master-18-69.000001', position ''
:: [] Writing /home/mysql-5.7./bak/--13_11--/backup-my.cnf
:: [] ...done
:: [] Writing /home/mysql-5.7./bak/--13_11--/xtrabackup_info
:: [] ...done
xtrabackup: Transaction log of lsn () to () was copied.
:: completed OK!
completed OK!,表示备份成功
查看备份目录显示如下文件:
[root@server- --13_11--]# ll
总用量
-rw-r----- root root 12月 : backup-my.cnf
-rw-r----- root root 12月 : ib_buffer_pool
-rw-r----- root root 12月 : ibdata1
drwxr-x--- root root 12月 : mysql
drwxr-x--- root root 12月 : performance_schema
drwxr-x--- root root 12月 : sys
drwxr-x--- root root 12月 : test
-rw-r----- root root 12月 : xtrabackup_binlog_info
-rw-r----- root root 12月 : xtrabackup_checkpoints
-rw-r----- root root 12月 : xtrabackup_info
-rw-r----- root root 12月 : xtrabackup_logfile

backup-my.cnf:备份用到的配置文件
ibdata1:数据文件
xtrabackup_binlog_info:
mysql服务器当前正在使用的二进制日志文件及备份这一刻位置二进制日志时间的位置
xtrabackup_checkpoints:备份的类型、状态和LSN状态信息文件
xtrabackup_logfile:备份的日志文件

四、从库恢复备份

1、将从库的msyql停掉

[root@localhost data]# mysqladmin -uroot -pZaq1xsw@ -S /home/mysql-5.7./mysql.sock shutdown

2、在主库上复制备份目录到从库一个指定目录上

[root@server- bak]# scp -r --13_11--/ root@172.28.18.71:/home/mysql-5.7.

3、从库上删除已有的data目录

root@localhost mysql-5.7.]# ll
总用量
drwxr-x--- root root 12月 : --13_11--
drwxr-xr-x mysql mysql 12月 : data
drwxr-xr-x mysql mysql 6月 log

查看已经有了刚才复制的主库备份目录,删除从库的data目录

[root@localhost mysql-5.7.]# rm -rf data/

4、从库上也安装好percona-xtrabackup工具

执行--apply-log ,将数据合并,使数据文件处于一致性状态

[root@localhost mysql-5.7.]# innobackupex --apply-log /home/mysql-5.7./--13_11--/
InnoDB: PUNCH HOLE support available
InnoDB: Mutexes and rw_locks use GCC atomic builtins
InnoDB: Uses event mutexes
InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
InnoDB: Compressed tables use zlib 1.2.
InnoDB: Number of pools:
InnoDB: Using CPU crc32 instructions
InnoDB: Initializing buffer pool, total size = 100M, instances = , chunk size = 100M
InnoDB: Completed initialization of buffer pool
InnoDB: page_cleaner coordinator priority: -
InnoDB: Highest supported file format is Barracuda.
InnoDB: Removed temporary tablespace data file: "ibtmp1"
InnoDB: Creating shared tablespace for temporary tables
InnoDB: Setting file './ibtmp1' size to MB. Physically writing the file full; Please wait ...
InnoDB: File './ibtmp1' size is now MB.
InnoDB: redo rollback segment(s) found. redo rollback segment(s) are active.
InnoDB: non-redo rollback segment(s) are active.
InnoDB: 5.7. started; log sequence number
xtrabackup: starting shutdown with innodb_fast_shutdown =
InnoDB: FTS optimize thread exiting.
InnoDB: Starting shutdown...
InnoDB: Shutdown completed; log sequence number
:: completed OK!

最后显示191213 11:43:57 completed OK!,表示数据文件一致性准备成功

5、将主库备份目录更名为从库的data目录

[root@localhost mysql-5.7.]# mv --13_11--/ data
[root@localhost mysql-5.7.]# ll
总用量
drwxr-x--- root root 12月 : data
drwxr-xr-x mysql mysql 6月 log
[root@localhost mysql-5.7.]#

此时看到data目录的所有者是root,我们将mysql授权给data

[root@localhost mysql-5.7.]# chown -R mysql:mysql data/
[root@localhost mysql-5.7.]# ll
总用量
drwxr-x--- mysql mysql 12月 : data
drwxr-xr-x mysql mysql 6月 log

启动msyql

[root@localhost mysql-5.7.]# systemctl start mysqld

进入mysql

[root@localhost mysql-5.7.]# mysql -uroot -pxxxx -S /home/mysql-5.7./mysql.sock

查看数据库

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
rows in set (0.01 sec)

跟主库的数据一样了

五、设置从库同步

1、查看复制过来的data目录下的xtrabackup_info文件获取到binlog和pos位置

uuid = 57dcc063-1d59-11ea-a759-14feb5dc2c77
name =
tool_name = innobackupex
tool_command = --user=root --password=... --socket=/home/mysql-5.7./mysql.sock /home/mysql-5.7./bak/
tool_version = 2.4.
ibbackup_version = 2.4.
server_version = 5.7.-log
start_time = -- ::
end_time = -- ::
lock_time =
binlog_pos = filename 'master-18-69.000001', position ''
innodb_from_lsn =
innodb_to_lsn =
partial = N
incremental = N
format = file
compact = N
compressed = N
encrypted = N
binlog_pos = filename 'master-18-69.000001', position '2121'

2、连接mysql,执行从库命令
mysql> change master to
-> master_host='172.28.18.69',
-> master_port=,
-> master_user='repl',
-> master_password='Xxxxxxxx',
-> master_log_file='master-18-69.000001',
-> master_log_pos=;
Query OK, rows affected, warnings (0.10 sec)

3、启动从库同步

mysql> start slave;
Query OK, rows affected (0.01 sec)

4、显示从库状态

mysql> show slave status\G;
*************************** . row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.28.18.69
Master_User: repl
Master_Port:
Connect_Retry:
Master_Log_File: master--69.000001
Read_Master_Log_Pos:
Relay_Log_File: localhost-relay-bin.
Relay_Log_Pos:
Relay_Master_Log_File: master--69.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno:
Last_Error:
Skip_Counter:
Exec_Master_Log_Pos:
Relay_Log_Space:
Until_Condition: None
Until_Log_File:
Until_Log_Pos:
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master:
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno:
Last_IO_Error:
Last_SQL_Errno:
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id:
Master_UUID: ee3e292b-866b-11e9-9df8-14feb5dc2c77
Master_Info_File: /home/mysql-5.7./data/master.info
SQL_Delay:
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count:
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set: d24d8a53-880d-11e9-b1f3-842b2b5cdc15:-,
ee3e292b-866b-11e9-9df8-14feb5dc2c77:-
Auto_Position:
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
row in set (0.00 sec) ERROR:
No query specified mysql>
 Slave_IO_Running: Yes
Slave_SQL_Running: Yes
从库同步成功,

xtrabackup的使用的更多相关文章

  1. Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复

    Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...

  2. mysqldump和xtrabackup备份原理实现说明

    背景: MySQL数据库备份分为逻辑备份和物理备份两大类,犹豫到底用那种备份方式的时候先了解下它们的差异: 逻辑备份的特点是:直接生成SQL语句,在恢复的时候执行备份的SQL语句实现数据库数据的重现. ...

  3. xtrabackup 使用说明(续)

    背景: 关于物理备份工具xtrabackup的一些说明可以先看之前写过的文章说明:xtrabackup 安装使用.现在xtrabackup版本升级到了2.4.4,相比之前的2.1有了比较大的变化:in ...

  4. Percona XtraBackup 备份原理说明【转】

    本文来自:http://mysql.taobao.org/monthly/2016/03/07/ 前言 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MyS ...

  5. XtraBackup出现 Can't connect to local MySQL server through socket '/tmp/mysql.sock'

    Xtrabackup做备份时遇到下面错误信息MySQL server: Can't connect to local MySQL server through socket '/tmp/mysql.s ...

  6. MySQL 使用XtraBackup的shell脚本介绍

    mysql_backup.sh是关于MySQL的一个使用XtraBackup做备份的shell脚本,实现了简单的完整备份和增量备份.以及邮件发送备份信息等功能.功能目前还比较简单,后续将继续完善和增加 ...

  7. Xtrabackup 安装使用

    一 简介:      Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品.它能对Inno ...

  8. 「转」xtrabackup新版详细说明

    声明:本文由我的同事@fiona514编写,是我看过的最用心的中文说明介绍,强烈推荐大家学习使用. Percona Xtrabackup 2.4.1 编译及软件依赖 centos5,6 需要升级cma ...

  9. 利用xtrabackup备份mysql数据库

    利用xtrabackup备份mysql数据库 一.安装1.直接下载二进制文件wget http://www.percona.com/downloads/XtraBackup/XtraBackup-2. ...

  10. MySQL5.6下使用xtrabackup部分备份恢复到MySQL5.7

    现有需求:需要备份MySQL5.6环境下的部分表到MySQL5.7环境下并进行恢复 通过xtrabackup 实现部分备份有三种方式: 参考链接:http://blog.csdn.net/zhu197 ...

随机推荐

  1. A simple dynamic library implemented in C# 4.0 to deal with XML structure

    https://github.com/cardinals/XmlToObjectParser A simple dynamic library implemented in C# 4.0 to dea ...

  2. 【Zookeeper】分布式环境搭建

    环境说明 本文以三台机器为例,分别为bigdata111,bigdata112,bigdata113三台机器,先部署bigdata111机器,然后通过scp分发配置方式配置其他两台机器: 安装步骤 上 ...

  3. 转 - JS 中 call 和 apply 以及 bind 的区别

    转自 https://blog.csdn.net/wyyandyou_6/article/details/81488103

  4. 线程回调,线程中的队列,事件,greenlet模块,gevent模块,自定义补丁, 单线程实现并发,协程

    1.线程回调 在线程池/进程池每次提交任务,都会返回一个表示任务的对象,Future对象Future对象具备一个绑定方法,add_done_callback 用于指定回调函数 add 意味着可以添加多 ...

  5. 快速搭建WordPress博客

    博主在看了朋友的博客后 决定也搭建一个wordPress 博客 思路 1.购买服务器 2.Cenots环境配置 3.安装wordpress 工具 推荐使用 Xshell 6,当然也可以用其他 服务器推 ...

  6. Javadoc文档生成工具-自定义版

    先上图来一波 本身JDK自带了doc文档生成工具,但是不支持排除类,方法,属性,虽然有个@deprecated可以使用,但是达不到我想要的结果(类会被标记为废弃类,编译使用时会提示), 而且类说明示例 ...

  7. Linux下kafka集群搭建过程记录

    环境准备 zookeeper集群环境kafka是依赖于zookeeper注册中心的一款分布式消息对列,所以需要有zookeeper单机或者集群环境. 三台服务器: 172.16.18.198 k8s- ...

  8. [Comet OJ - Contest #4 D][39D 1584]求和_"数位dp"

    求和 题目大意: 数据范围: 题解: 脑筋急转弯可还行..... 我们发现只需要最后枚举个位/xk/xk 因为前面的贡献都是确定的了. 故此我们最后暴力统计一下就好咯. 不知道为啥我组合数一直过不去, ...

  9. Minimum Cost For Tickets

    In a country popular for train travel, you have planned some train travelling one year in advance.  ...

  10. VMware虚拟机下安装CentOS 6.10并配置访问外网

    VMware安装包以及CentOS 6.5安装包 链接:https://pan.baidu.com/s/1wQi5GSgp4klXhtd84aoMSA 提取码:9l5y 链接:https://pan. ...