Percona Xtrabackup 备份生成的几个文件功能说明

前言

在xtrabackup使用的过程中,主要会有以下几个文件生成,本文就这几个文件的内容以及作用进行记录和说明。

xtrabackup_binlog_info

xtrabackup_binlog_pos_innodb

xtrabackup_checkpoints

xtrabackup_info

xtrabackup_logfile

xtrabackup_slave_info

backup-my.cnf


实验过程

·  在备份前,确认binlog的位点。

master [localhost] {msandbox} ((none)) > show master status\G

*************************** 1. row ***************************

             File: mysql-bin.000011

         Position: 1549

     Binlog_Do_DB:

 Binlog_Ignore_DB:

Executed_Gtid_Set:

1 row in set (0.00 sec)

·  备份的时候,插入两条数据,模拟备份的时候有新的数据产生,备份在插入之前开始,插入完后备份结束。

master [localhost] {msandbox} (test) > insert into test values(1,'zhangsan');

Query OK, 1 row affected (0.04 sec)

master [localhost] {msandbox} (test) > insert into test values(2,'lisi');

Query OK, 1 row affected (0.04 sec)

 

·  插入完成后查看binlog位点。

master [localhost] {msandbox} ((none)) > show master status\G

*************************** 1. row ***************************

             File: mysql-bin.000011

         Position: 2140

     Binlog_Do_DB:

 Binlog_Ignore_DB:

Executed_Gtid_Set:

1 row in set (0.00 sec)

·  备份命令如下:

innobackupex --socket=/tmp/mysql_sandbox21489.sock \

  --user=msandbox \

  --password=msandbox \

  --no-timestamp \

  --slave-info \

/data/full

·  以下为xtrabackup的输出日志

170305 21:24:27 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!".

 

....

 

xtrabackup: using the following InnoDB configuration:

xtrabackup:   innodb_data_home_dir = ./

xtrabackup:   innodb_data_file_path = ibdata1:12M:autoextend

xtrabackup:   innodb_log_group_home_dir = ./

xtrabackup:   innodb_log_files_in_group = 2

xtrabackup:   innodb_log_file_size = 50331648

# 这里的信息会被记录到backup-my.cnf 文件中,backup-my.cnf 是启动备份集所需要的最小参数。

 

....

 

xtrabackup: Transaction log of lsn (2142985143) to (2142987473) was copied.

# 我们可以看到我们当时插入的数据的redo log已经被拷贝

170305 21:24:33 completed OK!

·  同样的,我们可以看到备份完的时候的LSN 为2142987473,符合预期

master [localhost] {msandbox} (test) > show engine innodb status\G

 

....

 

---

LOG

---

Log sequence number 2142987473

Log flushed up to   2142987473

Pages flushed up to 2142987473

Last checkpoint at  2142987473

Max checkpoint age    80826164

Checkpoint age target 78300347

 

...

·  xtrabackup_binlog_info 文件记录的是备份完成的那个时间点的binlog位点。

[root@COS-DEV-MySQL full]# cat xtrabackup_binlog_info

mysql-bin.000011    2140

·  xtrabackup_checkpoints 文件记录的是备份类型,如是全量备份还是增量,当前备份集的状态,是否已经prepare过。如果是全量备份,backup_type = full-backuped,如果是增量是backup_type = incremental。备份集的状态在apply log后会改变,后面会说明

[root@COS-DEV-MySQL full]# cat xtrabackup_checkpoints

backup_type = full-backuped

from_lsn = 0    # 由于是全量备份,所以数据是从LSN=0开始的

to_lsn = 2142987473

last_lsn = 2142987473

compact = 0

recover_binlog_info = 0

·  xtrabackup_info 文件记录的是你备份的时候的一些参数,脚本版本,数据库版本,备份时间,binlog,是否压缩,备份增量还是全量等信息

[root@COS-DEV-MySQL full]# cat xtrabackup_info

uuid = 231d9d80-01a9-11e7-bcb1-080027a1fd1c

name =

tool_name = innobackupex

tool_command = --socket=/tmp/mysql_sandbox21489.sock --user=msandbox --password=... --no-timestamp --slave-info  /data/full

tool_version = 2.3.7

ibbackup_version = 2.3.7

server_version = 5.6.24-72.2-log

start_time = 2017-03-05 21:39:14

end_time = 2017-03-05 21:39:20

lock_time = 0

binlog_pos = filename 'mysql-bin.000011', position '2140'

innodb_from_lsn = 0

innodb_to_lsn = 2142987473

partial = N

incremental = N

format = file

compact = N

compressed = N

encrypted = N

·  然后,我们进行apply log

[root@COS-DEV-MySQL full]# innobackupex --apply-log .

170305 21:42:17 innobackupex: Starting the apply-log operation

...

InnoDB: Shutdown completed; log sequence number 2142991038

170305 21:42:21 completed OK!

·  apply log 完成之后,我们发现多了个xtrabackup_binlog_pos_innodb文件,内容和xtrabackup_binlog_info一样,xtrabackup_binlog_pos_innodb只是记录的innodb和xtradb的binlog位点,如果你还有其他存储引擎,例如myisam,那么需要读取xtrabackup_binlog_info的位点作为备份集的准确binlog位点。

