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. DNS域名解析系统_2

    部署DNS正向解析 主配置文件(/etc/named.conf): 用来定义bind服务程序的运行. 区域配置文件(/etc/named.rfc1912.zones): 用来保存域名和ip地址对应关系 ...

  2. mysql数据库之事务与存储过程

    事务 什么是事务? 事务是指一些SQL语句的集合,这些语句同时执行成功完成某项功能 事务的CAID特性: 原子性:一个事务的执行是整体性的,要么内部所有语句都执行成功,要么一个都别想成功 一致性:事务 ...

  3. 小记--------spark的Master主备切换机制原理分析及源码分析

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABfEAAAJwCAYAAAAp7ysfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjw

  4. Hive远程连接

    HIVE的连接模式== 本地连接模式 直接启动hive命令 HIVE的远程连接 这里要启动HIVE的服务 thirft进行编写 hiveserver2 —- > 前台启动 后台启动 前台启动 h ...

  5. MySql查看时间

    select now();命令查看MySql时间(包括时分秒) select current_date();命令查看MySql时间(不包括时分秒) 在代码中,创建时间.修改时间字段的jdbc语句也可以 ...

  6. 菜单中Clean和batch build的作用

    清除Build生成的中间文件,删除编译的文件 编译的不一样,有重新编译和普通编译,重新编译会删除以前生成的文件

  7. Elastic Search中Document的CRUD操作

    一. 新增Document在索引中增加文档.在index中增加document.ES有自动识别机制.如果增加的document对应的index不存在.自动创建,如果index存在,type不存在自动创 ...

  8. T100——取得系统参数值,如关帐日期

    CALL cl_get_para(g_enterprise,g_site,'S-MFG-0031') RETURNING l_para_data 用此方法获取关帐日期

  9. 5-Perl 变量

    1.Perl 变量变量是存储在内存中的数据,创建一个变量即会在内存上开辟一个空间.解释器会根据变量的类型来决定其在内存中的存储空间,因此你可以为变量分配不同的数据类型,如整型.浮点型.字符串等.上一章 ...

  10. css 字体库和动画

    @font-face { font-family:'WebSymbols'; src: url('../font/WebSymbols-Regular.otf'); } .icon{ font-fam ...