讀高性能MySQL(第4版)筆記14_備份與恢復(中)

来源:https://www.cnblogs.com/lying7/archive/2023/09/23/17723586.html
-Advertisement-
Play Games

1. 線上備份 2. 離線備份 2.1. 關閉MySQL做備份是最簡單、最安全的 2.2. 所有獲取一致性副本的方法中最好的 2.3. 損壞或不一致的風險最小 2.4. 根本不用關心InnoDB緩衝池中的臟頁或其他緩存 2.5. 不需要擔心數據在嘗試備份的過程中被修改 2.5.1. 伺服器不對應用提 ...


1. 線上備份

2. 離線備份

2.1. 關閉MySQL做備份是最簡單、最安全的

2.2. 所有獲取一致性副本的方法中最好的

2.3. 損壞或不一致的風險最小

2.4. 根本不用關心InnoDB緩衝池中的臟頁或其他緩存

2.5. 不需要擔心數據在嘗試備份的過程中被修改

2.5.1. 伺服器不對應用提供訪問

3. 備份時間

3.1. 將備份複製到目的地需要多久

4. 備份負載

4.1. 在將備份複製到目的地時對伺服器性能的影響有多大

4.2. 在備份伺服器上壓縮而不是在MySQL伺服器上

4.3. Percona XtraBackup和MySQL Enterprise Backup這樣的工具都有限流選項,可在使用p v時加--rate-limit選項來限製備份腳本的吞吐量

5. 犧牲其一以增強另外一個

6. 恢復時間

6.1. 把備份鏡像從存儲位置複製到MySQL伺服器、重放二進位日誌等,需要多久

7. 邏輯備份

7.1. 導出

7.2. 以一種MySQL能夠解析的格式來包含數據

7.2.1. SQL語句

7.2.2. 以某個符號分隔的文本

7.3. 優點

7.3.1. 邏輯備份備份的文件是可以用編輯器或像grep和sed之類的命令查看和操作的普通文件

7.3.2. 恢復非常簡單

7.3.3. 可以通過網路來備份和恢復,也就是說,可以在與MySQL主機不同的另外一臺機器上操作

7.3.4. 可以在類似雲資料庫這樣不能訪問底層文件系統的系統中使用

7.3.5. 靈活

7.3.6. 與存儲引擎無關

7.3.6.1. 消除了底層數據存儲引擎的差異

7.3.7. 有助於避免數據損壞

7.3.7.1. 如果MySQL在記憶體中的數據還沒有損壞,當不能得到一個正常的裸文件備份時,或許可以得到一個可以信賴的邏輯備份

7.4. 缺點

7.4.1. 必須由資料庫伺服器完成生成邏輯備份的工作,因此要占用更多的CPU周期

7.4.1.1. 某些場景下比資料庫文件本身更大

7.4.2. 無法保證導出後再還原出來的一定是同樣的數據

7.4.2.1. 浮點表示的問題、軟體Bug等都會導致問題

7.4.3. 從邏輯備份中還原需要MySQL載入和解釋語句,將它們轉化為存儲格式,並重建索引,所有這一切會很慢

7.4.3.1. MySQL中導出數據和通過SQL語句將其載入回去的龐大開銷

7.4.3.2. 如果使用邏輯備份,測試恢復需要的時間將非常重要

7.4.3.3. 邏輯備份最可怕的地方就是不確定的還原時間

8. 裸文件備份

8.1. 原始文件是指存放於硬碟上的文件

8.2. 直接複製原始文件

8.3. 優點

8.3.1. 基於文件的物理備份,它只需將需要的文件複製到其他地方即可完成備份,不需要其他額外的工作來生成原始文件

8.3.2. 非常容易跨平臺、操作系統和MySQL版本工作

8.3.3. 從裸文件備份中恢復會更快

8.3.3.1. MySQL伺服器不需要執行任何SQL語句或構建索引

