偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

MySQL5.7備份恢復工具—Xtrabackup實戰(zhàn)

數(shù)據(jù)庫 MySQL
MySQL 備份通常分為兩種類型:邏輯備份和物理備份。這兩種備份方法各有優(yōu)缺點,適用于不同的場景。

一、基礎知識

1、mysql邏輯備份與物理備份的區(qū)別

MySQL 備份通常分為兩種類型:邏輯備份和物理備份。這兩種備份方法各有優(yōu)缺點,適用于不同的場景。

邏輯備份:

邏輯備份是從數(shù)據(jù)庫中導出數(shù)據(jù)和結(jié)構(gòu)的 SQL 語句。這種備份通常使用 mysqldump 工具來完成。邏輯備份的主要優(yōu)點是它具有較高的可移植性,可以在不同架構(gòu)和版本的 MySQL 服務器上還原。但是,邏輯備份可能需要更長的時間來完成,特別是在處理大型數(shù)據(jù)庫時。

邏輯備份的主要特點:

  1. 生成的備份文件是文本文件,包含 SQL 語句。
  2. 備份和恢復速度相對較慢。
  3. 可移植性好,可以在不同版本和架構(gòu)的 MySQL 服務器上使用。
  4. 可以選擇性地備份和恢復特定的數(shù)據(jù)庫、表或記錄。

物理備份:

物理備份是直接復制數(shù)據(jù)庫的數(shù)據(jù)文件、索引文件和日志文件。這種備份方法通常使用文件系統(tǒng)快照或第三方工具(如 Percona XtraBackup)來完成。物理備份的主要優(yōu)點是它通常更快,因為它不需要轉(zhuǎn)換數(shù)據(jù)。然而,物理備份可能不如邏輯備份可移植,因為它依賴于特定的文件系統(tǒng)和操作系統(tǒng)。

物理備份的主要特點:

  1. 生成的備份文件是二進制文件,包含數(shù)據(jù)庫的實際數(shù)據(jù)文件、索引文件和日志文件。
  2. 備份和恢復速度相對較快。
  3. 可移植性較差,通常只能在相同版本和架構(gòu)的 MySQL 服務器上使用。
  4. 通常需要停止數(shù)據(jù)庫或在讀鎖模式下進行備份,以確保數(shù)據(jù)的一致性。

總之,邏輯備份和物理備份有各自的優(yōu)缺點,根據(jù)不同的應用場景和需求來選擇合適的備份方法。

今天我們分享的主角就是大名鼎鼎的mysql物理備份神器-Percona XtraBackup

二、Percona XtraBackup的安裝

1、環(huán)境描述

  • 操作系統(tǒng)版本:CENTOS 7.9
  • MYSQL數(shù)據(jù)庫版本:5.7
  • 數(shù)據(jù)庫實例端口:3307

2、安裝過程

(1)安裝yum源

yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm

(2)安裝XtraBackup 2.4版本的percona-xtrabackup

安裝mysql對應版本的xtrabackup,不同服務器安裝不同的版本

  • mysql 5.1 – xtrabackup2.0
  • mysql5.6 –xtrabackup 2.2
  • mysql5.7 –xtrabackup2.4
yum install -y percona-xtrabackup-24.x86_64

(3)常用參數(shù)說明

--defaults-file
同xtrabackup的--defaults-file參數(shù)
 
--apply-log
在備份目錄下,通過應用名稱為xtrabackup_logfile的交易日志文件來準備備份。同時,創(chuàng)建新的交易日志。
 
--copy-back
做數(shù)據(jù)恢復時將備份數(shù)據(jù)文件拷貝到MySQL服務器的datadir ;
 
--remote-host=HOSTNAME
通過ssh將備份數(shù)據(jù)存儲到進程服務器上;
 
--stream=[tar]
備 份文件輸出格式, tar時使用tar4ibd , 該文件可在XtarBackup binary文件中獲得.如果備份時有指定--stream=tar, 則tar4ibd文件所處目錄一定要在$PATH中(因為使用的是tar4ibd去壓縮, 在XtraBackup的binary包中可獲得該文件)。
在 使用參數(shù)stream=tar備份的時候,你的xtrabackup_logfile可能會臨時放在/tmp目錄下,如果你備份的時候并發(fā)寫入較大的話 xtrabackup_logfile可能會很大(5G+),很可能會撐滿你的/tmp目錄,可以通過參數(shù)--tmpdir指定目錄來解決這個問題。
 
--tmpdir=DIRECTORY
當有指定--remote-host or --stream時, 事務日志臨時存儲的目錄, 默認采用MySQL配置文件中所指定的臨時目錄tmpdir
 
--redo-only --apply-log組,
強制備份日志時只redo ,跳過rollback。這在做多個增量備份合并時非常必要。
 
