xtrabackup全量備份和增(差)量備份


xtrabackup全量備份和增(差)量備份

1.xtrabackup全量備份和恢復

1)備份:

	innobackupex --default-file=/PATH/TO/DEFAULT --host=ID ADDR --user=USER_NAME -P PASSWORD /PATH/TO/BACKUP
		--default-file:指定備份時,從那個配置文件中讀取配置信息。默認是使用的默認主配置文件,此時可以不寫
		--host:指定數據庫服務ip地址。默認為localhost,此時可不寫
		--user:指定連接數據庫服務的用戶。默認為root,此時可不寫
		-p:指定用戶密碼
		/PATH/TO/BACKUP:備份文件存放目錄
		注意:
			completed OK!字樣,有它才說明備份成功,innobackupex會把備份過程完整輸出到屏幕。

2)備份目錄文件:

	在你所指定的備份目錄下可以找到以當前時間命令的備份文件
		[root@localhost backup]#ls
		2017-11-18_19-39-17
		[root@localhost backup]#ll 2017-11-18_19-39-17/
		total 18460
		-rw-r----- 1 root root      417 Nov 18 19:39 backup-my.cnf
		-rw-r----- 1 root root 18874368 Nov 18 19:39 ibdata1
		drwxr-x--- 2 root root     4096 Nov 18 19:39 mysql/
		drwxr-x--- 2 root root     4096 Nov 18 19:39 performance_schema/
		drwxr-x--- 2 root root       78 Nov 18 19:39 Syslog/
		-rw-r----- 1 root root       19 Nov 18 19:39 xtrabackup_binlog_info
		-rw-r----- 1 root root      113 Nov 18 19:39 xtrabackup_checkpoints
		-rw-r----- 1 root root      448 Nov 18 19:39 xtrabackup_info
		-rw-r----- 1 root root     2560 Nov 18 19:39 xtrabackup_logfile

	文件介紹:
		backup-my.cnf:
			此文件中包含my.cnf中的設置信息,只包含了備份時需要的信息。
		ibdata1:
			這是個innodb的共享表空間文件
		xtrabackup_binlog_info:
			此文件記錄了備份開始時二進制日志文件的位置(position)
		xtrabackup_checkpoints:
			此文件記錄此次備份屬於那種類型的備份等信息
		xtrabackup_info:
			此文件記錄了備份的概要信息
		xtrabackup_logfile:
			此文件記錄了備份過程中的日志,在對數據進行prepare時需要通過日志將數據還原成一致的可用備份數據

3)查看備份情況:

	cat /backup/2017-11-18_19-39-17/xtrabackup_checkpoints 
	backup_type = full-backuped
	from_lsn = 0
	to_lsn = 1947282
	last_lsn = 1947282
	compact = 0
	recover_binlog_info = 0

