xtrabackup


 

01. 基礎知識

   如果備份的是從庫,且備份的時候,主從延遲特別大,那么備份的時間點就會不准確,因此真正的備份的時間點一般是延遲的。

 

(1)innobackupex:是將xtrabackup進行封裝的perl腳本,提供了備份myisam表的能力,因此一般都用該腳本進行熱備數據。

(2)xtrabackup:只能備份innoDB和xtraDB兩種數據引擎的表,而不能備份MyISAM數據表,因此一般不用,作為innobackupex的一部分。

(3)innobackupex工具使用:

         --defaults-file=/home/work/mysql_3307/etc/my.cnf

         --host=10.10.10.10

         --port=3307

         --user=mysqlbackup

         --password=123456

         --slave-info

         --defaults-file=/home/work/mysql_3307/etc/my.cnf

         --defaults-file=/home/work/mysql_3307/etc/my.cnf

         /home/data/hostname_22_3307/2020-04-15_00-06-30

 

innobackupex    --defaults-file=/home/work/mysql_3307/etc/my.cnf --user=mysqlbackup --password=... --host=127.0.0.1 --slave-info --ibbackup=xtrabackup --stream=xbstream --tmpdir=/home/work/tmp_xbm_33

(4) innobackupex --apply-log  /home/data/hostname_22_3307/2020-04-15_00-06-30

    一般情況下,在備份完成后,數據尚且不能用於恢復操作,因為備份的數據中可能會包含尚未提交的事務或已經提交但尚未同步至數據文件中的事務。
因此,此時數據文件仍處理不一致狀態。此選項作用是通過回滾未提交的事務及同步已經提交的事務至數據文件使數據文件處於一致性狀態。
在apply log完成之后,我們發現xtrabackup_checkpoints 中的backup_type從 full-backuped變成了 full-prepared

 

02. 備份原理

 

03. 文件介紹

(1)sys,mysql,performance_schema,用戶數據庫等:數據庫的拷貝
ib_buffer_pool
ibdata1:備份共享表空間
undo001,undo002,undo002:備份undo log
################################
xtrabackup_logfile:備份redo log
這個文件相當的重要,這個文件記錄的是從備份開始到備份結束所有的redo日志;
xtrabackup在apply log的時候需要讀取該文件,進行redo前滾。
################################
xtrabackup_binlog_info:

文件記錄的是備份完成的那個時間點的binlog位點。如果備份的是主庫數據,則change位置點為xtrabackup_binlog_info
若未開啟gtid,則內容如下:
mysql-bin.000332    28370863
若開啟gtid,則內容如下:
mysql-bin.000009    788080016    b172206b-7035-11ea-8f2b-e4434bcaccee:1-333346

 


############################
xtrabackup_binlog_pos_innodb:
只是記錄innodb和xtradb的binlog位點,myisam產生的binlog不會計算在內;
因此xtrabackup_binlog_pos_innodb的信息和第一次全備的xtrabackup_binlog_info文件中的信息是一致的。
若有非innodb存儲引擎的事務,則binlog位點可能與xtrabackup_binlog_info不同,一般兩者相同:
mysql-bin.000332 28370863

 



##########################
xtrabackup_slave_info:
要生成該文件,需要在備份時添加參數--slave-info。一般情況下都是備份的從庫數據,xtrabackup_slave_info記錄了主庫復制的位置點。
    若未開啟gtid,則記錄完成備份時,主庫的點位,內容如下:
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.002406', MASTER_LOG_POS=515291508
    若開啟了gtid,則記錄完成備份時,主庫的gtid_purged,內容如下:
SET GLOBAL gtid_purged='b172206b-7035-11ea-8f2b-e4434bcaccee:1-333346';
CHANGE MASTER TO MASTER_AUTO_POSITION=1

 


##########################
xtrabackup_info:
backup_type = log-applied
from_lsn = 0
to_lsn = 3021212303418
last_lsn = 3022371220298
compact = 0
recover_binlog_info = 0
[root@c3-dba-storage34 2020-04-15_00-06-30]# cat xtrabackup_info
uuid = e33f1cf9-7e85-11ea-ba16-90e2bad1cd48
name = 
tool_name = innobackupex
tool_command = --defaults-file=/home/work/mysql/etc/my.cnf --user=mysqlbackup --password=... --host=127.0.0.1 --slave-info --ibbackup=xtrabackup --stream=xbstream --tmpdir=/home/work/tmp_xbm_3306/2020-04-15_00-06-36 .
tool_version = 2.4.7
ibbackup_version = 2.4.7
server_version = 5.7.25-28-log
start_time = 2020-04-15 00:06:36
end_time = 2020-04-15 03:26:49
lock_time = 0
binlog_pos = filename 'mysql-bin.000332', position '28370863'
innodb_from_lsn = 0
innodb_to_lsn = 3021212303418
partial = N
incremental = N
format = xbstream
compact = N
compressed = N
encrypted = N

 


xtrabackup_checkpoints:
提供的信息有:
備份狀態:
如果是全量備份,backup_type = full-backuped
如果是增量備份,backup_type = incremental。備份集的狀態在apply log后會改變,后面會說明
備份起始lsn:



內容如下:
backup_type = log-applied
from_lsn = 0
to_lsn = 3021212303418
last_lsn = 3022371220298
compact = 0
recover_binlog_info = 0

 


解釋如下:
# from_lsn = 0由於是全量備份,所以數據是從LSN=0開始的;


backup-my.cnf:

# This MySQL options file was generated by innobackupex.

# The MySQL server
[mysqld]
innodb_checksum_algorithm=crc32
innodb_log_checksum_algorithm=strict_crc32
innodb_data_file_path=ibdata1:100M:autoextend
innodb_log_files_in_group=3
innodb_log_file_size=4294967296
innodb_fast_checksum=false
innodb_page_size=16384
innodb_log_block_size=512
innodb_undo_directory=./
innodb_undo_tablespaces=0
server_id=177093683

redo_log_version=1

 

 
        
1、備份到本地目錄:/home/work/tmp/backup/
xtrabackup  --backup  --target-dir=/home/work/tmp/backup/  --user=mysqlbackup --password=123456  --host=127.0.0.1 --port=3306   --slave-info

2、應用本地目錄/home/work/tmp/backup/中的備份日志,確保數據一致,提交完成的事務,回滾未完成的事務。
xtrabackup --prepare --target-dir=/home/work/tmp/backup/

 







免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM