XtraBackup基本安裝及innobackupex使用方法,遠程備份
#獲得下載地址
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.3.3/binary/redhat/6/x86_64/percona-xtrabackup-2.3.3-1.el6.x86_64.rpm
yum install percona-xtrabackup-2.3.3-1.el6.x86_64.rpm
#完全備份
innobackupex --user=root --password=123456 /db_bak
#恢復,已復制整個結構的方式恢復數(shù)據(jù)庫,執(zhí)行前必須stop
mysql服務,否則會出現(xiàn)不可預知的錯誤
service mysqld stop
#此時恢復還是會報 /var/lib/mysql/ is not empty,需要刪掉/var/lib/mysql/目錄下所有的文件
cd /var/lib/mysql/
rm -rf /var/lib/mysql/*
#全量恢復
innobackupex --user=root --password=123456 --apply-log /db_bak/2016-01-13_14-21-24/ ---回寫日志這一步 不能少
innobackupex --user=root --password=123456 --copy-back /db_bak/2016-01-13_14-21-24/
#設置權限,恢復之后 發(fā)現(xiàn)權限都是root,需要修改成mysql,到了這一步全量還原算是完成了,記得重啟服務
chown -R mysql:mysql /var/lib/mysql/
service mysqld start
#增量備份
innobackupex --user=root --password=123456 --incremental-basedir=/db_bak/2016-01-13_14-21-24 --incremental /db_bak
#增量備份恢復:
#將所有的增量備份挨個應用到完整備份的數(shù)據(jù)文件中,然后再將完整備份中的數(shù)據(jù)恢復到數(shù)據(jù)庫中
#停止mysql服務(必須)
service mysqld stop
#刪除數(shù)據(jù)文件
cd /var/lib/mysql/
rm -rf /var/lib/mysql/*
#重做全備份的日志
innobackupex --apply-log --redo-only /db_bak/2016-01-13_14-21-24/
#應用第一個增量備份
innobackupex --user=root --password=123456 --apply-log /db_bak/2016-01-13_14-21-24/ --incremental-dir=/db_bak/2016-01-14_11-47-00/
#日志已經寫入全備份中,重做全備份即可
innobackupex --user=root --password=123456 --apply-log /db_bak/2016-01-13_14-21-24/ ---回寫日志這一步 不能少
innobackupex --user=root --password=123456 --copy-back /db_bak/2016-01-13_14-21-24/
#刪除mysql日志,這一步步能少
MySQL目錄下的ib_logfile0和ib_logfile1兩個文件
cd /var/lib/mysql/
cp ib_logfile0 ib_logfile0_bak
cp ib_logfile1 ib_logfile1_bak
rm -rf ib_logfile0
rm -rf ib_logfile1
#設置權限,恢復之后 發(fā)現(xiàn)權限都是root,需要修改成mysql,到了這一步全量還原算是完成了,記得重啟服務
chown -R mysql:mysql /var/lib/mysql/
service mysqld start
#出現(xiàn)數(shù)據(jù)崩潰 或者 如copied innodb but log 不符的情況
需要設置
innodb_force_recovery=6
innodb_purge_thread=0
重啟服務,
然后 在mysqldump導出數(shù)據(jù)庫邏輯備份
在將 設置改成默認
innodb_force_recovery=0
innodb_purge_thread=1
重啟服務 還原數(shù)據(jù)庫即可,
出現(xiàn)MySQL Plugin 'InnoDB' init function returned error.
刪除MySQL目錄下的ib_logfile0和ib_logfile1兩個文件,就可以解決問題了
mysql 會重新生成這兩個日志
#遠程備份,備份到
10.50.85.104,需要安裝sshpass
cd /etc/yum.repos.d
wget http://download.opensuse.org/repositories/home:Strahlex/CentOS_CentOS-6/home:Strahlex.repo
yum install sshpass
#壓縮
innobackupex --user=root --password=123456 --stream=tar ./ | gzip | sshpass -p 'WCcj1Fylr5Hc!@' ssh root@10.50.85.104 "cat - > /var/db_bak/backup.tar.gz"
#備份mysiam表
myisam表的備份則是通過發(fā)出命令flush tables with read lock,然后拷貝myisam的相關表文件
所以此時 只能進行讀 不能進行任何寫操作 這里指針對所有庫