4)恢復:

	在需要還原的服務器上安裝xtrabackup。
	把備份的整個目錄拷貝到需要還原的服務器上。
	兩個服務器上的mysql版本需要相同(不相同的沒試過)
	1》prepare:
		innobackupex --apply-log /PATH/TO/BACKUP/dir-quan
		--apply-log:將目錄中的日志應用到備份數據中
		--use-memory=N:默認為100M,若備份數據量大且有足夠的空閑內存時,可以用來指定大小的內存來工作,單位可以使用G,M....。
		注意:
			completed OK!字樣
	2》開始恢復:
		確保服務停止
			systemctl stop  mariadb
		數據目錄必須為空目錄
			rm -rf  /PATH/TO/DATADIR/*
				數據目錄一般為/var/lib/mysql/
		恢復
			innobackupex --datadir=/PATH/TO/DATADIR/ --copy-back  /PATH/TO/BACKUP/dir-quan
		修改權限
			chown -R mysql:  /PATH/TO/DATADIR/ 
		啟動服務
			systemctl start mariadb
		注意:
			實際還原時,最好將對應的配置文件也都還原,也就是把原服務器上的配置拷貝下,確保配置還是原來的。
			上述恢復並沒有進行時間點的還原,實際工作中,需要進行。

2.xtrabackup增(差)量備份及恢復

	全量備份是差量備份與增量備份的基礎。
	差量備份只能針對上一次全量備份。
	增量備份可以針對上一次任務一種備份。
	通俗地來說:所有增量備份加到一起就是差量備份了。
	增量和差量備份都是針對innodb表來說的,對myisam表來說即使執行了增量備份,其實也是全量備份。
	注意:以下常說成增量,大家注意增量和差量間的區別就行。

1)增(差)量備份:

	innobackupex -pPASSWORD --incremental /PATH/TO/BACKUP --incremental-basedir=/PATH/TO/BACKUP/last-backup-file
	--incremental /PATH/TO/BACKUP:表示本次備份是一個增量備份(若針對的上次備份為一個全量備份,這里也可以認為是個差量備份)
	--incremental-basedir=/PATH/TO/BACKUP/last-backup-file:指定本次增量備份針對的是那個備份(可以是上個增量,也可以是上個全量)

2)查看備份情況:

	cat /backup/2017-11-20_03-43-15/xtrabackup_checkpoints 
	backup_type = incremental
	from_lsn = 1947282
	to_lsn = 2073366
	last_lsn = 2073366
	compact = 0
	recover_binlog_info = 0
	cat /backup/2017-11-20_03-51-32/xtrabackup_checkpoints 
	backup_type = incremental
	from_lsn = 2073366
	to_lsn = 2084330
	last_lsn = 2084330
	compact = 0
	recover_binlog_info = 0

3)恢復:

	在需要還原的服務器上安裝xtrabackup。
	把備份的整個目錄拷貝到需要還原的服務器上。
	兩個服務器上的mysql版本需要相同。
	1》prepare:
		對全量備份做准備工作
			innobackupex --apply-log --redo-only  /PATH/TO/BACKUP/dir-quan
			--redo-only:表示進行准備(應用日志)工作時,只進行redo操作,只會重做已提交但未應用的事務,不會回滾未提交的事務。原因是后面還有個增量備份,未提交的可能在后面增量備份時進行提交。
		對增(差)量備份做准備工作
			innobackupex --apply-log [--redo-only] /PATH/TO/BACKUP/dir-quan --incremental-dir= /PATH/TO/BACKUP/dir-zeng
			--redo-only:若只有一個增量備份或是最后那個增量備份文件,那么不需要這個選項,原因同上。也就是說這個選項不能用於最后一個增量備份進行prepare。
			--incremental-dir=:此選項對應的目錄為增量備份文件的目錄
		查看prepare情況
			若不是對最后一個增量備份進行prepare,那么查看全量備份文件中的xtrabackup_checkpoints,可看到log-applied,LSN有所變化,可以和增量備份對比下。
				cat /backup/2017-11-18_19-39-17/xtrabackup_checkpoints 
				backup_type = log-applied
				from_lsn = 0
				to_lsn = 2073366
				last_lsn = 2073366
				compact = 0
				recover_binlog_info = 0
			若是以及對最后一個增量備份進行了prepare,那么查看全量備份文件中的xtrabackup_checkpoints,可看到full-prepared,LSN有所變化
				cat /backup/2017-11-18_19-39-17/xtrabackup_checkpoints 
				backup_type = full-prepared
				from_lsn = 0
				to_lsn = 2084330
				last_lsn = 2084330
				compact = 0
				recover_binlog_info = 0
		注意:
			prepared中可以使用--user-memory=選項來加快速度,前提是你有空閑的內存可用。
			--redo-only這個選項需要多加注意,它不能用於最后那個增量備份的prepared,且必須用於其他增量備份的prepared。原因是后面還有增量備份的,未提交的可能在后面增量備份時進行提交。
			
	2》開始恢復:
		確保服務停止
			systemctl stop  mariadb
		數據目錄必須為空目錄
			rm -rf  /PATH/TO/DATADIR/*
				數據目錄一般為/var/lib/mysql/
		恢復
			innobackupex --datadir=/PATH/TO/DATADIR/ --copy-back  /PATH/TO/BACKUP/dir-quan
		修改權限
			chown -R mysql:  /PATH/TO/DATADIR/ 
		啟動服務並查看是否恢復
			systemctl start mariadb
		注意:
			實際還原時,最好將對應的配置文件也都還原,也就是把原服務器上的配置拷貝下,確保配置還是原來的。
			上述恢復並沒有進行時間點的還原,實際工作中,需要進行。

3.binlog備份和恢復

        上述都沒有說有關時間點的恢復,這個時間點恢復是指當你全量備份或增量備份后,下次備份還沒開始,數據庫發生故障后的備份和恢復。
        這個時間點恢復的備份和恢復是通過binlog實現的。
        備份
                mysqlbinlog -j  245 binlog-log.xxxxxxx > /PATH/TO/BINLOG.sql
        恢復
                登錄數據庫的恢復
                    mysql > soure /PATH/TO/BINLOG.sql
                    or
                    mysql -uroot -p < /PATH/TO/BINLOG.sql


免責聲明!

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



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