MySQL备份与恢复——基于Xtrabackup物理备份恢复
一、說明
Percona XtraBackup工具提供了一種在執行MySQL數據熱備的方法。Percona XtraBackup是一個免費的、在線的、開源的、完整的數據庫備份解決方案,適用于MySQL和MySQL?的所有版本的Percona服務器。
Percona XtraBackup在事務系統上執行在線非阻塞、緊密壓縮、高度安全的完全備份,在備份時不會影響應用正常使用。
Percona Xtrabackup是一款開源的備份工具,支持Innodb、Mysiam、Xtradb等存儲引擎數據的在線熱備。其特點是備份速度快,對innodb型業務數據幾乎無影響,對Myisam型數據會暫時性的鎖表,且恢復速度更快。通常,Percona Xtrabackup軟件部署有三種常見的方式,分別是rpm包、二進制包以及源碼編譯的方式安裝。建議:使用二進制包方式安裝,方便快捷。
1.1Percona Xtrabackup優勢
快速可靠的數據庫備份(如熱備份、增量備份、bacula備份等)
份期間不間斷的事務處理
節省磁盤空間和網絡帶寬與更好的壓縮
自動備份驗證
更高的正常運行時間,因為更快的恢復時間
于時間點恢復
1.2Percona Xtrabackup軟件下載
1.3Percona Xtrabackup軟件部署
在Linux系統創建/Xtrabackup目錄,上傳介質包percona-xtrabackup-2.3.10-Linux-x86_64.tar.gz
| 1 2 3 | shell>?mkdir?–p?/Xtrabackup sftp>?cd?/Xtrabackup sftp>?put?percona-xtrabackup-2.3.10-Linux-x86_64.tar.gz |
解壓介質包,并設置環境變量
| 1 2 3 4 5 6 7 8 | shell>?cd?/XtraBackup/ shell>?tar?zxvf?percona-xtrabackup-2.3.10-Linux-x86_64.tar.gz shell>?pwd /XtraBackup/percona-xtrabackup-2.3.10-Linux-x86_64/bin shell>?vi?/etc/profile export?PATH=/mysql/app/bin:/XtraBackup/percona-xtrabackup-2.3.10-Linux-x86_64/bin:$PATH shell>?source?/etc/profile shell>?su?- |
至此,Percona Xtrabackup部署完成。
二、常用的參數列表
| 常用參數 | 含義 |
| -u | 賬戶 |
| -p | 密碼 |
| -P | 端口 |
| -S | 套接字 |
| -H | 主機ip |
| --defaults-file | 讀取參數文件位置 |
| --databases | 指定數據庫 |
| --no-timestamp | 不生成時間戳 |
| --slave-info | 獲取主庫端binlog位置 |
| --incremental | 創建增量備份 |
| --incremental-basedir | 指定full backup目錄 |
| --incremental-dir | 增量備份目錄 |
| --redo-only | 增量恢復使用 |
| --apply-log | 應用日志 |
| --copy-back | 拷貝到相應目錄 |
| --move-back | 移動到相應目錄 |
三、備份恢復案例
3.1 全局備份恢復
3.1.1 全局備份
| 1 | innobackupex?--defaults-file=/etc/my.cnf?--socket=/tmp/mysql.sock?-uroot?-pmysql?[--slave-info]??/xtrabak |
3.1.2 日志應用
| 1 | innobackupex?--apply-log?/Xtrabackup/backup/2018-07-28_15-11-12 |
3.1.3全局恢復
| 1 | innobackupex?--defaults-file=/etc/my.cnf?--copy-back?/Xtrabackup/backup/2018-07-28_15-11-12 |
注:使用copy-back參數 datadir目錄必須為空
3.2單表/多表備份恢復
3.2.1單表/多表備份
| 1 | innobackupex?--defaults-file=/usr/my.cnf?--socket=/tmp/mysql.sock??-uroot?-proot?(-–slave-info)?--no-timestamp?--databases="yzw.a?[yzw.b]"?/xtrabak |
注:格式為 庫名.表名,可同時將不同庫下表進行導出
3.2.2日志應用
| 1 | innobackupex?--apply-log?/Xtrabackup/backup/2018-07-28_15-11-12 |
3.2.3單表恢復
1.恢復準備,應用日志從開始點到備份結束點
| 1 | innobackupex?--apply-log?--export?/xtrabackup/backup |
2.生產端獲取建表語句并在目標端創建
3.目標端卸載ibd文件
| 1 | alter?table?test.a?discard?tablespace; |
4.目標端拷貝備份文件至庫目錄
| 1 | cp?a.cfg?a.exp?a.ibd?/var/lib/mysql/data/test/ |
5.目標端修改拷貝文件權限
| 1 | chown?-R?mysql:mysql?/var/lib/mysql/data/test/ |
6.目標端加載表空間.ibd 文件
| 1 | alter?table?test.a?import?tablespace; |
3.3增量備份恢復
3.3.1增量備份
第一次全量備份
| 1 | innobackupex?--defaults-file=/etc/my.cnf?--socket=/tmp/mysql.sock?-uroot?-pmysql?--no-timestamp??/xtrabak/full |
第一次增量備份? ? 注:增量備份必須在全庫備庫基礎上
| 1 | innobackupex?--defaults-file=/etc/my.cnf?-uroot?-pmysql?--socket=/tmp/mysql.sock?--no-timestamp?--incremental?/xtrabak/incre1?--incremental-basedir=/xtrabak/full |
第二次增量備份?
| 1 | innobackupex?--defaults-file=/etc/my.cnf?-uroot?-pmysql?--socket=/tmp/mysql.sock?--no-timestamp?--incremental?/xtrabak/incre2?--incremental-basedir=/xtrabak/incre1 |
注:此時incremental-basedir 指向第一次增量備份目錄
3.3.2日志應用
第一次應用備份文件
| 1 | innobackupex?--apply-log?--redo-only?/xtrabak/full |
第二次應用備份文件
| 1 | innobackupex?--apply-log?--redo-only?/xtrabak/full?--incremental-dir=/xtrabak/incre1 |
第三次應用備份文件
| 1 | innobackupex?--apply-log?/xtrabak/full?--incremental-dir=/xtrabak/incre2 |
注:--redo-only參數 除最后一份增量文件的應用時不需要添加該參數外,其余都要加上該參數!!!
3.3.3全局恢復
| 1 | innobackupex?--defaults-file=/etc/my.cnf?--move-back?/Xtrabackup/backup/2018-07-28_15-11-12 |
注:--move-back參數將備份出來文件直接mv到datadir目錄,建議使用--copy-back
3.4壓縮特性
3.4.1壓縮備份
| 1 | innobackupex?--defaults-file=/etc/my.cnf??--user=root?--password=mysql?--no-timestamp?--compress?--compress-threads=8??/xtrabak |
3.4.2解壓備份文件
解壓decompress?
| 1 | innobackupex?--decompress?/xtrabak |
注:需要提前安裝qpress命令,安裝方式如下
| 1 2 3 | shell>?wget? shell>?tar?xvf?qpress-11-linux-x64.tar shell>?cp?qpress?/usr/bin |
3.4.3日志應用
| 1 | innobackupex?--apply-log?/xtrabak |
3.4.4全局恢復
| 1 | innobackupex?--defaults-file=/etc/my.cnf?--copy-back?/xtrabak |
3.5流特性
3.5.1流備份
| 1 | innobackupex?--defaults-file=/etc/my.cnf?--user=root?--password=mysql?--stream=tar?--no-timestamp??/xtrabak??1>/xtrabak/full.tar |
注:直接生成tar包
3.5.2解壓備份文件
| 1 | tar?-xvf?full.tar |
3.5.3日志應用
| 1 | innobackupex?--apply-log?/xtrabak |
3.5.4全局恢復
| 1 | innobackupex?--defaults-file=/etc/my.cnf?--copy-back?/xtrabak |
總結
以上是生活随笔為你收集整理的MySQL备份与恢复——基于Xtrabackup物理备份恢复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python LAADS+Seleniu
- 下一篇: Oracle RMAN 表空间恢复