實驗11 數據庫日志及數據庫恢復

一、 實驗目的

了解Mysql數據庫系統中數據恢復機制和主要方法。

二、 實驗環境

操作系統:Microsoft Windows 7旗艦版(32&64位)/Linux。
硬件:容量足以滿足MySQL 5.7(8.0)安裝及后續實驗的使用。
軟件:數據庫版本:MySQL 5.7(8.0)。

三、 實驗內容

(1) 利用配置文件開啟各種MYSQL日志

需要提醒:相關的日志文件都是通過設置生成,實際實驗過程中文件名可能和下面例舉名稱不同。注意調整!!!
① 查看MYSQL的錯誤日志,了解其中記錄的信息情況。

my.inimysqld下可以查詢錯誤日志的配置文件名:
例如:log-error="Pc-202002191131.err"
打開安裝路徑下的 mysql 下的 data 下的 Pc-202002191131.err 錯誤日志文件,并利用文本編輯器打開和閱讀分析。
在這里插入圖片描述
② 利用log-bin參數開啟二進制日志,并通過反復重新啟動MYSQL服務器查看產生的文件,以及二進制文件的索引文件。

在my.ini的mysqld下加上log-bin及其配置信息:
例如:log-bin="Pc-202002191131-bin"
然后重啟服務器。
在data下會生成新的二進制日志文件(Pc-202002191131-bin.000030,…..)和.Index文件(Pc-202002191131-bin.index)。
在這里插入圖片描述
需要特別指出的是,二進制的文件個數與MySQL服務啟動有關,一般每啟動一次mysql,將會產生一個新的日志文件!!!(編號會遞增)

③ 利用general-log參數開啟通用查詢日志文件,在MYSQL中進行相關操作,查看日志文件中的記錄信息。
在my.ini的mysqld下將general-log=0 改為1,并設置general_log_file的文件名:
general-log=1
general_log_file="Pc-202002191131.log"
然后重啟服務器。
在data下會生成通用日志Pc-202002191131.log文件。利用文本編輯器打開閱讀。
在這里插入圖片描述
④利用log-slow-queries參數開啟慢日志文件,在MYSQL中進行操作,查看日志文件中的記錄信息。
在my.ini的mysqld下加上log-slow-queries和long_query_time并設置:
slow-query-log=1
slow_query_log_file="Pc-202002191131-slow.log"
long_query_time=10
然后重啟服務器.
在data下會生成Pc-202002191131-slow.log文件。利用文本編輯器打開閱讀。
在這里插入圖片描述

(2) 二進制文件相關操作(多次重新啟動MYSQL服務器)

① 利用有關命令查詢二進制日志文件信息。
確認二進制日志是否啟用

show variables like 'log_bin'

查看二進制日志文件存放的目錄:

show variables like 'datadir';

查看當前二進制日志文件(列表最后一個)信息:

show master status;

查看所有二進制日志文件信息:

show binary logs;

查看某個二進制文件內容,兩種方法:
a.通過MySQL的mysqlbinlog.exe工具命令行狀態下運行查看(注意:cmd命令行)

"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqlbinlog.exe"
"C:\ProgramData\MySQL\MySQL Server 8.0\Data\Pc-202002191131-bin.000045"

b.通過MySQL的show binlog events命令查看

show binlog events in 'Pc-202002191131-bin.000045'

② 利用Reset master刪除所有二進制日志。(注意,本實驗不操作該命令!該命令會消除所有已存在日志,一般慎重使用!)

RESET MASTER

使用該命令,可以刪除所有二進制日志文件,新的日志文件名將從000001開始。執行SHOW BINARY LOGS命令查看當前日志文件,可見mysql日志已經更新。
③ 使用PURGE MASTER LOGS語句刪除指定日志文件。
#刪除指定日志名前所有的日志文件

PURGE {MASTER | BINARY} LOGS TO '日志名';

#刪除指定日期前的所有日志文件

PURGE {MASTER | BINARY} LOGS BEFORE '日期';

利用purge master logs to ‘****.000003’刪除指定number序號前的所有日志文件
利用purge master logs before ‘指定時間’刪除指定時間之前的所有日志文件。
關閉當前使用的binary log,然后打開一個新的binary log文件,文件的序號加1。
flush logs命令的作用就是關閉當前使用的binary log,然后打開一個新的binary log文件,文件的序號加1

