mysql通過percona xtrabackup全備和mysql binlog實現基於時間點的資料庫恢復
前一段時間,開發人員不小心在delete的時候忘了加條件,把一張表的全部資料給刪了.
以下是模擬的恢復操作記錄:
--os rhel 5.6 x64
--mysql version 5.6.14
---------------原DB
1.把最新一次的完全備份(innobackupex全備)及備份作業日誌複製到一臺mysql測試機
[root@selectshen full]#scp /u03/mysqlbackup/full/lfcmysql01_2015_02_26* root@123.0.0.101:/u03/
2.把最新一次完全備份後產生的binlog複製到測試機
[root@selectshen full]#scp /u03/mysqldata/lfc01.000014 root@123.0.0.101:/u03/
3.把當前的my.cnf檔案複製到測試機
[root@selectshen full]#scp /usr/my.cnf root@123.0.0.101:/u03/
----------------測試DB
4.解壓完全備份
[root@selectshen u03]# mkdir restore
[root@selectshen u03]# mv lfcmysql01_2015_02_26.tar.gz /u03/restore/
[root@selectshen u03]# cd restore/
[root@selectshen restore]# ls
lfcmysql01_2015_02_26.tar.gz
[root@selectshen restore]# tar -xizf lfcmysql01_2015_02_26.tar.gz
[root@selectshen restore]# ls
backup-my.cnf mysql test xtrabackup_logfile
sdata performance_schema xtrabackup_binary
tsdata ftsdata xtrabackup_binlog_info
ibdata1 lfcmysql01_2015_02_26.tar.gz xtrabackup_checkpoints
[root@selectshen restore]# mv lfcmysql01_2015_02_26.tar.gz ../
4.根據my.cnf移動檔案並開啟資料庫
[root@selectshen restore]# cd ..
[root@selectshen u03]# mv my.cnf /usr/my.cnf
[root@selectshen u03]# cd restore
[root@selectshen restore]# mv * /u02/mysqldata/
[root@selectshen restore]# cd /u02/mysqldata/
[root@selectshen mysqldata]# chown -R mysql.mysql *
[root@selectshen mysqldata]# service mysql start
Starting MySQL................... [ OK ]
5.通過mysqlbinlog binlog把資料庫恢復到刪除前
[root@selectshen restore]# cd /u02/mysqldata/
--檢視全備結束時binlog的position
[root@selectshen mysqldata]# cat xtrabackup_binlog_info
lfc01.000014 449091457
[root@selectshen mysqldata]# cd /u03
--匯出binlog,查詢delete語句的binlog position,此處用-v是因為binlog的格式是row.
定位的時候可根據大概的時間點區間(start-datetime&stop-datetime),縮小查詢的日誌量.
[root@selectshen u03]# mysqlbinlog lfc01.000014 -d ftsdata -v --start-position=449091457>a.txt
--這一步如果有報
ERROR: Error in Log_event::read_log_event(): 'Found invalid event in binary log', data_len: 234, event_type: 546
Could not read entry at offset 5645353:Error in log format or read error
不一定是你的mysqlbinlog版本有問題,也有可能是你指定的binlog的start-position值有問題。
--查詢a.txt中執行delete from tb的position # at 449120400
--執行恢復日誌到資料庫
[root@selectshen u03]# mysqlbinlog lfc01.000014 -d ftsdata --start-position=449091457 --stop-position=449120400 |mysql -uroot -p
6.恢復完成,把要還原的表資料dump出來,然後匯入到原DB.
PS:percona xtrabackup 安裝及自動備份在博文 mysql for linux 安裝中 http://blog.itpub.net/28539951/viewspace-1309652/
以下是模擬的恢復操作記錄:
--os rhel 5.6 x64
--mysql version 5.6.14
---------------原DB
1.把最新一次的完全備份(innobackupex全備)及備份作業日誌複製到一臺mysql測試機
[root@selectshen full]#scp /u03/mysqlbackup/full/lfcmysql01_2015_02_26* root@123.0.0.101:/u03/
2.把最新一次完全備份後產生的binlog複製到測試機
[root@selectshen full]#scp /u03/mysqldata/lfc01.000014 root@123.0.0.101:/u03/
3.把當前的my.cnf檔案複製到測試機
[root@selectshen full]#scp /usr/my.cnf root@123.0.0.101:/u03/
----------------測試DB
4.解壓完全備份
[root@selectshen u03]# mkdir restore
[root@selectshen u03]# mv lfcmysql01_2015_02_26.tar.gz /u03/restore/
[root@selectshen u03]# cd restore/
[root@selectshen restore]# ls
lfcmysql01_2015_02_26.tar.gz
[root@selectshen restore]# tar -xizf lfcmysql01_2015_02_26.tar.gz
[root@selectshen restore]# ls
backup-my.cnf mysql test xtrabackup_logfile
sdata performance_schema xtrabackup_binary
tsdata ftsdata xtrabackup_binlog_info
ibdata1 lfcmysql01_2015_02_26.tar.gz xtrabackup_checkpoints
[root@selectshen restore]# mv lfcmysql01_2015_02_26.tar.gz ../
4.根據my.cnf移動檔案並開啟資料庫
[root@selectshen restore]# cd ..
[root@selectshen u03]# mv my.cnf /usr/my.cnf
[root@selectshen u03]# cd restore
[root@selectshen restore]# mv * /u02/mysqldata/
[root@selectshen restore]# cd /u02/mysqldata/
[root@selectshen mysqldata]# chown -R mysql.mysql *
[root@selectshen mysqldata]# service mysql start
Starting MySQL................... [ OK ]
5.通過mysqlbinlog binlog把資料庫恢復到刪除前
[root@selectshen restore]# cd /u02/mysqldata/
--檢視全備結束時binlog的position
[root@selectshen mysqldata]# cat xtrabackup_binlog_info
lfc01.000014 449091457
[root@selectshen mysqldata]# cd /u03
--匯出binlog,查詢delete語句的binlog position,此處用-v是因為binlog的格式是row.
定位的時候可根據大概的時間點區間(start-datetime&stop-datetime),縮小查詢的日誌量.
[root@selectshen u03]# mysqlbinlog lfc01.000014 -d ftsdata -v --start-position=449091457>a.txt
--這一步如果有報
ERROR: Error in Log_event::read_log_event(): 'Found invalid event in binary log', data_len: 234, event_type: 546
Could not read entry at offset 5645353:Error in log format or read error
不一定是你的mysqlbinlog版本有問題,也有可能是你指定的binlog的start-position值有問題。
--查詢a.txt中執行delete from tb的position # at 449120400
--執行恢復日誌到資料庫
[root@selectshen u03]# mysqlbinlog lfc01.000014 -d ftsdata --start-position=449091457 --stop-position=449120400 |mysql -uroot -p
6.恢復完成,把要還原的表資料dump出來,然後匯入到原DB.
PS:percona xtrabackup 安裝及自動備份在博文 mysql for linux 安裝中 http://blog.itpub.net/28539951/viewspace-1309652/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28539951/viewspace-1442270/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基於percona xtrabackup之innobackupex實現基於時間點資料庫恢復資料庫
- 通過binlog恢復mysql資料庫MySql資料庫
- 通過binlog恢復mysql備份之前的資料MySql
- MySQL 通過 binlog 恢復資料MySql
- Percona XtraBackup 實現全備&增量備份與恢復
- MySQL binlog基於時間點恢復資料失敗是什麼鬼?MySql
- 基於percona xtrabackup 2.4.14的增量備份恢復還原mysql 5.6MySql
- MySQL備份與恢復——基於Xtrabackup物理備份恢復MySql
- MySQL 5.6 xtrabackup 全量和增量的備份和恢復MySql
- 備份與恢復:Polardb資料庫資料基於時間點恢復資料庫
- 如何用Percona XtraBackup進行MySQL從庫的單表備份和恢復MySql
- Xtrabackup實現資料庫備份和災難恢復資料庫
- Percona XtraBackup 2.4 xtrabackup全量、增量備份恢復流程
- MySQL 透過 binlog 恢復資料MySql
- 基於mysql-binlog的恢復實驗MySql
- MySQL運維實戰之備份和恢復(8.1)xtrabackup全量備份MySql運維
- 【Mysql】xtrabackup 備份和恢復測試MySql
- RMAN基於時間點恢復Oracle資料庫Oracle資料庫
- 【Mysql】如何透過binlog恢復資料MySql
- 資料庫資料恢復—無備份,binlog未開啟的Mysql資料庫資料恢復案例資料庫資料恢復MySql
- MySQL通過Binlog恢復刪除的表MySql
- mysql備份和恢復測試(一)--xtrabackupMySql
- Percona XtraBackup 2.4 innobackupex全量、增量備份恢復流程
- Percona Xtrabackup 快速備份 MySQLMySql
- ORACLE資料庫基於時間點的不完全恢復Oracle資料庫
- MySQL資料庫遭到攻擊篡改---使用備份和binlog進行資料恢復MySql資料庫資料恢復
- 使用xtrabackup對mysql進行備份和恢復MySql
- 使用Mysqldump備份和恢復MySQL資料庫MySql資料庫
- 【MySQL】Xtrabackup備份及恢復指令碼MySql指令碼
- mysql的資料庫備份與恢復MySql資料庫
- 配置xtrabackup備份mysql資料庫MySql資料庫
- 使用Xtrabackup備份mysql資料庫MySql資料庫
- Mysql資料庫備份及恢復MySql資料庫
- 【Xtrabackup】Xtrabackup全備、增量備份及恢復示例
- MySQL Percona XtraBackupMySql
- [資料庫] Navicat for MySQL定時備份資料庫及資料恢復資料庫MySql資料恢復
- 實現MySQL資料庫的實時備份MySql資料庫
- MySQL · 物理備份 · Percona XtraBackup 備份原理MySql