--use-memory=#
指定數(shù)據(jù)庫恢復時使用的內(nèi)存大小,需要搭配--apply-log參數(shù)
 
--throttle=IOS
同xtrabackup的--throttle參數(shù)
 
--sleep=是給ibbackup使用的,指定每備份1M數(shù)據(jù),過程停止拷貝多少毫秒,也是為了在備份時盡量減小對正常業(yè)務的影響,具體可以查看ibbackup的手冊 ;
 
--compress[=LEVEL]
對備份數(shù)據(jù)迚行壓縮,僅支持ibbackup,xtrabackup還沒有實現(xiàn);
 
--include=REGEXP
對 xtrabackup參數(shù)--tables的封裝,也支持ibbackup。備份包含的庫表,例如:--include="test.*",意思是要備份 test庫中所有的表。如果需要全備份,則省略這個參數(shù);如果需要備份test庫下的2個表:test1和test2,則寫 成:--include="test.test1|test.test2"。也可以使用通配符,如:--include="test.test*"。
 
--databases=LIST
列出需要備份的databases,如果沒有指定該參數(shù),所有包含MyISAM和InnoDB表的database都會被備份;
 
--uncompress
解壓備份的數(shù)據(jù)文件,支持ibbackup,xtrabackup還沒有實現(xiàn)該功能;
 
--slave-info,
當備份一個作為復制環(huán)境的服務器時,這個參數(shù)會自動將CHANGE MASTER語句寫到備份中,在恢復備份后,不必執(zhí)行CHANGE MASTER語句。
 
--socket=SOCKET
指定mysql.sock所在位置,以便備份進程登錄mysql.
 
--compact
創(chuàng)建一個不包含第二索引(除了主鍵之外的索引)的備份
 
--incremental-basedir
以上一次全量或增量備份的路徑,作為增量備份的基礎。指定這個參數(shù)的同時,應該同樣指定--incremental參數(shù)
 
--incremental
創(chuàng)建增量備份,當指定這個參數(shù)的時候,應該指定--incremental-lsn或--incremental-basedir參數(shù),否則將會備份到--incremental-basedir路徑
 
--incremental-dir=DIRECTORY
指定增量備份的目錄,需要搭配--incremental參數(shù)。
 
--no-timestamp
這個參數(shù)會讓xtrabackup在備份的時候不創(chuàng)建帶有時間格式的子文件夾。當指定了這個參數(shù),備份會直接創(chuàng)建在指定的備份目錄下。
--tables-file=FILE
 
這個參數(shù)會接受一個字符串,這個字符串指定了一個文件,這個文件包含了要備份的表名,格式如database.table,一行一個。
 
--use-memory=# -apply-log 調(diào)節(jié)內(nèi)存使用 
 
 --parallel=  多線程拷貝數(shù)據(jù)文件,使用該參數(shù)要考慮線上的數(shù)據(jù)庫的壓力的問題,如果線程開啟較多,會對硬盤產(chǎn)生交大的壓力。

三、 備份與恢復過程

備份目錄:/backup/mysql

1、全量備份與恢復

全量備份

innobackupex --defaults-file=/etc/my3307.cnf --host=localhost --port=3307 -S /tmp/mysql.sock --user=root --password='Rootasdf2023' --no-timestamp /backup/mysql/full_`date +%Y-%m-%d_%H-%M-%S_%w`

全量恢復

1、刪庫并停止數(shù)據(jù)庫。

service mysqld stop

2、備份myql數(shù)據(jù)目錄。

cp -rpf /data/3307/data /data/3307/data_bak

3、日志包含了redo以及undo的操作,應用過程類似與mysql hang機后的recovery操作,完成后備份處于一致性狀態(tài)。

innobackupex --apply-log  /backup/mysql/full_2023-05-10_14-08-36_3

4、拷貝備份數(shù)據(jù)至my.cnf文件規(guī)定的位置。

innobackupex --defaults-file=/etc/my3307.cnf --copy-back --rsync /backup/mysql/full_2023-05-10_14-08-36_3

5、更改mysql數(shù)據(jù)目錄的權(quán)限為mysql。

chown -R mysql:mysql /data/3307/data

6、啟動數(shù)據(jù)庫,至此數(shù)據(jù)恢復完成

/etc/init.d/mysql3307 start

2、增量備份與恢復

(1)增量備份原理

增量備份有兩種方法:

方法一:針對全量的basedir做增量。

總是針對全量的basedir做增量,這個方式恢復起來就特別簡單了,只需要將最后一次的增量備份合并到全量備份里,就可以恢復了。

第一種方法示例圖: 總是將1月1日的全備作為basedir,所以FROM_LSN號總是5000。

方法二:總是針對上一次增量,做增量備份。

總是針對上一次的增量,做增量備份。這個方式的恢復,就要逐一合并了??偸前焉弦淮危ㄗ罱淮危┑膫浞葑鳛閎asedir

