中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql物理備份工具Xtrabackup安裝配置

發布時間:2020-06-06 18:04:26 來源:網絡 閱讀:3380 作者:茁壯的小草 欄目:MySQL數據庫

mysql物理備份工具Xtrabackup安裝配置




1    Xtrabackup工具介紹

Xtrabackup是一個對InnoDB做物理數據備份的工具,支持在線熱備份(備份時不影響數據讀寫),是商業備份工具InnoDB Hotbackup的一個很好的替代品。

Xtrabackup有兩個主要的工具:xtrabackupinnobackupex

1xtrabackup只能備份InnoDBXtraDB兩種數據表,而不能備份MyISAM數據表。

2innobackupex是用來備份非InnoDB表的,同時會調用xtrabackup命令來備份InnoDB表,還會和mysql server發送命令進行交會,如加讀鎖、獲取位點等。簡單來說,innobackupexxtrabackup之上做了一層封裝。

一般情況下,我們是希望能備份MyISAM表的,雖然我們可能自己不用MyISAM表,但是mysql庫下的系統表示MyISAM的,因此備份基本都通過innobackupex命令進行;另外一個原因是我們可能需要保存位點信息。

2   XtraBackup備份原理

XtraBackup基于InnoDBcrash-recovery功能,它會復制InnoDBdata file,由于不鎖表,復制出來的數據是不一致的,在恢復的時候使用crash-recovery,使得數據恢復一致。

InnoDB維護了一個redo log,又稱為transaction log(事務日志),它包含了InnoDB數據的所有改動情況。當InnoDB啟動的時候,它會先去檢查data filetransaction log,并且會做兩步操作:

XtraBackup在備份的時候,一頁一頁的復制InnoDB的數據,而且不鎖定表,與此同時,XtraBackup還有另外一個線程監視著transaction log,一旦log發生變化,就把變化過的log pages復制走。為什么要著急復制走呢?因為transaction log文件大小有限,寫滿之后,就會從頭再開始寫,所以新數據可能會覆蓋到舊的數據。

prepare過程中,XtraBackup使用復制到的transaction log對備份出來的InnoDB data file進行crash recovery

3  XtraBackup備份特點

(1)備份過程快速、可靠

(2)備份過程不會打斷正在執行的事務

(3)能夠基于壓縮等功能節約磁盤空間和流量

(4)自動實現備份檢驗

(5)還原速度快

4   XtraBackup安裝

本來想用源碼安裝的,但總是不斷報錯,所以只好采用yum方法安裝了

打開官網yum源安裝方法說明

https://www.percona.com/doc/percona-xtrabackup/LATEST/installation/yum_repo.html

按照步驟安裝官網的yum

# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm

# ls /etc/yum.repos.d/

CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo  percona-release.repo

CentOS-Debuginfo.repo  CentOS-Media.repo      epel.repo

安裝xtrabackup

# yum list|grep percona     #測試是否安裝成功官網的yum

# yum install percona-xtrabackup-24

# xtrabackup -version    #查看版本信息

也可以選用其他版本用rpm包方式安裝

https://www.percona.com/downloads/XtraBackup/LATEST/binary/redhat/6/x86_64/

5  XtraBackup常用參數

--user=USER                     指定備份用戶,不指定的話為當前系統用戶

--password=PASSWD              指定備份用戶密碼

--port=PORT                     指定數據庫端口

--defaults-group=GROUP-NAME     在多實例的時候使用

--host=HOST                     指定備份的主機,可以為遠程數據庫服務器

--apply-log    應用 BACKUP-DIR 中的 xtrabackup_logfile 事務日志文件。一般情況下,在備份完成后,數據尚且不能用于恢復操作,因為備份的數據中可能會包含尚未提交的事務或已經提交但尚未同步至數據文件中的事務。因此,此時數據文件仍處于不一致狀態。準備的主要作用正是通過回滾未提交的事務及同步已經提交的事務至數據文件使得數據文件處于一致性狀態。

--apply-log-only    這個選項使在準備備份(prepare)時,只執行重做(redo)階段,這對于增量備份非常重要。

