程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql備份與恢復詳解

mysql備份與恢復詳解

編輯:MySQL綜合教程

MYSQL的備份有多少種,請簡要的描述:
數據庫分邏輯備份\物理備份
物理備份又分冷備和熱備

A.直接拷貝數據文件到安全地方進行保存
B.使用MYSQLHOSTCOPY備分數據
C.使用MYSQLDUMP備份數據
D.使用MYSQL的同步復制,實現數據實時數據同步備份

常用的邏輯備份主要就是兩種:一種是將數據生成為可以完全重現當前數據庫中的數據的insert語句,另一種是將數據通過邏輯備份軟件,將數據庫表的數據以特定分隔符進行分割後記錄在文本中。

對於第一種生成insert語句來說我們可以直接使用mysql自帶的工具mysqldump來完成。這種方式不好之處在於可能導致數據的不一致,或是不完整。解決辦法:一個是通過在數據庫系統中加入寫入鎖,只提供數據庫的查詢服務;第二種是對於支持事務的存儲引擎來說,INNODB BDB可以通過將整個備份過程控制在一個事務中,來達到備份數據的一致性和完整性;並且可以不用影響到數據庫的正常運行。
恢復方式則是通過mysql<backup.sql直接運行的。
第二種直接生成數據格式。占用的空間小,數據格式清晰。可是沒有數據庫結構的腳本。不容易控制
實現方式:通過select******* to outfile from***命令來實現。恢復方式就是通過,load data infile和mysqlimport命令來做。

這一過程相當的復雜需要實時的進行恢復測試,保證備份數據是可用的
數據庫的物理備份,主要的對象是數據庫的物理數據文件,日志文件以及配置文件等。

物理數據文件有哪些呢?
一是日志文件6大類:錯誤日志error Log、二進制日志binary Log、更新日志 update log、查詢日志 query log、慢查詢日志 slow query log、innodb的redo日志。 二是數據文件?對於myisam來說的話,.frm表結構信息.myd數據信息.myi數據的索引信息。對於Innodb來說的話.ibd文件(獨享表空間)和.ibdata(共享表空間)文件。 三是replication文件?master.info存儲在slave端的數據目錄下,存放了slave和master的相關信息,relay log和 relay log index主要存儲了I/O進程從Master端讀取到的binary log信息,然後由slave端的SQL線程從該binary log中讀取解析過的日志信息,轉化成master所能執行的query語句。index則是存放binarylog的路徑也就是目錄文件。 四是系統文件?如my.cnf、pid文件是mysqld應用程序中的一個進程文件存放自己的進程id還有就是socket文件它只有在linux下才有的,可以不通過tcp/ip網絡協議直接連接mysql
如果是做冷備的話,直接復制所有的數據文件和日志文件到備份集存放的地方,
熱備的方法針對不多的數據庫有不同的方案 對於myisam存儲引擎來說,做法就是給數據庫表加鎖來阻止寫操作,可以直接復制物理文件,或者也可以通過mysql專門的mysqlhotcopy(原理就是現鎖住表,然後進行操作)程序來完成相應的備份任務。 flush tables with read lock cp -R test /tmp/backup/test unlock tables;
innodb數據庫引擎來說,有一款商業軟件ibbackup,在線物理備份功能。還有一款開源的工具xtrabackup, 如果在備份過程中,把INNODB數據文件備份完成後,會鎖住整個庫,並開始復制MYISAM等非事務引擎的數據和.frm;所以如果你擁有比較多的MYISAM表,鎖庫的時候會持續很長。如果是在主庫上運行,千萬注意。
同樣也只能通過xtrabackup進行增量的備份,其實這一工具只是備份innobd的日志信息。

4 xtrabackup/ibbackup
xtrabackup --backup --datadir=/var/lib/mysql/ --target-
dir=/data/backups/mysql/

xtrabackup --backup  --defaults-file=/etc/my.cnf --target-
dir=/data/backups/mysql/
mysql的備份方式

1.mysqldump
效率比較低,備份和還原的速度都很慢,任何數據插入和更新操作都會被掛起

2.mysqlhotcopy
mysqlhotcopy 是專門針對myisam 數據表進行備份,備份的過程中,任何數據插入和更新操作都會被掛起

3.准備一台從服務器,專門做備份(master-slave方式)

4.xtrabackup 是 percona 的一個開源項目,可熱備份innodb ,XtraDB,MyISAM(會鎖表)
 
Xtrabackup有兩個主要的工具:xtrabackup、innobackupex
xtrabackup只能備份InnoDB和XtraDB兩種數據表,而不能備份MyISAM數據表
innobackupex-1.5.1則封裝了xtrabackup,是一個腳本封裝,所以能同時備份處理innodb和myisam,但在處理myisam時需要加一個讀鎖
Øxtra備份原理
記住開始時候的LSN號,然後開始拷備文件,同時運
行一個後台進程監視重做日志,並將變化拷備下來到
xtrabackup_logfile。

innobackupex可以備份myisam表和frm文件。當
xtrabackup結束後,執行flush tables with read lock,避
免數據更改,然後刷新所有myisam表到磁盤。拷備結
束後,釋放鎖。

mysqlbinlog也是一個恢復工具,是基於時間點來處理二進制文件的

Ø備份:直接拷備

Ø還原:
ü時間點還原:mysqlbinlog --stop-date="2005-04-20 9:59:59"
/var/log/mysql/bin.123456 | mysql -u root –pmypwd

mysqlbinlog --start-date="2005-04-20 10:01:00"
/var/log/mysql/bin.123456| mysql -u root –pmypwd

Ø日志點還原:
mysqlbinlog --stop-position="368312" /var/log/mysql/bin.123456 \
| mysql -u root -pmypwd
mysqlbinlog --start-position="368315" /var/log/mysql/bin.123456 \
| mysql -u root -pmypwd \

LVM是 Logical Volume Manager(邏輯卷管理)的簡寫,它是Linux環境下對磁盤分區進行管理的一種機制。
LSN定義:

日志序號
日志序號 (LSN) 標識特定日志文件記錄在日志文件中的位置。

LSN 由 DB2® 產品中的許多組件用來維護數據庫一致性和完整性。除其他作用外,LSN 還對於分區數據庫環境中的落實和回滾操作、崩潰和前滾恢復以及數據庫操作同步起非常重要的作用。

日志文件中 LSN 的增長率與數據庫活動直接相關聯。也就是說,隨著事務發生並且條目被寫入日志文件,LSN 會不斷增大。數據庫中的活動越多,LSN 增長得越快。

日志序號的上限

在 DB2 V9.5 和較早版本中,日志序號 (LSN) 是 6 字節數字。從 FP3 開始,LSN 的范圍在 0x0000 0000 0000(首次創建數據庫時)到 0xFFFF 0000 0000(約 256 太字節)之間。在 FP3 之前,上限為 0xFFFF FFFF FFFF。隨著記錄被添加到日志文件中,LSN 在數據庫生命期不斷增長。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved