實驗:模擬場景中誤刪除mysql數據庫表,然後使用全備份以及二進制日誌文件恢復操作

一、實驗環境:

1、準備兩臺虛擬機,一臺用於破壞數據庫,一臺用於還原,兩臺在同一個網絡

2、兩臺最小化安裝centos 7系統,並直接yum安裝maraidb數據庫

3、準備一個測試數據庫文件,例如,hellodb_innodb.mysql 測試庫裏面最少有兩個表。

二、實驗步驟:

1、開啓數據庫的二進制日誌功能

vim /etc/my.cnf
[mysqld] 下面加入log-bin 表示開啓二進制日誌功能

實驗:模擬場景中誤刪除mysql數據庫表,然後使用全備份以及二進制日誌文件恢復操作

2、完全備份

mysqldump -A -F --master-data=2 --single-transaction |gzip > /data/all.sql.gz
備份數據庫文件並用gzip壓縮,存放到/data目錄

實驗:模擬場景中誤刪除mysql數據庫表,然後使用全備份以及二進制日誌文件恢復操作

3、直接連接數據庫修改任意表

insert students (name,age)values('a',20);
insert students (name,age)values('b',30);

實驗:模擬場景中誤刪除mysql數據庫表,然後使用全備份以及二進制日誌文件恢復操作

select * from students 查詢新加入的表信息

實驗:模擬場景中誤刪除mysql數據庫表,然後使用全備份以及二進制日誌文件恢復操作

4、模擬刪除數據庫表

drop table students;如圖下,已將students表刪除;

實驗:模擬場景中誤刪除mysql數據庫表,然後使用全備份以及二進制日誌文件恢復操作

5、假裝不知道,繼續修改其他表

insert teachers (name,age)values('zhangsir',30);

實驗:模擬場景中誤刪除mysql數據庫表,然後使用全備份以及二進制日誌文件恢復操作

6、發現重要表刪除,立即鎖表

flush tables with read lock; 給表加上讀鎖

7、在另一臺機子上還原

vim /etc/my.cnf
skip-networking 確保其它用戶不能訪問數據庫,只能自己操作
rm -rf /var/lib/mysql 將原來的數據庫文件刪除,避免原來有文件
scp /data/all.sql.gz 192.168.190.129:/data
將原來備份的文件,複製到現主機的目錄中

8、完全備份還原

gzip -d /data/all.sql.gz 解壓打包的備份文件
mysql < /data/all.sql 將文件導入到數據庫中

實驗:模擬場景中誤刪除mysql數據庫表,然後使用全備份以及二進制日誌文件恢復操作

9、還原增量備份

less /data/all.sql 查看二進制日誌位置

實驗:模擬場景中誤刪除mysql數據庫表,然後使用全備份以及二進制日誌文件恢復操作

確定二進制日誌,以及起始位置爲245
scp /var/lib/mysql/mariadb-bin.000002 192.168.190.129:/data
將二進制文件拷貝過來
mysqlbinlog -- start-position=245 /data/mariadb-bin.000002 > /data/binlog.sql
使用mysqlbinlog工具,生成新的二進制日誌

實驗:模擬場景中誤刪除mysql數據庫表,然後使用全備份以及二進制日誌文件恢復操作

vim /data/binlog.sq
找到drop table students; 這條sql語句,註釋有關此行

實驗:模擬場景中誤刪除mysql數據庫表,然後使用全備份以及二進制日誌文件恢復操作

mysql < /data/binlog.sql
導入二進制日誌文件
恢復用戶的訪問

三、檢驗數據的完整性

show databases;
show tables

實驗:模擬場景中誤刪除mysql數據庫表,然後使用全備份以及二進制日誌文件恢復操作

上圖中的students表已經恢復過來

實驗:模擬場景中誤刪除mysql數據庫表,然後使用全備份以及二進制日誌文件恢復操作
實驗:模擬場景中誤刪除mysql數據庫表,然後使用全備份以及二進制日誌文件恢復操作

如圖所示,之前做的修改也都回來了。實驗目的達到了。

四、實驗總結

mariadb 數據庫破壞後,需要藉助完全備份+二進制日誌文件進行還原,兩者缺一不可,兩者都非常重要,生產中既要保護好備份的數據庫文件,同時還需要保護好二進制文件,從而保證數據還原的完整性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章