本文實(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
對(duì)數(shù)據(jù)庫(kù)進(jìn)行完整備份,如果在從庫(kù)上進(jìn)行備份,請(qǐng)?zhí)砑?-slave_info –safe-slave-backup參數(shù)來(lái)獲取復(fù)制主庫(kù)的binlog信息。默認(rèn)備份會(huì)將當(dāng)前庫(kù)的binlog信息保存到xtrabackup_binlog_info文件中,而--slave_info參數(shù)將復(fù)制主庫(kù)的binlog信息保存到xtrabackup_slave_info中,如果使用備份來(lái)添加復(fù)制,請(qǐng)注意選取正確的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備份能有效降低備份文件的大小,但是壓縮和加壓縮都會(huì)嚴(yán)重消耗cpu資源。
假設(shè)進(jìn)行完上面操作,將備份文件拷貝到新的服務(wù)器上,同樣放到/export/mysql_backup/下
解壓備份文件
## 切換到備份壓縮文件所在目錄
## 強(qiáng)烈建議創(chuàng)建一個(gè)空的目錄來(lái)存放備份文件,以避免解壓后的文件與其他文件沖突
cd /export/mysql_backup/
##加壓備份
tar xvf mysql_full_backup.tar.gz
使用xtrabackup備份得到的數(shù)據(jù)是備份結(jié)束時(shí)間點(diǎn)的數(shù)據(jù),備份期間所產(chǎn)生的事務(wù)日志被保存到備份文件xtrabackup_logfile中,因此需要先對(duì)備份文件進(jìn)行日志重做和回滾未提交事務(wù)。--apply-log還會(huì)根據(jù)backup-my.cnf來(lái)生成新的事務(wù)日志文件。
#使用apply-log參數(shù)來(lái)處理事務(wù)日志
innobackupex --apply-log /export/mysql_backup/
由于在還原時(shí)要求目標(biāo)目錄為空,而即使新安裝的MySQL服務(wù)器也會(huì)存在一些如系統(tǒng)數(shù)據(jù)庫(kù)的數(shù)據(jù)文件,因此在將備份還原到MySQL之前,需要將當(dāng)前MySQL數(shù)據(jù)目錄下的文件進(jìn)行情況,為保險(xiǎn)期間,建議先使用mv命令來(lái)改名。
#備份當(dāng)前MySQL的數(shù)據(jù)目錄
mv /export/data/mysql /export/data/mysql_bak
xtrbackup備份操作只備份數(shù)據(jù)相關(guān)的文件,并不會(huì)備份如錯(cuò)誤日志/慢日志等文件或目錄,而上一步操作mv可能移除掉部分文件目錄,因此需要手動(dòng)再創(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ù)來(lái)將數(shù)據(jù)移動(dòng)到MySQL數(shù)據(jù)目錄下,同樣也可以使用--copy-back參數(shù)來(lái)只拷貝而不復(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
最終啟動(dòng)MySQL服務(wù),檢查數(shù)據(jù)是否正常
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:- 安裝使用Percona XtraBackup來(lái)備份恢復(fù)MySQL的教程
- 利用Xtrabackup工具備份及恢復(fù)(MySQL DBA的必備工具)
- mysql xtrabackup 備份恢復(fù)實(shí)現(xiàn)分享
- MySQL使用Xtrabackup備份流程詳解
- xtrabackup備份還原MySQL數(shù)據(jù)庫(kù)
- 使用xtrabackup實(shí)現(xiàn)mysql備份
- 編寫腳本令Xtrabackup對(duì)MySQL數(shù)據(jù)進(jìn)行備份的教程
- MySQL中使用innobackupex、xtrabackup進(jìn)行大數(shù)據(jù)的備份和還原教程
- MySQL如何使用使用Xtrabackup進(jìn)行備份和恢復(fù)