--database                     指定需要備份的數據庫,多個數據庫之間以空格分開

--defaults-file                 指定mysql的配置文件

--copy-back                     將備份數據復制回原始位置

--incremental                   增量備份,后面跟要增量備份的路徑

--incremental-basedir=DIRECTORY 增量備份時使用指向上一次的增量備份所在的目錄

--incremental-dir=DIRECTORY     增量備份還原的時候用來合并增量備份到全量,用來指定全備路徑

--redo-only                     對增量備份進行合并

--rsync      加快本地文件傳輸,適用于non-InnoDB數據庫引擎。不與--stream共用

--safe-slave-backup

--no-timestamp                  生成的備份文件不以時間戳為目錄.

6    XtraBackup備份數據

6.1   全量備份

查看備份之前都有哪些庫

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| binlog             |

| database1          |

| mysql              |

| performance_schema |

| wangning           |

| wordpress          |

+--------------------+

7 rows in set (0.16 sec)

全備份數據存放在/data/backup/full下面,innobackupex會自動創建一個文件夾+以當前系統時間命名的文件夾

# innobackupex --defaults-file=/etc/my.cnf  --user=root --password=abc123 --socket=/tmp/mysql.sock /data/backup/full

# ls /data/backup/full/

2017-12-11_09-10-45

備份好的目錄里各文件說明,×××部分為備份之前建的庫

# ls /data/backup/full/2017-12-11_09-10-45/

backup-my.cnf  ibdata1             wangning                xtrabackup_checkpoints

binlog         mysql               wordpress               xtrabackup_info

database1      performance_schema  xtrabackup_binlog_info  xtrabackup_logfile

(1) backup-my.cnf —— 備份命令用到的配置選項信息;

(2) ibdata1 —— 備份的表空間文件;

(3) xtrabackup_binary —— 備份中用到的xtrabackup的可執行文件;

(4) xtrabackup_binlog_info —— mysql服務器當前正在使用的二進制日志文件及至備份這一刻為止二進制日志事件的位置;

(5) xtrabackup_logfile —— 備份的重做日志文件。

(6) xtrabackup_checkpoints —— 備份類型(如完全或增量)、備份狀態(如是否已經為prepared狀態)和LSN(日志序列號)范圍信息;

# cat /data/backup/full/2017-12-11_09-10-45/xtrabackup_checkpoints

backup_type = full-backuped      #可以看出是全備份

from_lsn = 0                      #記錄了LSN,日志偏移量

to_lsn = 8096126

last_lsn = 8096126

compact = 0

recover_binlog_info = 0

6.2   恢復全備數據

6.2.1  模擬數據庫數據損壞

關閉數據庫并移除數據文件

# service mysqld stop

# mv /application/mysql/data  /opt/   

# mkdir /application/mysql/data    #創建數據目錄

# chown -R mysql.mysql /application/mysql/data

6.2.2   準備完整的數據備份文件

一般情況下,這個/data/backup/full/2017-12-11_09-10-45備份不能用于恢復,因為備份的數據中可能會包含尚未提交的事務或已經提交但尚未同步至數據文件中的事務,此時數據文件處于不一致的狀態。因此,我們現在就是要通過回滾未提交的事務及同步已經提交的事務至數據文件也使得數據文件處于一致性狀態。

# innobackupex --defaults-file=/etc/my.cnf  --user=root --password=abc123 --socket=/tmp/mysql.sock --apply-log /data/backup/full/2017-12-11_09-10-45/

6.2.3 開始恢復數據

# innobackupex --defaults-file=/etc/my.cnf --user=root --password=abc123 --socket=/tmp/mysql.sock  --copy-back /data/backup/full/2017-12-11_09-10-45

171211 10:03:07 innobackupex: Starting the copy-back operation

 

IMPORTANT: Please check that the copy-back run completes successfully.

           At the end of a successful copy-back run innobackupex

           prints "completed OK!".

 

innobackupex version 2.4.9 based on MySQL server 5.7.13 Linux (x86_64) (revision id: a467167cdd4)

