CENTOS6.6下mysql5.7.11的percona-xtrabackup安裝與備份


本文來自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn

Xtrabackup有兩個主要的工具:xtrabackup、innobackupex
(1)xtrabackup只能備份InnoDB和XtraDB兩種數據表,而不能備份MyISAM數據表
(2)innobackupex-1.5.1則封裝了xtrabackup,是一個腳本封裝,所以能同時備份處理innodb和myisam,但在處理myisam時需要加一個讀鎖

安裝percona-xtrabackup

1、安裝依賴包

yum -y  install cmake gcc gcc-c++ libaio libaio-devel automake autoconf  bison libtool ncurses-devel libgcrypt-devel libev-devel libcurl*  
yum -y install perl-Time-HiRes  
yum -y install perl-DBI  
yum -y install perl-DBD-MySQL  
yum install perl-IO-Socket-SSL  

cd /usr/local
wget http://dist.schmorp.de/libev/libev-4.22.tar.gz
tar xvzf libev-4.22.tar.gz
cd libev-4.22
./configure 
make
make install

2、編譯安裝percona-xtrabackup

此處要注意xtrabackup的版本支持mysql哪個版本,可以到xtrabackup官網查看文檔,我此處的版本支持mysql5.7.11

cd /usr/local
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.2/source/tarball/percona-xtrabackup-2.4.2.tar.gz  
tar -zxvf percona-xtrabackup-2.2.13.tar.gz
cd percona-xtrabackup-2.2.13/
cmake -DBUILD_CONFIG=xtrabackup_release -DWITH_MAN_PAGES=OFF && make -j4 --DINSTALL_LAYOUT=/usr/local/xtrabackup
make
make install  

這樣是默認裝到/usr/local/xtrabackup目錄下的。

3、加入環境變量

# vi  ~/.bash_profile
export PATH=/usr/local/xtrabackup/bin:$PATH  
# source ~/.bash_profile

4、備份測試

  • 在Master和Slave上安裝xtrabackup:

注意:此處備份是根據主從環境來的,[參考來源]http://heylinux.com/archives/3777.html

  • 在Master和Slave上創建一個用於備份的用戶backup-user:
mysql> CREATE USER 'backup-user'@'localhost' IDENTIFIED BY 'backup-pass';
mysql> GRANT SUPER, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'backup-user'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> EXIT;
  • 在Master上備份
# 常規方式
[root@idc1-master1 ~]# innobackupex --defaults-file=/etc/my_3308.cnf --user=backup-user --password=backup-pass --no-lock --use-memory=4G /mysql-backup/3308

[root@idc1-master1 ~]# ls -rt1 /mysql-backup/3308/ | tail -n 1
2015-10-26_03-00-10

# 壓縮打包方式  
[root@idc1-master1 ~]# innobackupex --defaults-file=/etc/my_3308.cnf --user=backup-user --password=backup-pass --no-lock --use-memory=4G --compress --compress-threads=8 --stream=xbstream --parallel=4 /mysql-backup/3308 > /mysql-backup/3308/$(date +%Y-%m-%d_%H-%M-%S).xbstream

[root@idc1-master1 ~]# ls -rt1 /mysql-backup/3308/ | tail -n 1
2015-10-26_03-05-05.xbstream
  1. 在Slave上備份
# 常規方式  
[root@idc1-slave1 ~]# innobackupex --defaults-file=/etc/my_3308.cnf --user=backup-user --password=backup-pass --no-lock --use-memory=4G --slave-info --safe-slave-backup /mysql-backup/3308
    
[root@idc1-slave1 ~]# ls -rt1 /mysql-backup/3308/ | tail -n 1
2015-10-26_03-11-03
    
# 壓縮打包方式  
[root@idc1-slave1 ~]# innobackupex --defaults-file=/etc/my_3308.cnf --user=backup-user --password=backup-pass --no-lock --use-memory=4G --slave-info --safe-slave-backup --compress --compress-threads=8 --stream=xbstream --parallel=4 /mysql-backup/3308 > /mysql-backup/3308/$(date +%Y-%m-%d_%H-%M-%S).xbstream
    
[root@idc1-slave1 ~]# ls -rt1 /mysql-backup/3308/ | tail -n 1
2015-10-26_03-15-03.xbstream
  1. 在Master上恢復
[root@idc1-master1 ~]# /etc/init.d/mysql_3308 stop
    
