本文實(shí)例為大家分享了xtrabackup備份還原的具體代碼,供大家參考,具體內(nèi)容如下
使用rpm包安裝xtrabackup
## 安裝依賴包
yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL rsync
## 安裝libev4包
rpm -ivh libev4-4.15-7.1.x86_64.rpm
## 安裝percona-xtrabackup
rpm -ivh percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm
為備份操作創(chuàng)建MySQL賬戶。
## xtrabackup備份創(chuàng)建備份用戶
CREATE USER 'backuper'@'localhost' IDENTIFIED BY 'backup@123';
GRANT SELECT, RELOAD, PROCESS, SHOW DATABASES, SUPER, LOCK TABLES, REPLICATION CLIENT, SHOW VIEW, EVENT ON *.* TO 'backuper'@'localhost';
FLUSH PRIVILEGES;
創(chuàng)建備份文件目錄
mkdir /export/mysql_backup
對數(shù)據(jù)庫進(jìn)行完整備份,如果在從庫上進(jìn)行備份,請?zhí)砑?-slave_info –safe-slave-backup參數(shù)來獲取復(fù)制主庫的binlog信息。默認(rèn)備份會將當(dāng)前庫的binlog信息保存到xtrabackup_binlog_info文件中,而--slave_info參數(shù)將復(fù)制主庫的binlog信息保存到xtrabackup_slave_info中,如果使用備份來添加復(fù)制,請注意選取正確的binlog信息。
## 進(jìn)行完整備份并壓縮
innobackupex --defaults-file="/export/servers/mysql/etc/my.cnf" \
--host="localhost" \
--port=3358 \
--user="backuper" \
--password="backup@123" \
--socket="/export/data/mysql/tmp/mysql.sock" \
--stream=tar \
"/export/mysql_backup/" | gzip -> "/export/mysql_backup/mysql_full_backup.tar.gz"
注意檢查命令是否成功執(zhí)行,使用tar備份能有效降低備份文件的大小,但是壓縮和加壓縮都會嚴(yán)重消耗cpu資源。
假設(shè)進(jìn)行完上面操作,將備份文件拷貝到新的服務(wù)器上,同樣放到/export/mysql_backup/下
解壓備份文件
## 切換到備份壓縮文件所在目錄
## 強(qiáng)烈建議創(chuàng)建一個空的目錄來存放備份文件,以避免解壓后的文件與其他文件沖突
cd /export/mysql_backup/
##加壓備份
tar xvf mysql_full_backup.tar.gz
使用xtrabackup備份得到的數(shù)據(jù)是備份結(jié)束時間點(diǎn)的數(shù)據(jù),備份期間所產(chǎn)生的事務(wù)日志被保存到備份文件xtrabackup_logfile中,因此需要先對備份文件進(jìn)行日志重做和回滾未提交事務(wù)。--apply-log還會根據(jù)backup-my.cnf來生成新的事務(wù)日志文件。
#使用apply-log參數(shù)來處理事務(wù)日志
innobackupex --apply-log /export/mysql_backup/
由于在還原時要求目標(biāo)目錄為空,而即使新安裝的MySQL服務(wù)器也會存在一些如系統(tǒng)數(shù)據(jù)庫的數(shù)據(jù)文件,因此在將備份還原到MySQL之前,需要將當(dāng)前MySQL數(shù)據(jù)目錄下的文件進(jìn)行情況,為保險期間,建議先使用mv命令來改名。
#備份當(dāng)前MySQL的數(shù)據(jù)目錄
mv /export/data/mysql /export/data/mysql_bak
xtrbackup備份操作只備份數(shù)據(jù)相關(guān)的文件,并不會備份如錯誤日志/慢日志等文件或目錄,而上一步操作mv可能移除掉部分文件目錄,因此需要手動再創(chuàng)建一遍。
## 創(chuàng)建MySQL數(shù)據(jù)目錄
mkdir -p /export/data/mysql/tmp /export/data/mysql/data /export/data/mysql/dumps /export/data/mysql/log
使用move-back參數(shù)來將數(shù)據(jù)移動到MySQL數(shù)據(jù)目錄下,同樣也可以使用--copy-back參數(shù)來只拷貝而不復(fù)制。
innobackupex --defaults-file="/export/servers/mysql/etc/my.cnf" --move-back /export/mysql_backup/
數(shù)據(jù)復(fù)制到MySQL數(shù)據(jù)目錄后,需要修改這些數(shù)據(jù)文件的所有者,保證MySQL服務(wù)有權(quán)限操縱。
#修改MySQL數(shù)據(jù)目錄的權(quán)限
chown -R mysql:mysql /export/data/mysql
最終啟動MySQL服務(wù),檢查數(shù)據(jù)是否正常
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:- 安裝使用Percona XtraBackup來備份恢復(fù)MySQL的教程
- 利用Xtrabackup工具備份及恢復(fù)(MySQL DBA的必備工具)
- mysql xtrabackup 備份恢復(fù)實(shí)現(xiàn)分享
- MySQL使用Xtrabackup備份流程詳解
- xtrabackup備份還原MySQL數(shù)據(jù)庫
- 使用xtrabackup實(shí)現(xiàn)mysql備份
- 編寫腳本令Xtrabackup對MySQL數(shù)據(jù)進(jìn)行備份的教程
- MySQL中使用innobackupex、xtrabackup進(jìn)行大數(shù)據(jù)的備份和還原教程
- MySQL如何使用使用Xtrabackup進(jìn)行備份和恢復(fù)