天天看點

MySQL 資料庫的備份與恢複

一、MySQL 常見的備份方式

1. 直接拷貝資料庫檔案(實體拷貝)

2. 使用 mysqldump 工具備份

3. 使用 mysqlhotcopy 工具備份

4. 使用 mysql 的主從同步複制,實作資料實時同步備份

二、MySQL 實體資料檔案結構介紹

1. 日志檔案

  • 錯誤日志 err log
  • 二進制日志 binary log
  • 更新日志 update log
  • 查詢日志 query log
  • 慢查詢日志 slow query log
  • innodb 的 redo 日志

2. 資料檔案

>>>對于 myisam 來說:

  • 表結構資訊:.frm
  • 資料資訊:.myd
  • 資料索引資訊;.myi

>>>對于 Innodb 來說:

  • 獨享表空間:.ibd
  • 共享表空間:.ibdata

3. 系統檔案

  • 配置檔案:my.cnf
  • 程序檔案:xxx.pid
  • socket檔案:xxx.sock

4. replication 檔案

  • master.info:存儲在 slave 端目錄下,關于 master 和 slave 相關資訊
  • relay log:存儲 I/O 程序從 master 讀取的 bin-log 資訊,然後由 slave 端的 SQL 線程從該 binary log 中讀取解析過的日志資訊,轉化成 slave 所能執行的 query 語句
  • index:則是存放 binary log 的路徑,也就是目錄檔案

三、使用 mysqldump 備份與恢複

1. 備份原理

mysqldump 備份原理比較簡單,先查出需要備份的表結構,在文本檔案中生成一個 create 語句;然後将表中的所有資料記錄轉換成一條 insert 語句;通過這些語句就能夠建立表并插入資料。

2. 備份一個資料庫

基本文法:

>>> mysqldump -u username -p dbname table1 table2 ... > BackupName.sql      

執行個體說明:

mysqldump -u root -p test person > /tmp/backup.sql      

3. 備份多個資料庫

mysqldump -u username -p --databases dbname2 dbname2 > BackupName.sql      
mysqldump -u root -p --databases test mysql > /tmp/backup.sql      

4. 備份所有資料庫

mysqldump -u username -p -all-databases > BackupName.sql      
mysqldump -u -root -p -all-databases > /tmp/all.sql      

5. 資料恢複

mysql -u root -p [dbname] < backup.sql      
mysql -u root -p < /tmp/backup.sql      

四、直接複制資料庫目錄

MySQL 有一種非常簡單的備份方法,就是将 MySQL 中的資料庫檔案直接複制出來。這是最簡單,速度最快的方法。不過在此之前,要先将伺服器停止,這樣才可以保證在複制期間資料庫的資料不會發生變化。如果在複制資料庫的過程中還有資料寫入,就會造成資料不一緻。這種情況在開發環境可以,但是在生産環境中很難允許備份伺服器。

注意:這種方法不适用于 InnoDB 存儲引擎的表,而對于 MyISAM 存儲引擎的表很友善。同時,還原時 MySQL 的版本最好相同。

五、使用 mysqlhotcopy 快速備份

1. mysqlhotcopy 安裝

2. 文法和常用選項

3. 執行個體備份

4. 執行個體恢複

六、備份政策

待續。

---------- 本文結束 ----------