mysql 開發進階篇系列 42 邏輯備份與恢復

qq_42606051發表於2018-09-22

一.概述

         在作何資料庫裡,備份與恢復都是非常重要的。好的備份方法和備份策略將會使得資料庫中的資料更加高效和安全。對於DBA來說,進行備份或恢復操作時要考慮的因素大概有如下:

(1) 確定要備份的表的儲存引擎是事務型(innodb)還是非事務型。兩種不同的儲存引擎備份方式在處理資料一致性方面是不太一樣。
(2) 確定使用全備份還是增量備份。增量備份是備份每天的增量日誌,恢復時需要全備份加所有增量備份。這裡與sql server的完整備份+日誌備份或差異備份有點類似。
(3) 可以考慮複製方法來做異地備份。但複製不能代替備份,因為有可能發生誤操作。
(4) 要定期備份。
(5) 確保mysql的log -bin開啟,才能實現完整恢復,或基於時間的恢復,或基於位置的恢復。
(6) 經常做備份恢復測試,確保備份是有效的,並且可以恢復的。
(7) mysql與sqlserver在備份上很大區別的概念是mysql可以基於表備份,而sql server基於庫備份。

 

二. 邏輯備份和恢復

  在mysql中,邏輯備份最大的優點是對於各種儲存引擎,都可以用同樣的訪求來備份。而物理備份則不同,不同儲存引擎有著不同的備份方法。 因此對於不同儲存引擎混全的資料庫,用邏輯備份會簡單一些。

  2.1 邏輯備份
    mysql邏輯備份是將資料庫中的資料備份為一個文字檔案。可以被檢視和編輯。在mysql中,使用mysqldump工具來完成邏輯備份。在前面章節"mysql 開發進階篇系列 35 工具篇 "中有講到該匯出工具的用法。

  2.2下面簡演示一個備份與恢復的例子

  -- 檢視當前最新日誌編號
  SHOW MASTER STATUS

        

 -- 備份test庫,庫中testbackup表有6條資料
 SELECT * FROM testbackup

        

 -- 將test庫備份為test.dmp檔案 -F備份後生成新日誌
 [root@hsr data]# pwd
  /usr/local/mysql/data
  [root@hsr data]# mysqldump -uroot -p --single-transaction -F test > test.dmp
  Enter password:     

  備份後檢視如下圖所示:
        

  備份後檢視最新日誌編號(備份成功後生成了新的日誌序號)
        

 -- 誤操作
 DELETE FROM testbackup WHERE id=6
 -- 檢視binlog日誌,裡面有誤運算元據,需要在my.cnf中設定binlog_rows_query_log_events=1
 SHOW BINLOG EVENTS IN 'mysql-bin.000038';

        

 -- 還原test.dmp檔案
 [root@hsr data]# mysql -uroot -p test < test.dmp
 Enter password:
 -- 在檢視資料,此時資料已還原。
 SELECT * FROM testbackup

        

  總結:在還原資料時有一個問題是,如果線上還原生產資料庫,那自備份以後,使用者操作的資料就會都要丟失。二種方法:(1)是還原一個副本,從副本中獲取誤操作的資料。(2) 線上還原,全備之後到誤操作時刻之間,使用者寫入的資料在binlog中,需要恢復出來。

來源:https://www.cnblogs.com/MrHSR/p/9647699.html

鄭州看婦科哪裡比較好

鄭州人流醫院

鄭州婦科哪個好

鄭州無痛人流多少錢

相關文章