方法二示意圖:

下面介紹的方法是針對第二種的。

(2)增量恢復實驗過程

先來一次全備,兩次增備

#全備
innobackupex --defaults-file=/etc/my3307.cnf --host=localhost --port=3307 -S /tmp/mysql.sock --user=root --password='Rootasdf2023' --no-timestamp /backup/mysql/full_`date +%Y-%m-%d_%H-%M-%S_%w`

#第一次增備
innobackupex --defaults-file=/etc/my3307.cnf --host=localhost --port=3307 -S /tmp/mysql.sock --user=root --password='Rootasdf2023' --no-timestamp --incremental-basedir=/backup/mysql/full_2023-05-10_14-08-36_3 --incremental /backup/mysql/incr_`date +%Y-%m-%d_%H-%M-%S_%w`

#第二次增備
innobackupex --defaults-file=/etc/my3307.cnf --host=localhost --port=3307 -S /tmp/mysql.sock --user=root --password='Rootasdf2023' --no-timestamp --incremental-basedir=/backup/mysql/incr_2023-05-10_14-11-28_3 --incremental /backup/mysql/incr_`date +%Y-%m-%d_%H-%M-%S_%w`

#備份文件查看

[root@mysqlserver mysql]# ls -l /backup/mysql/
total 4
drwxr-x--- 7 root root 4096 May 10 14:15 full_2023-05-10_14-08-36_3
drwxr-x--- 7 root root  318 May 10 14:11 incr_2023-05-10_14-11-28_3
drwxr-x--- 7 root root  318 May 10 14:14 incr_2023-05-10_14-13-17_3
[root@mysqlserver mysql]#

prepare準備過程

這就是增量備份最麻煩的地方,因為總共做了三次備份,所以先做三次prepare

對全備做prepare:

innobackupex --apply-log --redo-only /backup/mysql/full_2023-05-10_14-08-36_3

對第一次增量prepare:

innobackupex --apply-log --redo-only /backup/mysql/full_2023-05-10_14-08-36_3  --incremental-dir=/backup/mysql/incr_2023-05-10_14-11-28_3

對第二次增量prepare

注意,第二次的增備是最后一次,所以不需要加上–redo-only參數(shù):

innobackupex --apply-log  /backup/mysql/full_2023-05-10_14-08-36_3  --incremental-dir=/backup/mysql/incr_2023-05-10_14-13-17_3

最后一步將兩次增量備份和全量做一次合并。

innobackupex --apply-log  /backup/mysql/full_2023-05-10_14-08-36_3

3、恢復數(shù)據(jù)

(1) 停止mysql服務。

/etc/init.d/mysql3307 stop

(2)模擬刪除庫(刪除之前先備份一下目錄 )。

rm -rf /data/3307/data

(3)恢復數(shù)據(jù)。

innobackupex --defaults-file=/etc/my3307.cnf --copy-back --rsync /backup/mysql/full_2023-05-10_14-08-36_3

(4)修改權(quán)限。

chown -R mysql:mysql /data/3307/data

(5)啟動數(shù)據(jù)庫,驗證相關數(shù)據(jù)。

/etc/init.d/mysql3307 start

四、常見問題匯總

問題1:

恢復時報Xtrabackup –copy-back fail Can’t create/write to file ‘./undo_001’。

解決方法:

/etc/my.cnf配置文件中注釋掉如下代碼:

#innodb_undo_directory=.
責任編輯:姜華 來源: 今日頭條
相關推薦

2023-01-11 08:05:23

XtraBackupMySQL備份

2024-09-10 08:00:00

PostgreSQL數(shù)據(jù)庫

2014-01-03 17:43:18

Linux文件恢復文件恢復工具

2015-10-29 13:44:06

MySQLinnodb引擎備份

2013-07-16 10:25:05

災難恢復災難恢復工具

2011-08-15 09:19:22

2015-08-25 09:23:00

2011-01-25 09:26:30

2017-01-18 09:54:38

MySQLJson ColumnGenerated C

2015-10-29 13:52:53

MySQLinnodb引擎備份

2017-01-11 10:09:14

2022-02-17 09:12:55

MySQL數(shù)據(jù)庫設置變量

2011-08-05 12:07:23

2010-12-21 10:49:27

Pwdump

2017-07-06 15:12:48

MySQLgtid特性數(shù)據(jù)恢復

2021-01-07 09:56:43

Windows 功能系統(tǒng)

2009-04-03 10:54:49

Oracle備份恢復

2010-08-13 14:44:26

思科路由器IOS軟件

2020-06-28 09:05:21

工具微軟數(shù)據(jù)

2015-07-16 14:33:36

TB級mysqlxtrabackup備份遷移
點贊
收藏

51CTO技術棧公眾號