MySQL--使用xtrabackup進行備份還原

轉自:http://www.javashuo.com/article/p-slxycqtf-kh.htmlhtml

使用rpm包安裝xtrabackupmysql

複製代碼sql

安裝依賴包

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
複製代碼app

爲備份操做建立MySQL帳戶。socket

xtrabackup備份建立備份用戶

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;ide

建立備份文件目錄日誌

mkdir /export/mysql_backupserver

對數據庫進行完整備份,若是在從庫上進行備份,請添加--slave_info –safe-slave-backup參數來獲取複製主庫的binlog信息。默認備份會將當前庫的binlog信息保存到xtrabackup_binlog_info文件中,而--slave_info參數將複製主庫的binlog信息保存到xtrabackup_slave_info中,若是使用備份來添加複製,請注意選取正確的binlog信息。

複製代碼

進行完整備份並壓縮

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"
複製代碼
注意檢查命令是否成功執行,使用tar備份能有效下降備份文件的大小,可是壓縮和加壓縮都會嚴重消耗cpu資源。

============================================================

假設進行完上面操做,將備份文件拷貝到新的服務器上,一樣放到/export/mysql_backup/下

解壓備份文件

切換到備份壓縮文件所在目錄

強烈建議建立一個空的目錄來存放備份文件,以免解壓後的文件與其餘文件衝突

cd /export/mysql_backup/

##加壓備份
tar xvf mysql_full_backup.tar.gz

使用xtrabackup備份獲得的數據是備份結束時間點的數據,備份期間所產生的事務日誌被保存到備份文件xtrabackup_logfile中,所以須要先對備份文件進行日誌重作和回滾未提交事務。--apply-log還會根據backup-my.cnf來生成新的事務日誌文件。

#使用apply-log參數來處理事務日誌
innobackupex --apply-log /export/mysql_backup/

因爲在還原時要求目標目錄爲空,而即便新安裝的MySQL服務器也會存在一些如系統數據庫的數據文件,所以在將備份還原到MySQL以前,須要將當前MySQL數據目錄下的文件進行狀況,爲保險期間,建議先使用mv命令來更名。

#備份當前MySQL的數據目錄
mv /export/data/mysql /export/data/mysql_bak

xtrbackup備份操做只備份數據相關的文件,並不會備份如錯誤日誌/慢日誌等文件或目錄,而上一步操做mv可能移除掉部分文件目錄,所以須要手動再建立一遍。

建立MySQL數據目錄

mkdir -p /export/data/mysql/tmp /export/data/mysql/data /export/data/mysql/dumps /export/data/mysql/log

使用move-back參數來將數據移動到MySQL數據目錄下,一樣也可使用--copy-back參數來只拷貝而不復制。

innobackupex --defaults-file="/export/servers/mysql/etc/my.cnf" --move-back /export/mysql_backup/

數據複製到MySQL數據目錄後,須要修改這些數據文件的全部者,保證MySQL服務有權限操縱。

#修改MySQL數據目錄的權限
chown -R mysql:mysql /export/data/mysql

最終啓動MySQL服務,檢查數據是否正常

相關文章
相關標籤/搜索