[root@COS-DEV-MySQL full]# cat xtrabackup_binlog_pos_innodb

mysql-bin.000011    2140

[root@COS-DEV-MySQL full]# cat xtrabackup_binlog_info

mysql-bin.000011    2140

·  我们试一下myisam引擎的表进行数据插入的时候备份。在备份的时候,对test_myisam表进行数据插入,然后进行apply log,看看两个文件的差异

master [localhost] {msandbox} (test) > show create table test_myisam\G

*************************** 1. row ***************************

       Table: test_myisam

Create Table: CREATE TABLE `test_myisam` (

  `id` int(11) DEFAULT NULL,

  `name` varchar(10) DEFAULT NULL

) ENGINE=MyISAM DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

 

master [localhost] {msandbox} (test) > insert into test_myisam values(2,'aa');

Query OK, 1 row affected (0.00 sec)

 

....

 

master [localhost] {msandbox} (test) > show master status\G

*************************** 1. row ***************************

             File: mysql-bin.000011

         Position: 3120

     Binlog_Do_DB:

 Binlog_Ignore_DB:

Executed_Gtid_Set:

1 row in set (0.00 sec)

 

[root@COS-DEV-MySQL master]# innobackupex --socket=/tmp/mysql_sandbox21489.sock \

>   --user=msandbox \

>   --password=msandbox \

>   --no-timestamp \

>   --slave-info \

> /data/full2

170305 22:07:42 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!".

 

MySQL binlog position: filename 'mysql-bin.000011', position '3120'

170305 22:07:49 [00] Writing backup-my.cnf

170305 22:07:49 [00]        ...done

170305 22:07:49 [00] Writing xtrabackup_info

170305 22:07:49 [00]        ...done

xtrabackup: Transaction log of lsn (2142987473) to (2142987473) was copied.

# 我们发现myisam表由于是非事务型存储引擎,中间的事务日志没有产生,因此没有产生redo拷贝

# 此时只有xtrabackup_binlog_info文件生成,没有xtrabackup_binlog_pos_innodb

[root@COS-DEV-MySQL full2]# cat xtrabackup_binlog_info

mysql-bin.000011    3120

[root@COS-DEV-MySQL full2]# innobackupex --apply-log .

....

InnoDB: Starting shutdown...

InnoDB: Shutdown completed; log sequence number 2142990651

170305 22:08:39 completed OK!

[root@COS-DEV-MySQL full2]# cat xtrabackup_binlog_pos_innodb

mysql-bin.000011    2140

[root@COS-DEV-MySQL full2]# cat xtrabackup_binlog_info

mysql-bin.000011    3120

# 我们发现xtrabackup_binlog_pos_innodb中的位置和xtrabackup_binlog_info不一样,因为xtrabackup_binlog_pos_innodb只是记录innodbxtradbbinlog位点,myisam产生的binlog不会计算在内,因此xtrabackup_binlog_pos_innodb的信息和第一次全备的xtrabackup_binlog_info文件中的信息是一致的。

 

所以如果存在多种存储引擎,需要利用xtrabackup_binlog_info 来确定备份的完成那个时刻的binlog位点。

·  在apply log完成之后,我们发现xtrabackup_checkpoints 中的backup_type从 full-backuped变成了 full-prepared

[root@COS-DEV-MySQL full]# cat xtrabackup_checkpoints

backup_type = full-prepared

from_lsn = 0

to_lsn = 2142987473

last_lsn = 2142987473

compact = 0

recover_binlog_info = 0

·  我们再来看下MySQL从库备份出现的文件xtrabackup_slave_info 又是有什么用途呢?

slave1 [localhost] {msandbox} ((none)) > show slave status\G

*************************** 1. row ***************************

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 127.0.0.1

                  Master_User: rsandbox

                  Master_Port: 21489

                Connect_Retry: 60

              Master_Log_File: mysql-bin.000011

          Read_Master_Log_Pos: 3120

# slave1 和主库是实时同步,位点为11binlog3120位点。

slave1 [localhost] {msandbox} ((none)) > show master status\G

*************************** 1. row ***************************

             File: mysql-bin.000007

         Position: 120

# 此时的slave binlog位点

·  针对slave1 进行全备,我们主要查看xtrabackup_slave_info 信息,其他文件和从主库全备基本一致。

[root@COS-DEV-MySQL full_slave]# cat xtrabackup_binlog_info

mysql-bin.000007    120

# xtrabackup_binlog_info 记录的是从库的binlog位点。

[root@COS-DEV-MySQL full_slave]#

[root@COS-DEV-MySQL full_slave]# cat xtrabackup_slave_info

CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000011', MASTER_LOG_POS=3120

# 发现xtrabackup_slave_info记录的是主库的binlog信息,该信息可以用来通过从库创建一个从库,然后指向主库!非常棒!该信息需要在备份的时候加上  --slave-info .

·  对了,还差一个文件没有介绍,那就是xtrabackup_logfile,这个文件相当的重要,这个文件记录的是从备份开始到备份结束所有的redo日志,xtrabackup在apply log的时候需要读取该文件,进行redo前滚。

发布了421 篇原创文章 · 获赞 67 · 访问量 39万+

猜你喜欢

转载自blog.csdn.net/w892824196/article/details/103946073
今日推荐