日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

概述

需求:模擬生產數據庫故障,恢復到故障前一秒

場景:有一份初始備份和后面的binlog,早上9點故障,然后直接拿所有的備份和binlog到另外一臺服務器做恢復,按備份文件和備份文件記錄的位置+最后8.59分的時間之間的binlog恢復。

下面使用MySQLdump+binlog來測試備份與恢復。


一、環境準備

1、備份數據庫(數據庫實例為test)

mysqldump -u root -p test --single_transaction --flush-logs --master-data=2 > /backup/test-`date +"%Y%m%d-%H%M%S"`.sql;
一文看懂mysql數據庫備份恢復演練

 

說明:

當master_data和 single_transaction 同時使用時,先加全局讀鎖,然后設置事務一致性和使用一致性快照開始事務,然后馬上就取消鎖,然后執行導出。過程如下

FLUSH TABLES WITH READ LOCK
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */
SHOW MASTER STATUS -- 這一步就是取出 binlog index and position
UNLOCK TABLES
...dump...

如果需要binlog信息則使用 master_data;

如果不想阻塞同時表是innodb引擎可使用 single_transaction 取得一致性快照(取出的數據是導出開始時刻事務點的狀態)

如果表不支持多版本特性,則只能使用 lock-all-tables 阻塞方式來保證一致性的導出數據。

2、向表中插入數據

show master statusG;
use test;
create table tb1(id int);
insert into tb1 values (10),(20),(30);
select * from tb1;
一文看懂mysql數據庫備份恢復演練

 


二、模擬故障

1、繼續插入數據,在有備份的情況下刪除數據庫,模擬誤操作

use test;
insert into tb1 values (40),(50);
drop database test;
show databases;
一文看懂mysql數據庫備份恢復演練

 

此時查看數據庫發現test庫就沒有了。


三、恢復前準備

1、查看binlog

獲取備份文件和故障前最新的binlog

mysqlbinlog --base64-output=decode-rows -v --start-datetime="2019-09-11 15:00:00" --stop-datetime="2019-09-11 16:00:00" mysql-bin.000005

說明:配置文件使用了binlog_format= row,查看數據庫binlog內容時候就看不到增刪改查的具體語句,都是經過64位編碼轉換后的內容,所以需要加參數--base64-output=decode-rows轉換。

一文看懂mysql數據庫備份恢復演練

 


一文看懂mysql數據庫備份恢復演練

 

2、導出故障前的binlog日志并輸出為sql文件

mysqlbinlog --start-position=154 --stop-position=10189 -d test mysql-bin.000005 > /backup/binlog-`date +"%Y%m%d-%H%M%S"`.sql
一文看懂mysql數據庫備份恢復演練

 

也可以用初始位置+最后時間來恢復:

mysqlbinlog --start-position=154 --stop-datetime="xxx" -d test mysql-bin.000005 > /backup/binlog-`date +"%Y%m%d-%H%M%S"`.sql


四、開始恢復

導入之前的所有備份文件及binlog文件

mysql -uroot -p test < /backup/test-20190911-153754.sql 
mysql -uroot -p test < /backup/binlog-20190911-171045.sql
一文看懂mysql數據庫備份恢復演練

 


五、驗證

一文看懂mysql數據庫備份恢復演練

 

到此數據成功全部恢復!

分享到:
標簽:備份 數據庫 mysql
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定