1. 程式人生 > >mysql大於50G數據庫備份xtarbackup

mysql大於50G數據庫備份xtarbackup

mysql

Xtarbackup
簡介:
mysqldump的備份方式是采用邏輯備份,其最大的缺陷是備份和恢復速度都慢,對於小於50G的數據可以接受,如果數據非常大,可以使用開源的xtarbackup
安裝:
1、采用rpm安裝:
wget http://www.percona.com/downloads/XtraBackup/LATEST/RPM/rhel6/x86_64/percona-xtrabackup-2.1.5-680.rhel6.x86_64.rpm
yum install -y perl-DBD-MySQL perl-DBI perl-Time-HiRes libaio*
rpm -ivh percona-xtrabackup-2.1.5-680.rhel6.x86_64.rpm
2、采用yum安裝:
rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm
yum -y install percona-xtrabackup
3、查看安裝結果:
rpm -qa |grep xtrabackup
rpm -ql percona-xtrabackup-2.1.5-680.rhel6.x86_64

?Xtrabackup中主要包含兩個工具:
xtrabackup:是用於熱備份innodb, xtradb表中數據的工具,不能備份其他類型的表,也不能備份數據表結構;
innobackupex:是將xtrabackup進行封裝的perl腳本,提供了備份myisam表的能力。

使用:
[root@db02 3306]# innobackupex --user=root --password=123456 --socket=/usr/local/mysql/sock/mysql.sock --defaults-file=/etc/my.cnf /tmp/
備註:備份會在備份目錄創建一個當前時間的文件夾存放備份目錄
各文件說明:
(1)xtrabackup_checkpoints ----備份類型(如完全或增量)、備份狀態(如是否已經沒prepare狀態)和LSN(日誌序列號)範圍信息
每個InnoDB頁(通常大小為16K)都會包含一個日誌序列號,即LSN,LSN是整個數據庫系統的系統版本號,每個頁面相關的LSN能夠表名此頁面最近是如何發生改變的。

backup_type = full-backuped
from_lsn = 0
to_lsn = 2097320
last_lsn = 2097320
compact = 0
(2)xtrabackup_binlog_info ----mysql服務器當前正在使用的二進制日誌及備份這一刻為二進制日誌事件的位置
(3)xtrabackup_pos_innodb ----二進制日誌及用於InnoDB或XtraDB表的二進制日誌的當前posistion。
(4)xtrabackup_binary ----備份中用到的xtrabackup的可執行文件
(5)backup-my.cnf ---- 備份命令用到的配置選項信息;
在使用innobackupex命令備份時,還可以使用--no-timestamp選項來阻止命令自動創建一個以時間命名的目錄
innobackupex命令將會創建一個BACKUP-DIR目錄來存儲備份數據

還需要註意,備份數據庫的用戶需要具有相對應的權限,如果要使用一個最小權限的用戶進行備份可以使用以下參數:
mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON . TO ‘bkpuser’@’localhost’;
mysql> FLUSH PRIVILEGES;

準備(prepare)一個完整備份

innobackupex --apply-log /tmp/2016-07-03_21-07-38/
--apply-log 為避免未提交的事務而造成數據的不完整性

查看完全備份時日誌位置;
[root@db02 2016-07-03_21-07-38]# cat xtrabackup_binlog_info
mysql-bin.000029 107

數據還原:
innobackupex --user=root --password=123456 --socket=/usr/local/sock/mysql.sock --defaults-file=/etc/my.cnf --copy-back /tmp/2016-07-03_21-07-38/
#只是在恢復的時候加入了--copy-back
增量備份:
[root@db02 tmp]# innobackupex --user=root --password=123456 --socket=/usr/local/sock/mysql.sock --defaults-file=/etc/my.cnf --incremental /tmp/ --incremental-basedir=/tmp/2016-07-04_00-21-06/
Xtrabackup的“流”及“備份壓縮”功能

Xtrabackup對備份的數據文件支持“流”功能,即可以將備份的數據通過STDOUT傳輸給tar程序進行歸檔,而不是默認的直接保存至某備份目錄中。要使用此功能,僅需要使用--stream選項即可。如:
#innobackupex --stream=tar /backup | gzip > /backup/date +%F_%H-%M-%S.tar.gz
甚至也可以使用類似如下命令將數據備份至其它服務器:
#innobackupex --stream=tar /backup | ssh [email protected] "cat - > /backups/date +%F_%H-%M-%S.tar"
報錯解決:
報錯:Can‘t load ‘/usr/local/lib64/perl5/auto/DBD/mysql/mysql.so‘ for module DBD::mysql: libmysqlclient.so.18: 無法打開共享對象 at /usr/bin/innobackupex line 18
解決:cp /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/

mysql大於50G數據庫備份xtarbackup