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 lockcp -R test /tmp/backup/testunlock 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 在資料庫生命期不斷增長。