線上熱備份資料庫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 |
+------+