Error: datadir must be specified.

當執行上述命令出現報錯時,是因為my.cnf文件里沒有指定datadir目錄

解決方法:

[mysqld]

datadir = /application/mysql/data

啟動mysql出現報錯

# service mysqld start                                                    Starting MySQL. ERROR! The server quit without updating PID file (/application/mysql/data/db01.pid).

data目錄屬主改為mysql即可

# chown -R mysql.mysql /application/mysql/data/

此時mysql的數據已成功恢復了

6.3 增量備份

增量備份是在全量備份的基礎之上進行的

增量備份目錄1/data/backup/increment1

增量備份目錄2/data/backup/increment2

6.3.1    第一次增量備份和恢復

6.3.1.1  第一次增量備份

先全備再增備,全備見6.1

# innobackupex --defaults-file=/etc/my.cnf --user=root --password=abc123 --socket=/tmp/mysql.sock  --incremental /data/backup/increment1 --incremental-basedir=/data/backup/full/2017-12-11_09-10-45

生成一個以系統時間命名的文件夾

# ls /data/backup/increment1/

2017-12-11_10-51-27

--incremental-basedir指的是完全備份所在的目錄,此命令執行結束后,innobackupex命令會在/data/backup/increment1目錄中創建一個新的以時間命名的目錄以存放所有的增量備份數據。另外,在執行過增量備份之后再一次進行增量備份時,其--incremental-basedir應該指向上一次的增量備份所在的目錄。需要注意的是,增量備份僅能應用于InnoDBXtraDB表,對于MyISAM表而言,執行增量備份時其實進行的是完全備份。

6.3.1.2  第一次增備恢復

準備完整的數據恢復文件

全備 --apply-log

# innobackupex --defaults-file=/etc/my.cnf  --user=root --password=abc123 --socket=/tmp/mysql.sock --apply-log  --redo-only /data/backup/full/2017-12-11_09-10-45/

增備1 --apply-log

# innobackupex --defaults-file=/etc/my.cnf  --user=root --password=abc123 --socket=/tmp/mysql.sock --apply-log  --redo-only /data/backup/full/2017-12-11_09-10-45/ --incremental-dir=/data/backup/increment1/2017-12-11_10-51-27

模擬數據庫損壞,詳見6.2.1

開始恢復數據,詳見6.2.3

6.3.2  第二次增量備份和恢復

6.3.2.1  第二次增量備份

第二次增量備份是在第一次增量備份的基礎上進行的

# innobackupex --defaults-file=/etc/my.cnf --user=root --password=abc123 --socket=/tmp/mysql.sock  --incremental /data/backup/increment2 --incremental-basedir=/data/backup/increment1/2017-12-11_10-51-27

生成一個以系統時間命名的文件夾

# ls /data/backup/increment2/

2017-12-11_10-58-55

6.3.2.2  第二次增備恢復

準備完整的數據恢復文件

增備2 --apply-log

# innobackupex --defaults-file=/etc/my.cnf  --user=root --password=abc123 --socket=/tmp/mysql.sock --apply-log  --redo-only /data/backup/full/2017-12-11_09-10-45/ --incremental-dir=/data/backup/increment2/2017-12-11_10-58-55

模擬數據庫損壞,詳見6.2.1

開始恢復數據,詳見6.2.3

6.4    三次以上增量備份

按照6.3.2.2以此類推即可


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁都县| 弥渡县| 巴南区| 石河子市| 尤溪县| 红安县| 罗江县| 洛南县| 攀枝花市| 左贡县| 宣恩县| 洛阳市| 德清县| 涿鹿县| 琼中| 西乡县| 多伦县| 阳城县| 麻城市| 乌拉特前旗| 桑植县| 专栏| 双桥区| 湟中县| 金坛市| 重庆市| 周口市| 怀柔区| 棋牌| 新蔡县| 宁陵县| 鹿邑县| 宁国市| 区。| 黔江区| 当涂县| 郸城县| 华阴市| 资兴市| 安福县| 兴文县|