Xtrabackup的安裝與使用


Xtrabackup的安裝與使用

1. XtraBackup 簡介

  XtraBackup(PXB) 工具是 Percona 公司用 perl 語言開發的一個用於 MySQL 數據庫物理熱備的備份工具,支持 MySQl(Oracle)、Percona Server 和 MariaDB,並且全部開源,真可謂是業界良心。阿里的 RDS MySQL 物理備份就是基於這個工具做的。由於是采取物理拷貝的方式來做的備份,所以速度非常快,幾十G數據幾分鍾就搞定了,而它巧妙的利用了mysql 特性做到了在線熱備份,不用像以前做物理備份那樣必須關閉數據庫才行,直接在線就能完成整庫或者是部分庫的全量備份和增量備份。新版本的xtrabackup改成了cmake安裝,和以前有點不一樣。

版本說明:2.3.3之后不備份死鎖,如果數據庫是mysql 5.7之后的必須要裝2.4.4才可以用,當然了, 會向下兼容的。

工具集:軟件包安裝后,有以下可執行文件

bin/
├── innobackupex -> xtrabackup
├── xbcloud
├── xbcloud_osenv
├── xbcrypt
├── xbstream
└── xtrabackup

其中最主要的是 innobackupex 和 xtrabackup,前者是一個 perl 腳本,后者是 C/C++ 編譯的二進制。Percona 在2.3 版本用C重寫了 innobackupex ,innobackupex 功能全部集成到 xtrabackup 里面,只有一個 binary,另外為了使用上的兼容考慮,innobackupex 作為 xtrabackup 的一個軟鏈接。對於二次開發來說,2.3 擺脫了之前2個進程協作的負擔,架構上明顯要好於之前版本。(Percona XtraBackup 2.3 發布之后,推薦的備份方法是使用 xtrabackup 腳本。 )

xtrabackup 是用來備份 InnoDB 表的,不能備份非 InnoDB 表,和 mysqld server 沒有交互;innobackupex 腳本用來備份非 InnoDB 表,同時會調用 xtrabackup 命令來備份 InnoDB 表,還會和 mysqld server 發送命令進行交互,如加讀鎖(FTWRL)、獲取位點(SHOW SLAVE STATUS)等。簡單來說,innobackupex 在 xtrabackup 之上做了一層封裝。

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

另外幾個工具相對小眾些,xbcrypt 是加解密備份文件用的;xbstream 類似於tar,是 Percona 自己實現的一種支持並發寫的流文件格式;兩者在備份和解壓時都會用到(如果備份用了加密和並發)。xbcloud 工具的作用是:把全部或部分 xbstream 檔案從雲上下載或上傳到雲。

2.XtraBackup 安裝

官方下載地址:https://www.percona.com/downloads/Percona-XtraBackup-LATEST/

系統及版本選擇

(1)CentOS 6

系統:CentOS 6(Percona 官方建議安裝在 RHEL/CentOS 6.5 及以上的系統)

版本:percona-xtrabackup-24-2.4.6-2.el6.x86_64

下載地址:https://pan.baidu.com/s/1ONBydCld2FoUfRlshMpBNA

(2)CentOS 7

系統:CentOS 7

版本:percona-xtrabackup-24-2.4.10-1.el7.x86_64.rpm

下載地址:https://pan.baidu.com/s/1yEn6bgloHTw30Edn9BUE4Q

二進制安裝/解壓縮安裝(下載:鏈接:https://pan.baidu.com/s/1eCtXkkmaxXVN4mDKjglYew 密碼:nxww

編譯安裝

(3) rpm 安裝

這種安裝方法比較簡單,只需下載相應的rpm安裝包安裝即可(注意根據提示安裝相應的依賴包)。其中需要的 libev.so.4() 安裝包:鏈接: https://pan.baidu.com/s/1PjO7CFwAa7Y1vvSUZk7weg 提取碼: 47ja 

[root@mysql ~]# cd /home/
[root@mysql home]# mkdir xtarback
[root@mysql home]# cd xtarback/
[root@mysql xtarback]# wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.10/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.10-1.el7.x86_64.rpm
--2017-02-23 10:26:14-- https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.10/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.10-1.el7.x86_64.rpm
正在解析主機 www.percona.com (www.percona.com)... 74.121.199.234
正在連接 www.percona.com (www.percona.com)|74.121.199.234|:443... 已連接。
已發出 HTTP 請求,正在等待回應... 200 OK
長度:7647624 (7.3M) [application/x-redhat-package-manager]
正在保存至: “percona-xtrabackup-24-2.4.10-1.el7.x86_64.rpm16% [====================> ] 1,256,542 52.0KB/s 剩余 76s

查看下載完成的包

[root@mysql xtarback]# ls -la
總用量 7476
drwxr-xr-x. 2 root root 57 2月 23 10:28 .
drwxr-xr-x. 5 root root 4096 2月 23 10:24 ..
-rw-r--r--. 1 root root 7647624 2月 17 20:02 percona-xtrabackup-24-2.4.10-1.el7.x86_64.rpm

安裝依賴

rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm
yum install perl-DBI
yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL
yum -y install perl-Digest-MD5

安裝

[root@mysql xtrabackup]#rpm -ivh percona-xtrabackup-24-2.4.10-1.el7.x86_64.rpm

查看安裝的版本:

[root@mysql xtrabackup]#xtrabackup -version
xtrabackup version 2.4.10 based on MySQL server 5.7.19 Linux (x86_64) (revision id: 3198bce)

3.XtraBackup 備份mysql

(1)設置定時任務

# crontab -e
10 0 * * * /home/script/innobackup.sh

(2)備份腳本(事先需要手動做一次全備)

cat /home/script/innobackup.sh
#!/bin/bash /usr/bin/innobackupex --defaults-file=/etc/my.cnf --user=root --password=12345556 --socket=/tmp/mysql.sock --compress /home/backup/mysql >> /home/backup/mysql/backup.$(date +%F).log 2>&1

 4.定時刪除過期備份,只保留一周的備份

(1)設置定時任務

#delete mysql backup
00 00 * * * /home/script/mysql_clear.sh >/dev/null 2>&1

(2)定時刪除腳本

#!/bin/bash
find /home/backup/mysql -mtime +7 -exec rm -rf {} \;

 


免責聲明!

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



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