flush logs;

(3) 利用mysqlbinlog.exe命令通過二進制日志恢復數據操作

①實驗條件
首先要明確MySQL的二進制日志處于打開狀態。

show variables like 'log_bin'

a.如果返回NO,則需要開啟binlog日志。操作如下:
找到mysql安裝目錄,打開配置文件my.ini
在[mysqld]下添加:
log-bin=mysql-bin
保存后重啟mysql服務。此時在data目錄會生成mysql-bin.000001mysql-bin.index
注意:MySQL每次重啟服務會重新生成一個binlog二進制文件。
b.如果返回YES,則binlog日志已開啟。操作如下命令強制打開一個新的二進制文件,以便簡化內容和后續處理:

flush logs;

②實驗步驟
a.搭建測試環境和數據。

create database t1;
uset1;
create table ceshi(id int not null);
insert into ceshi values(1),(2),(3);
select *from ceshi;

b.此時模擬服務器定期備份任務,備份t1數據庫。(-l是備份期間加讀鎖,-F 刷新binlog日志,此時會重新生成一個binlog日志,名字是mysql-bin.000002)。

mysqldump.exe -uroot -p*****t1 -l -F >ceshi.sql

mysqldump.exe命令的選項使用請參閱后面附件內容!
這里也可以嘗試利用客戶端工具保存ceshi表的結構和數據至sql文件。

c.此時向數據庫中新插入三條數據。

insert into ceshi values(4),(5),(6);
select *from ceshi;

d.模擬數據庫破壞。

drop table ceshi;

select *from ceshi; 會報錯!

e.此時數據庫破壞后通過備份我們只能恢復備份那一刻的數據,但是在第c步新插入的三條數據不能通過備份恢復。可以通過binlog日志來恢復。

mysql.exe -uroot -p***** <ceshi.sql

也可以利用客戶端工具加載運行備份的sql文件來恢復ceshi表和前三行數據。

f.通過binlog恢復新插入的三條數據。
首先要確定二進制日志文件中后插入三條數據的位置,可以有兩種方法。
方法1:通過命令行 mysqlbinlog --no-defaults binlog路徑\mysql-bin.000002 |more查詢。
實際操作:

"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqlbinlog" --no-defaults "C:\ProgramData\MySQL\MySQL Server 8.0\Data\Pc-202002191131-bin.000002" |more

在這里插入圖片描述
分析判斷,只需要恢復上圖紅色標識位置812-1094這段即可。

方法2:可以在客戶端利用show binlog events命令查詢(推薦使用)
實際操作:

show binlog events in 'Pc-202002191131-bin.000002'

分析找到后三條數據追加命令的起始位置812,結束位置1094。(注意有明顯的事務標識來輔助提示位置判斷!!!)

最后命令行執行mysqlbinlog實施恢復操作。
命令格式:

mysqlbinlog.exe --start-position *** --stop-position ***bin.000002 | mysql.exe -uroot –p***

實際操作:

"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqlbinlog.exe" --start-position 812--stop-position 1094"C:\ProgramData\MySQL\MySQL Server 8.0\Data\Pc-202002191131-bin.000002" |"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe" -uroot -p1234

成功!利用binlog恢復數據完成。

(4) 數據庫備份與還原

以下操作均是以命令行形式給出,實際實驗大家可以利用Navicat客戶端平臺來實施相同功能的任務要求。
Mysqldump –uroot –p --all-database>all.sql 備份所有數據庫Mysqldump.exe

Mysqldump –uroot –p --database test>test.sql 備份test數據庫
Mysqldump –uroot –p –l teststudent course sc>s_c_sc.sql 備份test數據庫中的學生、課程、選課成績表
Mysql –uroot –p <all.sql 還原所有數據庫
Mysql –uroot –p test<test.sql 還原test數據庫

(5) 導出文件與加載數據

① 利用SELECT ...INTO OUTFILE導出stud表到stud.txt文本文件中
② 利用LOAD DATA INFILE導入文本文件stud.txt的數據到新建的stud1空表中

附:mysqldump.exe命令選項說明
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/45904.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45904.shtml
英文地址,請注明出處:http://en.pswp.cn/web/45904.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python | Leetcode Python題解之第232題用棧實現隊列

題目&#xff1a; 題解&#xff1a; class MyQueue:def __init__(self):self.A, self.B [], []def push(self, x: int) -> None:self.A.append(x)def pop(self) -> int:peek self.peek()self.B.pop()return peekdef peek(self) -> int:if self.B: return self.B[-1…

什么叫圖像的中值濾波,并附利用OpenCV和MATLB實現均值濾波的代碼

圖像的中值濾波&#xff08;Median Filtering&#xff09;是一種非線性數字濾波技術&#xff0c;常用于圖像處理以減少噪聲&#xff0c;同時保留圖像邊緣細節。其基本思想是用圖像中某個窗口內像素的中值替代該窗口中心像素的值。具體步驟如下&#xff1a; 選擇窗口&#xff1a…

C++樹(二)【直徑,中心】

目錄&#xff1a; 樹的直徑&#xff1a; 樹的直徑的性質&#xff1a; 性質1&#xff1a;直徑的端點一定是葉子節點 性質2&#xff1a;任意點的最長鏈端點一定是直徑端點。 性質3&#xff1a;如果一棵樹有多條直徑,那么它們必然相交&#xff0c;且有極長連…

STM32中PC13引腳可以當做普通引腳使用嗎?如何配置STM32的TAMPER?

1.STM32中PC13引腳可以當做普通引腳使用嗎&#xff1f; 在STM32單片機中&#xff0c;PC13引腳可以作為普通IO使用&#xff0c;但需要進行一定的配置。PC13通常與RTC侵入檢測功能&#xff08;TAMPER&#xff09;復用&#xff0c;因此需要關閉TAMPER功能才能將其作為普通IO使用。…

服務端渲染框架:Nuxt.js 與 Next.js 的區別和對比

&#x1f49d;&#x1f49d;&#x1f49d;歡迎蒞臨我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:「stormsha的主頁」…

2024國家護網面試小結

24年國護馬上就要開始&#xff0c;基本上大部分藍隊紅隊都已經準備入場了 今年護網第一年變成常態化護網&#xff0c;由十五天突然變成了兩個月常態化&#xff0c;導致今年護網有很多項目整的七零八落 博主今年參加了三家廠商藍隊護網面試&#xff0c;在這邊分享一下護網面試…

掌握這些技巧,讓你成為畫冊制作高手

在數字化的時代背景下&#xff0c;電子畫冊以其便捷的傳播方式、豐富的視覺表現形式&#xff0c;贏得了大眾的喜愛。它不僅能夠在個人電腦上展現&#xff0c;還能通過智能手機、平板電腦等多種移動設備隨時隨地被訪問和瀏覽。這種跨平臺的支持&#xff0c;使得無論你身處何地&a…

Html_Css問答集(12)

99、將上例的0%改為30%&#xff0c;會如何變化&#xff1f; none:延遲2秒間無色&#xff0c;3.8秒&#xff08;0%-30%占1.8秒&#xff09;前無色&#xff0c;之后變紅到5秒綠最后藍&#xff0c;動畫結束時恢復初始&#xff08;無色&#xff09;。 forward:延遲2秒間無色&am…

leetcode刷題總結——字符串匹配

KMP&#xff08;字符串匹配算法&#xff09; 主串或目標串&#xff1a;比較長的&#xff0c;我們就是在它里面尋找子串是否存在&#xff1b; 子串或模式串&#xff1a;比較短的。 前綴&#xff1a;字符串A和B&#xff0c;A BS&#xff0c;S非空&#xff0c;則B為A的前綴。 …

婚禮成本與籌備策略:一場夢幻婚禮的理性規劃

婚禮成本與籌備策略&#xff1a;一場夢幻婚禮的理性規劃 摘要 婚禮&#xff0c;作為人生中的重要儀式&#xff0c;承載著新人的愛情與夢想&#xff0c;同時也伴隨著不菲的經濟投入。本文旨在探討婚禮所需的大致成本、影響成本的主要因素以及婚禮籌備過程中的關鍵注意事項&…

【Java--數據結構】二叉樹