8.3.3.2. 如果有很大的InnoDB表,無法完全緩存到記憶體中,則裸文件備份的恢復要快得多

8.3.3.2.1. 至少要快一個數量級

8.4. 缺點

8.4.1. InnoDB的原始文件通常比相應的邏輯備份要大得多

8.4.1.1. 表空間往往包含很多未使用的空間

8.4.2. 不總是可以跨平臺、操作系統及MySQL版本的

8.4.2.1. 文件名大小寫敏感和浮點格式是可能會遇到麻煩的

8.4.2.2. 對於需要長期保留或者是用於滿足法律合規要求的備份,儘量不要完全依賴裸文件備份

8.4.2.3. 每隔一段時間需要做一次邏輯備份

8.4.3. 除非經過測試,不要假定備份(特別是裸文件備份)是正常的

8.4.3.1. CHECK TABLES

8.4.3.2. 不建議僅對文件運行innochecksum

9. 混合使用

9.1. 使用裸文件備份

9.2. 用得到的數據啟動MySQL伺服器實例並運行mysqlcheck

9.3. 周期性地使用mysqldump執行邏輯備份

9.4. 優點是不會使生產伺服器在導出時有過度負擔

9.5. 如果能夠方便地利用文件系統的快照,也可以生成一個快照,將該快照複製到另外一臺伺服器上並釋放,然後測試原始文件,再執行邏輯備份

10. 備份什麼

10.1. 恢復的需求決定需要備份什麼

10.2. 最簡單的策略是只備份數據和表定義,但這是一個最低的要求

10.3. 非顯著數據

10.3.1. 二進位日誌和InnoDB事務日誌

10.3.2. 在理想情況下,應該把整個數據目錄和MySQL一起備份起來

10.4. 代碼

10.4.1. 現代的MySQL伺服器可以存儲許多代碼,例如,觸發器和存儲過程

10.4.2. 實際是存放在mysql資料庫中的

10.5. 伺服器配置

10.5.1. 對於伺服器配置來說,備份中對生產伺服器至關重要的任何外部配置,都十分重要

10.6. 選定的操作系統文件

10.6.1. 在UNIX伺服器上,這可能包括cron任務、用戶和組的配置、管理腳本,以及sudo規則

11. 部分備份

11.1. 一般不包含完整的數據集

11.1.1. 因為某些數據沒有改變

11.1.2. 對減少伺服器開銷、備份時間及備份空間而言都很適合

11.2. Percona XtraBackup和MySQL Enterprise Backup,仍然會掃描伺服器上的所有數據塊,因而並不會節約太多的開銷

11.2.1. 確實會減少一定量的備份時間和大量用於壓縮的CPU時間

11.2.2. 會減少磁碟空間的使用

11.3. 差異備份

11.3.1. 自上次全備份後所有改變的部分而做的備份

11.4. 增量備份

11.4.1. 對自任意類型的上次備份後的所有修改做的備份

11.4.2. 缺點

11.4.2.1. 會增加恢復的複雜性

11.4.2.2. 額外的風險

11.4.2.3. 更長的恢復時間

12. 建議

12.1. 使用Percona XtraBackup和MySQL Enterprise Backup中的增量備份特性

12.2. 備份二進位日誌

12.2.1. 在每次備份後使用FLUSH LOGS來開始記錄一個新的二進位日誌,這樣就只需要備份新的二進位日誌

12.3. 如果有一些“引用”表,例如,包含不同語種、各個月的名稱列表,或者州或區域的簡寫等,可以考慮將它們單獨放在一個資料庫中,這樣就不需要每次都備份這些表

12.3.1. 一個更好的選擇可能是把這些數據放到程式代碼中,而不是保存在資料庫中

12.4. 某些數據根本不需要備份

12.4.1. 相對於從全備份中可能獲得的快速恢復時間,避免備份可以節約更多時間開銷

12.4.2. 臨時數據也不用備份

12.5. 備份所有的數據,然後發送到一個有去重特性的地方