[root@idc1-master1 ~]# mv /opt/mysql_3308/data /opt/mysql_3308/data_broken
[root@idc1-master1 ~]# mkdir /opt/mysql_3308/data
    
# 常規方式
[root@idc1-master1 ~]# innobackupex --apply-log --use-memory=4G /mysql-backup/3308/2015-10-26_03-00-10
[root@idc1-master1 ~]# innobackupex --copy-back --use-memory=4G /mysql-backup/3308/2015-10-26_03-00-10 --defaults-file=/etc/my_3308.cnf
    
# 壓縮打包方式
[root@idc1-master1 ~]# mkdir -p /mysql-backup/3308/2015-10-26_03-05-05
[root@idc1-master1 ~]# xbstream -x < /mysql-backup/3308/2015-10-26_03-05-05.xbstream -C /mysql-backup/3308/2015-10-26_03-05-05
[root@idc1-master1 ~]# innobackupex --decompress --parallel=4 /mysql-backup/3308/2015-10-26_03-05-05
[root@idc1-master1 ~]# find /mysql-backup/3308/2015-10-26_03-05-05 -name "*.qp" -delete
[root@idc1-master1 ~]# innobackupex --apply-log --use-memory=4G /mysql-backup/3308/2015-10-26_03-05-05
[root@idc1-master1 ~]# innobackupex --copy-back --use-memory=4G /mysql-backup/3308/2015-10-26_03-05-05 --defaults-file=/etc/my_3308.cnf
    
[root@idc1-master1 ~]# chown -R mysql:mysql /opt/mysql_3308/data
    
[root@idc1-master1 ~]# /etc/init.d/mysql_3308 start
 
  1. 在Slave上恢復
[root@idc1-slave1 ~]# /etc/init.d/mysql_3308 stop

[root@idc1-slave1 ~]# mv /opt/mysql_3308/data /opt/mysql_3308/data_broken
[root@idc1-slave1 ~]# mkdir /opt/mysql_3308/data

# 常規方式
[root@idc1-slave1 ~]# innobackupex --apply-log --use-memory=4G /mysql-backup/3308/2015-10-26_03-11-03
[root@idc1-slave1 ~]# innobackupex --copy-back --use-memory=4G /mysql-backup/3308/2015-10-26_03-11-03 --defaults-file=/etc/my_3308.cnf

# 壓縮打包方式
[root@idc1-slave1 ~]# mkdir -p /mysql-backup/3308/2015-10-26_03-15-03
[root@idc1-slave1 ~]# xbstream -x < /mysql-backup/3308/2015-10-26_03-15-03.xbstream -C /mysql-backup/3308/2015-10-26_03-15-03
[root@idc1-slave1 ~]# innobackupex --decompress --parallel=4 /mysql-backup/3308/2015-10-26_03-15-03
[root@idc1-slave1 ~]# find /mysql-backup/3308/2015-10-26_03-15-03 -name "*.qp" -delete
[root@idc1-slave1 ~]# innobackupex --apply-log --use-memory=4G /mysql-backup/3308/2015-10-26_03-15-03
[root@idc1-slave1 ~]# innobackupex --copy-back --use-memory=4G /mysql-backup/3308/2015-10-26_03-15-03 --defaults-file=/etc/my_3308.cnf

[root@idc1-slave1 ~]# chown -R mysql:mysql /opt/mysql_3308/data

[root@idc1-slave1 ~]# /etc/init.d/mysql_3308 start

[root@idc1-slave1 ~]# cd /opt/mysql_3308/data
# 從Master的備份中恢復時查看 xtrabackup_slave_info
[root@idc1-slave1 data]# cat xtrabackup_binlog_pos_innodb
./bin-log-mysqld.000222  222333

# 從Slave的備份中恢復時查看 xtrabackup_slave_info
[root@idc1-slave1 data]# cat xtrabackup_slave_info
CHANGE MASTER TO MASTER_LOG_FILE='bin-log-mysqld.000222', MASTER_LOG_POS=222333

[root@idc1-slave1 data]# mysql_3308 -uroot -p
mysql> change master to
master_host='idc1-master1',
master_port=3308,
master_user='backup-user',
master_password='backup-pass',
master_log_file='bin-log-mysqld.000222',
master_log_pos=222333;

mysql> start slave;
mysql> show slave status\G;
mysql> exit;
 
  1. 增量備份與恢復

