MySQL數據庫的完全備份與恢復


前言

在生產環境中,數據的安全性是至關重要的,任何數據的丟失都可能產生嚴重的后果,正確的數據庫操作是實際環境下不可缺少的。

一、數據庫備份的分類

1.1 從物理與邏輯的角度,備份的分類

  • 物理備份:對數據庫操作系統的物理文件(如數據文件、日志文件等)的備份

    • 數據庫在物理層面分成了三類文件,每一個文件的名字以表的名字開始,擴展名指出文件類型

      • 表結構文件:.frm文件存儲表定義
      • 表數據文件的擴展名為.MYD( MYData)
      • 表索引文件的擴展名是.MYI( MYIndex)
    • 物理備份又可以分為脫機備份(冷備份)和聯機備份(熱備份)
    • 冷備份:是在關閉數據庫的時候進行的
    • 熱備份:數據庫處於運行狀態,這種備份方法依賴於數據庫的日志文件
  • 邏輯備份:對數據庫邏輯組件(如表等數據庫對象)的備份

1.2 從數據庫的備份策略角度,備份的分類

  • 完全備份:每次對數據進行完整的備份
  • 差異備份:備份那些自從上次完全備份之后被修改過的文件
  • 增量備份:只有那些在上次完全備份或者增量備份后被修改的文件才會被備份

1.3 常見的備份方法

  • 物理冷備份
    • tar命令
  • 專用備份工具
    • mysqldump
    • Mysqlhotcopy
  • 二進制日志
  • 第三方工具備份
    • Percona XtraBackup
    • Xtrabackup、innobackupex、xbstream

二、MySQL的完全備份

2.1 什么是完全備份?

  • 完全備份是對整個數據庫的備份、數據庫結構和文件結構的備份
  • 完全備份保存的是備份完成時刻的數據庫
  • 完全備份是增量備份和差異備份的基礎

2.2 完全備份的優缺點

  • 優點:
  • 安全性高
  • 備份與恢復操作簡單方便
  • 缺點
  • 數據存在大量的重復
  • 占用大量的備份空間,空間利用率低
  • 備份與恢復時間長

2.3 mysqldump備份庫

2.3.1 有什么方式可以備份MySQL數據庫?

  • 直接打包數據庫文件夾,如/usr/local/mysql/data
  • 如:tar jcvf /opt/mysql-$(date +%F).tar.gz /usr/local/mysql/data
  • 使用專用備份工具 mysqldump

2.3.2 什么是mysqldump?

  • mysqldump命令是MySQLI自帶的備份工具,相當方便對MySQL進行備份
  • 通過該命令工具可以將指定的庫、表或全部的庫導出為SQL腳本,在需要恢復時可進行數據恢復

2.3.3 如何使用mysqldump命令備份庫?

  • 備份單個庫
1 語法:
2 mysqldump -u 用戶名 -p [密碼] [選項] [庫名] > /備份路徑/備份文件名
3 例如:
4 mysqldump -u root -p abc > /backup/abc.sql
  • 備份多個庫
1 語法:
2 mysqldump -u 用戶名 -p [密碼] [選項] --databases 庫名1 [庫名2] ...  > /備份路徑/備份文件名
3 例如:
4 mysqldump -u root -p --databases ab1 ab2 > /backup/ab1-ab2.sql
  • 對所有庫完全備份
1 語法:
2 mysqldump -u 用戶名 -p [密碼] [選項] --all-databases > /備份路徑/備份文件名
3 例如:
4 mysqldump -u root -p --opt --all-databases > /backup/ku.sql

2.3.4 如何使用mysqldump命令備份表?

  • 在實際生產環境中,存在對某個特定表的維護操作,此時 mysqldump同樣發揮重大作用

  • 使用 mysqldump備份表的操作

1 語法
2 mysqldump -u 用戶名 -p [密碼] [選項] 數據庫名 表名 > /備份路徑/備份文件名
3 例如
4 mysqldump -u root -p abc school > /backup/abc-school.sql
  • 使用 mysqldump備份表的結構
1 mysqldump -u 用戶名 -p [密碼] [選項] -d 數據庫名 表名 > /備份路徑/備份文件名
2 例如
3 mysqldump -u root -p -d abc school > /backup/abc-school.sql

三、如何恢復數據庫和表?

3.1 數據恢復的兩種方法

  • 使用 mysqldump命令導出的SQL備份腳本,在進行數據恢復時可使用以下方法導入
    • source命令
    • mysql命令

3.2 如何使用source命令恢復數據庫?

  • 使用 source恢復數據庫的步驟

    • 登錄到 MySQL數據庫
    • 執行 source備份sql腳本的路徑(絕對路徑)
1 mysql > source /backup/all-data.sql
2 '//source命令在mysql庫中使用'

3.3 如何使用mysql命令恢復數據庫?

3.3.1 使用 mysql恢復數據庫

 

1 語法:
2 mysql -u 用戶名 -p [密碼] < 庫備份腳本的路徑
3 '//此處用了導入<符號,而不是導出>符號'
4 例如
5 mysql -u root -p < /backup/all-data.sql

 

3.4 如何恢復表

  • 恢復表時同樣可以使用 source或者mysql命令進行

  • source恢復表的操作與恢復庫的操作相同

  • 當備份文件中只包含表的備份,而不包括創建庫的語句時,必須指定庫名,且目標庫必須存在

1 語法
2 mysql -u 用戶名 -p [密碼] < 表備份腳本的路徑
3 例如
4 mysql -u root -p mysql < /backup/abc-scholl.sql

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM