mysql 數據備份和恢復

操作系統:22.04.1-Ubuntu

在這里插入圖片描述

mysql 版本:8.033

在這里插入圖片描述

binlog 介紹

binlog 是mysql 二進制日志 binary log的簡稱,可以簡單理解為數據的修改記錄。
需要開啟binlog,才會產生文件,mysql 8.0 默認開啟,開啟后可以在 /var/lib/mysql (這是mysql默認數據存儲路徑,如果用戶自己指定則另說) 目錄下看到一系列 binlog.xxxxxx 的文件
在這里插入圖片描述

binlog刷新

每次mysql重啟 都會生成一個新的binlog文件,也可以使用命令來刷新binlog
1、進入mysql,使用flush logs,會看到新生成了新的binlog.000011文件
在這里插入圖片描述
2、mysqladmin -uroot -p flush-logs(這里也需要root賬號密碼)
在這里插入圖片描述

備份與恢復

以下是官網的關于備份與恢復的翻譯:
完整備份是必要的,但創建它們并不總是很方便。它們會生成大型備份文件,并且需要時間來生成。它們不是最佳的,因為每次連續的完全備份都包括所有數據,即使是自上次完全備份以來沒有更改的部分。先進行初始完全備份,然后進行增量備份會更高效。增量備份更小,生成時間更短。代價是,在恢復時,不能僅通過重新加載完整備份來恢復數據。您還必須處理增量備份以恢復增量更改
官網關于備份恢復的鏈接
簡而言之就是2種方式,完整和增量,優缺點也如上所述,下面描述2種方式的使用

完整備份與恢復

完整備份就是將所有數據以表的形式進行保存

備份

命令

mysqldump --all-databases --master-data --single-transaction > back_20220806_112100.sql

備份的同時刷新binlog文件

mysqldump --single-transaction --flush-logs --master-data=2 --all-databases > back_20220806_112100.sql

在這里插入圖片描述
mysqldump 指令選項說明

恢復

如何恢復

執行指令

mysql <  back_20220806_112100.sql

如果需要密碼則

mysql -uroot -p <  back_20220806_112100.sql

該指令相當于執行了備份文件中的sql語句。

可以先可以查看 備份文件,發現里面基本是以下語句:刪除表,創建表,數據的插入,顯然是以表為單位來備份的,恢復時也是以表來恢復的
因此可以得出結論:在利用備份文件進行數據恢復時,會恢復備份前的所有表數據,但不包括備份后新增加的表,新增的表有以下2中情況:
1、同一個數據庫存在相同的表則被則會被覆蓋
2、同一個數據庫存在不同的表則忽略,因為備份文件中不含任何對該表的操作
在這里插入圖片描述

增量恢復

備份

前面我們已經描述過 binlog是一個數據修改記錄的文件,默認一個binlog文件代表一次運行的所有數據修改記錄,然后也可以使用命令強制生成一個新的binlog文件作為新的起點來記錄數據修改過程,因此增量備份其實是自動的,就是一個個binlog文件
在這里插入圖片描述

恢復

恢復的前提是要備份,完整備份和增量備份在上面已經描述清楚,因此數據恢復就是利用備份文件+binlog文件來做任意回滾

舉個例子,執行備份指令

mysqldump --single-transaction --flush-logs --master-data=2 --all-databases > back_20220806_153500.sql

生成備份文件以及新的binlog文件,從000005開始的binlog文件都是back_20220806_153500.sql備份文件的增量文件
在這里插入圖片描述
在上面的基礎上(生成了back_20220806_153500.sql 以及新的binlog.000005),現在做一個簡單測試來驗證數據恢復,分為幾個步驟

  • 步驟1、新增一個數據庫incrementTestDatabase,再添加一個表incrementTestTable,包含了id、test字段,以及一條數據(1,“test1”)
  • 步驟2、刷新binlog日志
  • 步驟3、刪除incrementTestTable,在創建一個incrementTestTable表包含了id、test字段,以及一條數據(2,“test2”)
  • 步驟4、恢復成1中的數據(1,“test1”)
  • 步驟5、恢復成3中的數據(2,“test2”)
    開始測試
    執行步驟1,2效果
    在這里插入圖片描述在這里插入圖片描述
    執行步驟3后
    在這里插入圖片描述
    現在我們開始執行步驟4
    顯然我們知道
    binlog.000005中包含了數據(1,“test1”)的新建
    binlog.000006中包含了表的刪除及(2,“test2”)的新建
    因此要恢復到步驟1,只需要back_20220806_153500.sql + binlog.000005
    先恢復備份
mysql -uroot -p <  back_20220806_153500.sql

備份基礎上恢復修改記錄

mysqlbinlog binlog.000005 | mysql -uroot -p

結果如下,與預料中的一樣
在這里插入圖片描述

現在我們開始執行步驟5,在步驟4的基礎上,恢復binlog.000006

mysqlbinlog binlog.000006 | mysql -uroot -p

結果如下,與預料中的一樣
在這里插入圖片描述

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

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

相關文章

技術債 筆記

目錄 1. 技術債 筆記1.1. 什么是技術債1.2. 討論1.3. 國內技術從業者怎么看? 1. 技術債 筆記 1.1. 什么是技術債 1992 年, Ward Cunningham 在敏捷宣言中首次提出了"技術債"概念, 主要指有意或無意地做了錯誤的或不理想的技術決策所累積的債務。隨后, 《重構》一書…

sql中union all、union、intersect、minus的區別圖解,測試

相關文章 sql 的 join、left join、full join的區別圖解總結&#xff0c;測試&#xff0c;注意事項 1. 結論示意圖 對于intersect、minus&#xff0c;oracle支持&#xff0c;mysql不支持&#xff0c;可以變通&#xff08;in或exists&#xff09;實現 2.測試 2.1.創建表和數…

vue pc端項目el-upload上傳圖片時加水印

html代碼&#xff1a; <a-uploadclass"avatar-uploader"list-type"picture-card":file-list"uploadFileList":custom-request"uploadDoneHandle":before-upload"beforeUpload":remove"removeHandle"v-decorat…

案例21 基于Spring Boot+Redis實現圖書信息按書號存儲案例

1. 案例需求 基于Spring BootRedis實現圖書信息按書號存儲和取出功能&#xff0c;數據存儲至Redis。 2. 創建Spring Boot項目 創建Spring Boot項目&#xff0c;項目名稱為springboot-redis02。 3. 選擇依賴 ? pom.xml文件內容如下所示&#xff1a; <?xml version&quo…

瀏覽器控制臺調試代碼和JavaScript控制臺方法介紹

瀏覽器控制臺調試代碼和JavaScript控制臺方法介紹 瀏覽器控制臺調試代碼 瀏覽器控制臺&#xff08;Console&#xff09;是瀏覽器提供的一個開發工具&#xff0c;用于在瀏覽器中執行和調試 JavaScript 代碼。它提供了一個交互式環境&#xff0c;可以輸入 JavaScript 代碼&#…

Qt:隱式內存共享

隱式內存共享 Many C classes in Qt use implicit data sharing to maximize resource usage and minimize copying. Implicitly shared classes are both safe and efficient when passed as arguments, because only a pointer to the data is passed around, and the data i…

C語言:每日一練(選擇+編程)

目錄 選擇題&#xff1a; 題一&#xff1a; 題二&#xff1a; 題三&#xff1a; 題四&#xff1a; 題五&#xff1a; 編程題&#xff1a; 題一&#xff1a;打印1到最大的n位數 示例1 思路一&#xff1a; 題二&#xff1a;計算日期到天數轉換 示例1 思路一&#xf…

【JVM】如何判定一個對象已死以及“標記-清除”、“標記-復制”、“標記-整理”三種垃圾收集算法

文章目錄 0、如何判定一個對象的生死&#xff1f;1、上文提到的引用又是什么1、強引用&#xff1a;2、軟引用&#xff1a;3、弱引用&#xff1a;4、虛引用&#xff1a; 2、垃圾收集算法1、標記-清除2、標記-復制優化&#xff1a;&#x1f447; 3、標記-整理 0、如何判定一個對象…

Java面向對象程序設計——知識、概念、定義及作用(簡答)

?專欄&#xff1a;《Java面向對象程序設計》學習筆記 問題是依據考綱整理的&#xff0c;稍微做了一些補充。大部分答案由GPT生成&#xff0c;部分內容摘選自書本。 內容太多了&#xff0c;目前懶得濃縮精煉了&#xff0c;以后再說吧。 如果有大佬可以幫忙精簡一些文字、補充…

R語言實現神經網絡(1)

#R語言實現神經網絡 library(neuralnet) library(caret) library(MASS) library(vcd) data(shuttle) str(shuttle)#因變量use; table1<-structable(windmagn~use,shuttle) mosaic(table1,shadingT) mosaic(use~errorvis,shuttle) prop.table(table(shuttle$use,shuttle$stab…

計算機網絡-物理層(二)- 傳輸方式

計算機網絡-物理層&#xff08;二&#xff09;- 傳輸方式 串型傳輸與并行傳輸 串行傳輸:是指數據是一個比特一個比特依次發送的&#xff0c;因此在發送端和接收端之間&#xff0c;只需要一條數據傳輸線路即可 并行傳輸:是指一次發送n個比特而不是一個比特&#xff0c;因此發送…

【Uniapp】base64圖片資源轉為本地圖片,解決canvas不支持base64問題

通過接口獲取到base64類型的二維碼&#xff0c;把二維碼放到canvas里生成海報 遇到的問題&#xff1a; 在微信小程序開發工具中能夠正常顯示海報&#xff0c;到真機上測試就無法顯示二維碼 原因&#xff1a; 因為canvas不支持base64&#xff0c;其次在使用小程序 canvas 的 dr…

異常堆棧缺失與OmitStackTraceInFastThrow

目錄 現象原因OmitStackTraceInFastThrow源碼層面分析OmitStackTraceInFastThrow閾值是多少源碼源代碼解釋 現象 異常沒有堆棧信息。只有短短的異常類信息&#xff0c;例如java.lang.NullPointerException。 完整的異常堆棧示例&#xff1a; java.lang.NullPointerException…

爬蟲逆向實戰(十六)--某建筑市場平臺

一、數據接口分析 主頁地址&#xff1a;某建筑市場平臺 1、抓包 通過抓包可以發現數據接口是list 2、判斷是否有加密參數 請求參數是否加密&#xff1f; 無請求頭是否加密&#xff1f; 無響應是否加密&#xff1f; 通過查看“響應”模塊可以發現&#xff0c;返回的響應是…

MAUI+Blazor:windows 打包踩坑

文章目錄 前言MSIX安裝文件如何發布選擇Windows平臺旁加載自定義簽名版本號安裝 總結 前言 最近打算研究一下MAUIBlazor&#xff0c;爭取在今年年底之前徹底搞懂MAUIBlazor的安裝模式&#xff0c; MSIX安裝文件 Windows 4種安裝程序格式MSI&#xff0c;EXE、AppX和MSIX優缺點…

Java常用API---快速達到Java工作水準系列(1)

目錄 1.集合 2.包裝類 3.日期處理以及格式化 4.字符串處理類 5.數組 5.BigDecimal 6.Math 1.集合 毋庸置疑&#xff0c;集合在實際項目的使用概率幾乎是百分之百。無論是用于數據存儲和管理、去重和查找亦或是數據檢索和遍歷&#xff0c;都離不開集合的使用。任何一個項…

Spring Cloud Gateway系例—參數配置(CORS 配置、SSL、元數據)

一、CORS 配置 你可以配置網關來控制全局或每個路由的 CORS 行為。兩者都提供同樣的可能性。 1. Global CORS 配置 “global” CORS配置是對 Spring Framework CorsConfiguration 的URL模式的映射。下面的例子配置了 CORS。 Example 77. application.yml spring:cloud:gat…

【【STM32----I2C通信協議】】

STM32----I2C通信協議 我們會發現I2C有兩根通信線&#xff1a; SCL和SDA 同步 半雙工 帶數據應答 支持總線掛載多設備&#xff08;一主多從&#xff0c;多主多從&#xff09; 硬件電路 所有I2C設備的SCL連在一起&#xff0c;SDA連在一起 設備的SCL和SDA均要配置成開漏輸出模式 …

5.Vue_Element

文章目錄 1 Ajax1.1 Ajax介紹1.1.1 Ajax概述1.1.2 Ajax作用1.1.3 同步異步 1.2 Axios1.2.1 Axios的基本使用1.2.2 Axios請求方法的別名 2 前端工程化2.1 前端工程化特點2.2 Vue項目開發流程 3 Vue組件庫Element3.1 Element介紹 1 Ajax 1.1 Ajax介紹 1.1.1 Ajax概述 Ajax: 全…

【Unity游戲開發】基于前綴樹的紅點系統構思與客戶端方案

一、前言 前段時間負責了項目中紅點系統的實現,和大家分享一下初期是設計思路 紅點系統客戶端業務的一般實現過程與方式: 數據管理:首先要在客戶端建立一個數據管理系統,用于存儲和管理各個業務模塊的紅點狀態。可以是一個中央數據管理器或模塊化的數據管理系統,具體根據游…