增量備份的原理是,基於一個現有的完整備份,針對InnoDB-based表僅備份增量的部分,針對MyISAM表則仍然保持全量備份。
備份環境:
在Slave服務器上進行
備份策略:
每天1次完整備份 + 每天2次增量備份
具體步驟:

7.1 增量備份
7.1.1 准備完整備份(壓縮但不打包方式):

[root@idc1-slave1 ~]# innobackupex --defaults-file=/etc/my_3308.cnf --user=backup-user --password=backup-pass --no-lock --use-memory=4G --slave-info --safe-slave-backup --compress --compress-threads=8 /mysql-backup/3308

[root@idc1-slave1 ~]# ls -rt1 /mysql-backup/3308/ | tail -n 1
2015-10-26_06-48-33

[root@idc1-slave1 ~]# cat /mysql-backup/3308/2015-10-26_06-48-33/xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 1631145
last_lsn = 1631145
compact = 0
recover_binlog_info = 0
 

7.1.2 進行第1次增量備份(壓縮但不打包方式):

[root@idc1-slave1 ~]# innobackupex --defaults-file=/etc/my_3308.cnf --user=backup-user --password=backup-pass --no-lock --use-memory=4G --slave-info --safe-slave-backup --compress --compress-threads=8 --incremental /mysql-backup/3308 --incremental-basedir=/mysql-backup/3308/2015-10-26_06-48-33

[root@idc1-slave1 ~]# ls -rt1 /mysql-backup/3308/ | tail -n 1
2015-10-26_06-55-12

[root@idc1-slave1 ~]# cat /mysql-backup/3308/2015-10-26_06-55-12/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 1631145
to_lsn = 1635418
last_lsn = 1635418
compact = 0
recover_binlog_info = 0
 

7.1.3 進行第2次增量備份(壓縮但不打包方式):

[root@idc1-slave1 ~]# innobackupex --defaults-file=/etc/my_3308.cnf --user=backup-user --password=backup-pass --no-lock --use-memory=4G --slave-info --safe-slave-backup --compress --compress-threads=8 --incremental /mysql-backup/3308 --incremental-basedir=/mysql-backup/3308/2015-10-26_06-55-12

[root@idc1-slave1 ~]# ls -rt1 /mysql-backup/3308/ | tail -n 1
2015-10-26_06-59-49

[root@idc1-slave1 ~]# cat /mysql-backup/3308/2015-10-26_06-59-49/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 1635418
to_lsn = 1639678
last_lsn = 1639678
compact = 0
recover_binlog_info = 0

 

7.2 增量恢復:
7.2.1 取回完整備份(必須加參數 –redo-only)

[root@idc1-slave1 ~]# innobackupex --decompress --parallel=4 /mysql-backup/3308/2015-10-26_06-48-33
[root@idc1-slave1 ~]# find /mysql-backup/3308/2015-10-26_06-48-33 -name "*.qp" -delete
[root@idc1-slave1 ~]# innobackupex --apply-log --redo-only --use-memory=4G /mysql-backup/3308/2015-10-26_06-48-33

7.2.2 合並第1個增量(必須加參數 –redo-only)

[root@idc1-slave1 ~]# innobackupex --decompress --parallel=4 /mysql-backup/3308/2015-10-26_06-55-12
[root@idc1-slave1 ~]# find /mysql-backup/3308/2015-10-26_06-55-12 -name "*.qp" -delete
[root@idc1-slave1 ~]# innobackupex --apply-log --redo-only --use-memory=4G /mysql-backup/3308/2015-10-26_06-48-33 --incremental-dir=/mysql-backup/3308/2015-10-26_06-55-12

 

7.2.3 合並第2個增量(合並最后一個增量備份時不加 –redo-only)

[root@idc1-slave1 ~]# innobackupex --decompress --parallel=4 /mysql-backup/3308/2015-10-26_06-59-49
[root@idc1-slave1 ~]# find /mysql-backup/3308/2015-10-26_06-59-49 -name "*.qp" -delete
[root@idc1-slave1 ~]# innobackupex --apply-log --use-memory=4G /mysql-backup/3308/2015-10-26_06-48-33 --incremental-dir=/mysql-backup/3308/2015-10-26_06-59-49
 

7.2.4 准備完整備份(定稿完整備份時不加 –redo-only)

[root@idc1-slave1 ~]# innobackupex --apply-log --use-memory=4G /mysql-backup/3308/2015-10-26_06-48-33

 

7.2.5 恢復完整備份(按照以上 常規方式,執行從–copy-back開始及之后的步驟)


免責聲明!

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



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