天天看點

線上熱備份資料庫之innobackupex 完整備份InnoDB

線上熱備份資料庫innobackupex 完整備份InnoDB

XtraBackup

  • xtrabackup C程式,支援InnoDB/XtraDB
  • innobackupex : 以Perl腳本封裝xtrabackup,還支援MyISAM
個人建議由innobackupex增量/完整 + binlog 基本上可以滿足小型企業需求

percona-xtrabackup安裝部署

  • 依賴庫:libev.so
  • 安裝依賴事件庫 libev
  • 安裝percona-xtrabackup
常用選項 含義
- - host 主機名
- - user 使用者名
- - port 端口号
- - databases 資料庫名
- - password 密碼
- - no-timestamp 不用時間命名備份子目錄

-- databases 不加該參數則為 備份所有資料庫

--databases="庫名 庫名" 指定多個庫

--databases="庫1.表名" 備份單張表

  • 安裝percona-xtrabackup
yum install -y  libev-4.15-1.el6.rf.x86_64.rpm 
yum install -y  percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
           
  • 建立測試環境和資料使用percona-xtrabackup 進行完整備份恢複.
create database lqh1;
create table lqh1.tb1(id int );
insert into lqh1.tb1 values (1),(2),(3);
           
  • 使用innobackupex對資料庫進行完整備份
innobackupex --user root --password Aa123456. /fullbackup  --no-timestamp
           

這裡使用的是本機備份,也可以結合腳本在異機備份,使用參數--host

這裡使用的是不指定資料庫,對資料庫所有庫所有表進行備份,也可以通過參數--databases指定資料庫.

這裡備份目錄/fullbackup可以不用建立,備份程式會自動進行建立

  • 接下來使用完整備份進行恢複
  • 在目标機器上先停止mysql服務.
systemctl stop mysqld
           
  • 将恢複目标機器上的mysql資料目錄(預設安裝路徑/var/lib/mysql)下的檔案打包移走,僅僅留下空目錄即可.
tar -zcvPf /home/mysqldata.tar.gz /var/lib/mysql && rm -rf /var/lib/mysql/*
           
  • 應用innobackupex備份日志,準備進行完整恢複.
innobackupex --apply-log /fullbackup
           
  • 進行innobackupex拷貝資料庫(要求mysqldata 檔案夾為空)
innobackupex --copy-back  /fullbackup
           
  • 将恢複的目錄裡面所有的檔案和檔案夾屬組該成mysql,讓mysql擁有權限操作,因為使用root操作的innobackupex是以目前是root
chown -R mysql:mysql /var/lib/mysql/*
           
  • 重新開機mysql服務,校驗恢複結果
select * from lqh1.tb1;
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
+------+