歡迎關注個人主頁&#xff1a;逸狼 創造不易&#xff0c;可以點點贊嗎~ 如有錯誤&#xff0c;歡迎指出~ 樹結構 樹是一種非線性的數據結構&#xff0c;它是由n&#xff08;n>0&#xff09;個有限結點組成一個具有層次關系的集合 注意&#xff1a;樹形結構中&#xff0c;子…

Transformer模型在多任務學習中的革新應用

在深度學習領域&#xff0c;多任務學習&#xff08;Multi-task Learning, MTL&#xff09;是一種訓練模型以同時執行多個任務的方法。這種方法可以提高模型的泛化能力&#xff0c;因為它允許模型在不同任務之間共享知識。近年來&#xff0c;Transformer模型因其在自然語言處理&…

【linux高級IO(三)】初識epoll

&#x1f493;博主CSDN主頁:杭電碼農-NEO&#x1f493; ? ?專欄分類:Linux從入門到精通? ? &#x1f69a;代碼倉庫:NEO的學習日記&#x1f69a; ? &#x1f339;關注我&#x1faf5;帶你學更多操作系統知識 ? &#x1f51d;&#x1f51d; Linux高級IO 1. 前言2. 初識e…

STM32 HRTIM生成PWM時遇到無法輸出PWM脈沖波形問題

在使用HRTIM生成PWM時&#xff0c;當把周期寄存器更新的設置放到while循環中時&#xff0c;無法輸出PWM脈沖波形&#xff0c;即使增加計數延時也無法輸出&#xff0c;最終只能放到中斷函數中執行后期寄存器值更新才能夠生成PWM脈沖波形。

主流大數據調度工具DolphinScheduler之數據ETL流程

今天給大家分享主流大數據調度工具DolphinScheduler&#xff0c;以及數據的ETL流程。 一&#xff1a;調度工具DS 主流大數據調度工具DolphinScheduler&#xff0c; 其定位&#xff1a;解決數據處理流程中錯綜復雜的依賴關系 任務支持類型&#xff1a;支持傳統的shell任務&a…

Python學習4---迭代器和生成器的區別

一、迭代器 定義&#xff1a;迭代器是一個可以記住遍歷的位置的對象。迭代器對象必須實現兩個方法&#xff0c;iter() 和 next()。字符串、列表或元組等數據類型都是可迭代對象&#xff0c;但它們不是迭代器&#xff0c;因為它們不具有 next() 方法。迭代器對象用于遍歷可迭代對…

冷卻塔由那些配件組成

1、淋水填料 將需要冷卻的水&#xff08;熱水&#xff09;多次濺灑成水滴或形成水膜&#xff0c;以增加水和空氣的接觸面積和時間&#xff0c;促進水和空氣的熱交換。 填料在開式橫流冷卻塔的作用是增加循環水與空氣的接觸面積&#xff0c;并延長冷卻水停留在空氣中的時間&am…

LabVIEW工業設備姿態監測系統

開發了一種基于LabVIEW的工業設備姿態監測系統&#xff0c;針對現有監測設備在適應性和反應時間上的不足&#xff0c;采用了LabVIEW軟件和STM32微控制器&#xff0c;通過高精度姿態傳感器實現了對設備姿態的快速準確監測&#xff0c;大大提高了工業作業的安全與效率。 項目背景…

C++深度解析教程筆記9-靜態成員變量,靜態成員函數,二階構造,友元,函數重載,操作符重載

C深度解析教程筆記9 第25課 - 類的靜態成員變量實驗-數對象個數&#xff08;失敗&#xff09;實驗-靜態變量小結 第26課 - 類的靜態成員函數實驗-修改對象的靜態變量數值實驗-利用靜態成員函數實驗-靜態變量靜態函數實現統計對象個數小結 第27課 - 二階構造模式實驗-初始化是否…

百度人臉識別Windows C++離線sdk C#接入

百度人臉識別Windows C離線sdk C#接入 目錄 說明 設計背景 ? 場景特點&#xff1a; ? 客戶特點&#xff1a; ? 核心需求&#xff1a; SDK 包結構 效果 代碼 說明 自己根據SDK封裝了動態庫&#xff0c;然后C#調用。 功能接口 設計背景 ? 場景特點&#xff1a; -…