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.rpm” 16% [====================> ] 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 {} \;