12.6. 如果可以做全備份,考慮到簡便性,建議儘量做全備份

12.6.1. 建議至少一周一次

13. 複製

13.1. 從副本中備份最大的好處是可以不幹擾源庫,避免在源庫上增加額外的負載

13.1.1. 這是一個建立副本伺服器的好理由,即使不需要用它做負載均衡或提供高可用性

13.2. 用GTID是非常明智的

13.2.1. 避免了必須保存有關複製過程的所有信息

13.3. 故意將一個副本延遲複製一段時間對於某些災難場景非常有用

13.4. 源庫與副本數據不匹配是很常見的,並且MySQL沒有方法檢測這個問題

13.4.1. 唯一方法是使用Percona Toolkit中的pt-table-checksum之類的工具

13.4.2. 防止這種情況的最好方法是使用super_read_only來確保只有複製可以寫入副本

13.5. 複製不是備份


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在我們視窗新增、編輯狀態下的時候,我們往往會根據是否修改過的痕跡-也就是臟數據狀態進行跟蹤,如果用戶發生了數據修改,我們在用戶退出視窗的時候,提供用戶是否丟棄修改還是繼續編輯,這樣在一些重要錄入時的時候,可以避免用戶不小心關掉視窗,導致視窗的數據要重新錄入的尷尬場景。本篇隨筆介紹基於WPF開發中,窗... ...
  • 一、介紹 今天突然想起之前工作上遇到的一個問題,在做Blazor 開發時後端給的一個介面請求方式是Post ,但是他需要攜帶多個參數,新建一個公共類又覺得麻煩,我就嘗試著怎麼在Post請求中攜帶多個參數,由於接觸Asp .Net Core 的時間不夠長,所以這些都不是太瞭解, 今天寫下這篇文章做個記 ...
  • Denpendcy Injection 8.0新功能——KeyedService 本文只介紹 .NET Denpendcy Injection 8.0新功能——KeyedService,假定讀者已熟練使用之前版本的功能。 註冊帶Key的類 8.0之前,註冊一個類往往是AddSingleton<IFo ...
  • 一:背景 1. 講故事 前些天有位朋友找到我,說他的程式記憶體異常高,用 vs診斷工具 載入時間又太久,讓我幫忙看一下到底咋回事,截圖如下: 確實,如果dump文件超過 10G 之後,市面上那些可視化工具分析起來會讓你崩潰的,除了時間久之外這些工具大多也不是用懶載入的方式,比如 dotmemory 會 ...
  • 關於Unity 如何與Blazor Server結合 一、介紹 最近工作中有Unity與Blazor Server結合的需求,在網上找了一圈,發現這方面的資料比較少,特此寫下這篇記錄一下自己的實現過程,希望可以幫到有需要的朋友。(下方多圖預警) OS Version : windows 11 Uni ...
  • 習慣了 linux 命令的快捷操作,使用 winodws 的 shell 感覺效率非常低下,於是開始搜尋工具支持。 剛開始搜到的是 GnuWin32,但是它已經停止更新維護了,於是找到了 Cygwin。當然 Cygwin 還有其他功能,在此不做贅述 下載安裝 1. 登錄 Cygwin官網下載界面,進 ...
  • 1、首先你需要提前準備好jar包或者war包,並想辦法放入Linux環境(或虛擬機)中; 2、java項目的部署需要用到Tomcat或者Jetty,docker可以直接拉取他倆的鏡像,這裡以Tomcat為例: # : 後面需要加上war或者jar對應的Tomcat版本,最好加上, # 否則預設最新的 ...
  • 一、文檔的查看指令 1、tail指令 作用:查看一個文件的末n行 語法:#tail -n 文件的路徑 說明:-n可以不寫,不寫,預設表示10行。 案例:新建一個1.txt文檔,使用tail指令查看root/1.txt文件的末5行和末10行 tail -5 /root/1.txt tail /root ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...