準備工作:
從percona網站下載xtrabackup:
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.3.3/binary/tarball/percona-xtrabackup-2.3.3-Linux-x86_64.tar.gz
創建數據庫備份帳號:GRANT SELECT, RELOAD, PROCESS, SUPER, LOCK TABLES, REPLICATION SLAVE, REPLICATION CLIENT, SHOW VIEW ON *.* TO 'db_user'@'localhost' IDENTIFIED BY 'db_password';
使用percona xtrabackup備份工具,以流備份的方式,直接從本地備份到遠程服務器上,當備份數據比較大,而本地磁盤容量又比較小時很有用。
1.備份
#使用tar流備份
/opt/viewer/percona-xtrabackup-2.3.3-Linux-x86_64/bin/innobackupex --defaults-file=$MY_CNF --tmpdir=$TMP_DIR --ibbackup=/opt/viewer/percona-xtrabackup-2.3.3-Linux-x86_64/bin/xtrabackup --user=user --password=password --slave-info --stream tar $DATA_DIR | ssh $REMOTE_HOST "cat - > /vobiledata/tmp/${LOCAL_HOST}.mysqldata.tar.lzma"
#使用xbstream流備份
./innobackupex --defaults-file=/etc/mysql/my.cnf --user=xxx --password=xxx
--stream=xbstream /vobiledata/mysqldata/ |ssh root@$REMOTE_HOST
"cd /root/percona-xtrabackup-2.3.3-Linux-x86_64/bin; cat - |
./xbstream -x -C /vobiledata/mysqldata/" > innobackupex.log 2>&1
#備份指定數據庫
./innobackupex --defaults-file=/etc/mysql/my.cnf --user=xxx --password=xxx --databases="db1 db2" --stream=xbstream /vobiledata/mysqldata/ |ssh root@$REMOTE_HOST
"cd /root/percona-xtrabackup-2.3.3-Linux-x86_64/bin; cat - | ./xbstream -x -C /vobiledata/mysqldata/" > innobackupex.log 2>&1
-- 注意 --databases參數值要用引號括起來
2.恢復
#解壓數據庫備份文件
tar -xi --lzma -f ${db_data_package_file}
#還原數據庫
innobackupex-1.5.1 --user=root --apply-log --defaults-file={mysql_conf_file} --ibbackup=/usr/bin/xtrabackup_51 --use-memory=2046M ${mysql_data_dir}
#將數據文件拷貝到數據目錄,如果解壓的時候文件已經在數據庫目錄下,則可省略此步驟
#innobackupex-1.5.1 --user=root --copy-back --defaults-file=${mysql_conf_file} --use-memory=2046M --no-lock ${mysql_data_dir}
#恢復增量備份示例:
/usr/local/percona-xtrabackup-2.4.4-Linux-x86_64/bin/innobackupex --defaults-file=./my.cnf --apply-log --redo-only ./fullbackup/usr/local/percona-xtrabackup-2.4.4-Linux-x86_64/bin/innobackupex --defaults-file=./my.cnf --apply-log --redo-only ./fullbackup --incremental-dir=/data/db_recovery/hostip/incr1
/usr/local/percona-xtrabackup-2.4.4-Linux-x86_64/bin/innobackupex --defaults-file=./my.cnf --apply-log --redo-only ./fullbackup --incremental-dir=/data/db_recovery/hostip/incr2
/usr/local/percona-xtrabackup-2.4.4-Linux-x86_64/bin/innobackupex --defaults-file=./my.cnf --apply-log --redo-only ./fullbackup --incremental-dir=/data/db_recovery/hostip/incr3
/usr/local/percona-xtrabackup-2.4.4-Linux-x86_64/bin/innobackupex --defaults-file=./my.cnf --apply-log --redo-only ./fullbackup --incremental-dir=/data/db_recovery/hostip/incr4
/usr/local/percona-xtrabackup-2.4.4-Linux-x86_64/bin/innobackupex --defaults-file=./my.cnf --apply-log --redo-only ./fullbackup --incremental-dir=/data/db_recovery/hostip/incr5
/usr/local/percona-xtrabackup-2.4.4-Linux-x86_64/bin/innobackupex --defaults-file=./my.cnf --apply-log ./fullbackup --incremental-dir=/data/db_recovery/hostip/incr6
/usr/local/percona-xtrabackup-2.4.4-Linux-x86_64/bin/innobackupex --defaults-file=./my.cnf --apply-log ./fullbackup
異常處理:
問題1. XtraBackup備份出現"Can't locate Digest/MD5.pm in @INC"
原因分析:安裝Xtrabackup 2.4時,沒有安裝 perl-Digest-MD5組件
解決方法:安裝perl-Digest-MD5後,問題即可解決。
redhat及周邊系統:yum install perl-Digest-MD5
debian及周邊系統:apt-get install perl-Digest-MD5
參考文檔【http://www.cnblogs.com/kerrycode/p/6433075.html】
問題2:
IMPORTANT: Please check that the backup run completes successfully.
At the end of a successful backup run innobackupex
prints "completed OK!".
170511 16:33:48 version_check Connecting to MySQL server with DSN 'dbi:mysql:;mysql_read_default_group=xtrabackup;host=127.0.0.1;mysql_socket=/data/mysql5.6/mysql.sock' as 'db_backup' (using password: YES).
Failed to connect to MySQL server as DBD::mysql module is not installed at - line 1327.
170511 16:33:48 Connecting to MySQL server host: 127.0.0.1, user: db_backup, password: set, port: 0, socket: /data/mysql5.6/mysql.sock
Using server version 5.6.27-log
原因:沒有安裝perl-DBD-MySQL
解決方法:yum install perl-DBD-MySQL