mysql學習之數據備份與恢復

来源:http://www.cnblogs.com/jalja/archive/2017/02/06/6370607.html
-Advertisement-
Play Games

mysqldump命令的工作原理:它先查出需要備份的表的結構,再在文本文件中生成一個CREATE語句。然後,將表中的所有記錄轉換成一條INSERT語句。然後通過這些語句,就能夠創建表並插入數據。 ...


該文使用mysql5.5 centos6.5 64位(本人使用rpm安裝mysql,資料庫的安裝目錄預設)

一、數據備份註意事項

讀鎖問題:資料庫(或者某個表)一旦進行讀鎖操作則影響資料庫的寫操作所以此時不能對資料庫進行寫操作。之所以在數據備份的時候進行讀鎖操作是為了保證備份數據的完整性一致性,在數據備份完成後會自動進行解鎖。

更新日誌問題:每次備份數據的時候新生成一個日誌文件,這樣資料庫在備份一段時間後突然崩潰可以通過該bin-log日誌還原該時間段的數據。數據恢復的步驟:恢復備份的數據+還原最新bin-log日誌中的數據

二、使用mysqldump進行書籍備份

mysqldump:命令將資料庫中的數據備份成一個文本文件。表的結構和表中的數據將存儲在生成的文本文件中。

mysqldump命令的工作原理:它先查出需要備份的表的結構,再在文本文件中生成一個CREATE語句。然後,將表中的所有記錄轉換成一條INSERT語句。然後通過這些語句,就能夠創建表並插入數據。

 

將test資料庫備份到/tmp/mysql_back/目錄下

 [root@localhost tmp]# mysqldump -uroot -p111111 test -l -F > '/tmp/mysql_back/test.sql';

參數解讀:

1、mysqldump mysql數據備份的命令

2、-uroot -p111111  用戶名密碼

3、test:要備份的資料庫名

4、-l:進行讀鎖控制

5、-F:生成新日誌文件

執行該語句後會發現在 /var/lib/mysql 目錄下會生成一個新的bin-log日誌 mysql-bin.000002

6、/tmp/mysql_back/test.sql :生成備份文件的位置及名稱

三、數據恢復

1、備份數據的恢復:

  [root@localhost tmp]# mysql -uroot -p111111 test -v -f</tmp/mysql_back/test.sql

  -v:查看導入的詳細信息

  -f:導入過程中遇到錯誤時可以skip過,繼續執行下麵的語句。

2、bin-log日誌中數據的還原:

  該日誌在/var/lib/mysql下mysql-bin.000002日誌中所有的記錄

  [root@localhost mysql]# mysqlbinlog --no-defaults mysql-bin.000002 |mysql -uroot -p111111 test;

3、還原bin-log日誌中指定位置的數據

通過 position位置還原數據

BEGIN
/*!*/;
# at 175
#170206 22:55:48 server id 1  end_log_pos 263     Query    thread_id=17    exec_time=0    error_code=0
use `test`/*!*/;
SET TIMESTAMP=1486392948/*!*/;
insert into t1 values(10)
/*!*/;
# at 263
#170206 22:55:48 server id 1  end_log_pos 290     Xid = 178
COMMIT/*!*/;
# at 290
#170206 22:55:54 server id 1  end_log_pos 358     Query    thread_id=17    exec_time=0    error_code=0
SET TIMESTAMP=1486392954/*!*/;
BEGIN
/*!*/;
# at 358
#170206 22:55:54 server id 1  end_log_pos 446     Query    thread_id=17    exec_time=0    error_code=0
SET TIMESTAMP=1486392954/*!*/;
insert into t1 values(12)
/*!*/;
# at 446
#170206 22:55:54 server id 1  end_log_pos 473     Xid = 179
COMMIT/*!*/;
# at 473
#170206 22:56:42 server id 1  end_log_pos 547     Query    thread_id=17    exec_time=0    error_code=0
SET TIMESTAMP=1486393002/*!*/;
truncate t1

還原該bin-log日誌中position 位置在 172,473 中的數據(end_log_pos)

[root@localhost mysql]# mysqlbinlog --no-defaults mysql-bin.000002 --start-position="175" --stop-position="473"|mysql -uroot -p111111 test;

4、還原bin-log日誌中指定時間段的數據

格式:將3中即可

--start-position="175"  替換為 --start-date="2016-12-30 21:30:34"

--stop-position="473" 替換為 --stop-date="2016-12-30 23:30:34"


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

-Advertisement-
Play Games
更多相關文章
  • 使用Elastic Search分析器,集成結巴分詞插件,並同時支持同義詞、字元映射等功能。 ...
  • 當 sp_executesql 或 EXECUTE 語句執行字元串時,字元串將作為它的自包含批處理執行。SQL Server 會將字元串中的一個或多個 Transact-SQL 語句編譯為獨立於批處理(包含 sp_executesql 或 EXECUTE 語句)執行計劃的執行計劃。 跟許可權有什麼關係 ...
  • 1、 " 插入語句 " 1.1、 "INSERT" 1.2、 "INSERT ALL" 2、 " 刪除語句 " 2.1、 "DELETE" 2.2、 "TRUNCATE" 3、 " 更新語句 " 3.1、 "UPDATE" 3.2、 "帶子查詢的 UPDATE" 3.3、 "一次更新多個欄位的 UP ...
  • 遠程連接MySQL資料庫時,陸陸續續遇到了一些雜七雜八的問題,相信很多人也曾經遇到過這類問題,下麵總結歸納在下麵,方便以後直接查找。 1:出現ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (111) [r... ...
  • 游標允許應用程式對查詢語句select 返回的行結果集中每一行進行相同或不同的操作,而不是一次對整個結果集進行同一種操作; 它還提供對基於游標位置而對錶中數據進行刪除或更新的能力 但是 ,處理大數據量時,效率低下,占用記憶體大 ;能不用儘量不用 例子 declare @id varchar(50) d ...
  • 寫在前面:索引對查詢的速度有著至關重要的影響,理解索引也是進行資料庫性能調優的起點。考慮如下情況,假設資料庫中一個表有10^6條記錄,DBMS的頁面大小為4K,並存儲100條記錄。如果沒有索引,查詢將對整個表進行掃描,最壞的情況下,如果所有數據頁都不在記憶體,需要讀取10^4個頁面,如果這10^4個頁 ...
  • 檢測PHP-SDK的運行條件(查看是否支持XunSearch) $prefix/sdk/php/util/RequiredCheck.php $prefix #替換成你的安裝目錄 使用 XunSearch(訊搜)有很多種使用方法 和 更新索引的方法; 搜索語法• 查詢語句和流行的搜索引擎相似,通過空 ...
  • 這是我之前整理的InfluxDB安裝及配置的筆記,這裡記錄下,也方便我以後查閱。 環境: CentOS6.5_x64 InfluxDB版本:1.1.0 一、安裝 1、二進位安裝 這裡以centos6.5為例進行安裝: 其它環境可以參考influxdb官方文檔: https://www.influxd ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...