Backup &recovery備份和還原

備份類型(backup type)
物理和邏輯備份(Physical Versus Logical Backup)
        物理備份是指直接複製存儲數據庫內容的目錄和文件,這種類型的備份適用於出現問題時須要快速恢復的大型重要數據庫。
        邏輯備份保存以邏輯數據庫結構(create database、create table)和內容(insert 語句)表示的信息,也就是保存的是建立數據庫、建立表和插入數據的sql語句。這種類型的備份適用於較小數量的數據,能夠在其中編輯數據值或表結構,或者在不一樣的機器架構上從新建立數據。
物理備份特色以下:
(1)備份由數據庫目錄和文件副本組成,一般是MySQL整個或者部分數據目錄;
(2)物理備份比邏輯備份要快,由於它只是複製文件,並不須要作什麼轉化;
(3)比邏輯備份更緊湊或者壓縮性更好;
(4)由於備份速度和緊湊性對於繁忙、重要的數據庫很是重要,MySQL企業版執行物理備份;
(5)備份的粒度範圍從整個數據目錄的級別到各個文件的級別。這可能提供表級粒度,也可能不提供,這取決於存儲引擎。例如,InnoDB表能夠單獨存儲在一個文件中,也能夠與其餘InnoDB表共享文件存儲空間;每一個MyISAM表只對應於一組文件。
(6)除了數據庫以外,備份還能夠包括任何相關文件,如日誌或配置文件。
(7)以這種方式備分內存表中的數據比較困難,由於它們的內容並不存儲在磁盤上。
(8)備份只能移植到具備相同或相似硬件特徵的其餘機器上;
(9)能夠在MySQL服務器不運行時執行備份。若是服務器正在運行,則有必要執行適當的鎖定,以便服務器在備份期間不會更改數據庫內容。MySQL Enterprise Backup自動鎖定備份的表;
(10)物理備份工具包括用於InnoDB或任何其餘表的MySQL企業備份的mysqlbackup,或用於MyISAM表的文件系統級命令(如cp、scp、tar、rsync)。
邏輯備份特色以下:
(1)邏輯備份工具包括mysqldump程序和SELECT…INTO OUTFILE語句,適用於任何存儲引擎,甚至內存;
(2)在運行MySQL服務器時執行邏輯備份;
(3)以邏輯格式存儲的備份與機器無關,而且具備高度的可移植性;
(4)備份不包括日誌或配置文件,或不屬於數據庫的其餘與數據庫相關的文件;
(5)不管任何存儲引擎,備份和恢復粒度可用於服務器級別(全部數據庫)、數據庫級別(特定數據庫中的全部表)或表級別;
(6)備份的輸出比物理備份大,尤爲是以文本格式保存時;
(7)和物理備份相比,要慢些,由於服務器必須訪問數據庫信息並將其轉換爲邏輯格式。若是輸出寫在客戶端,服務器還必須將其發送到備份程序。
 
全量和增量備份(Full Versus Incremental Backups)
        全量備份是指某個時間點MySQL服務器管理的全部數據的備份,增量備份是指備份一個時間點到另外一個時間點變化的數據,全量備份和增量備份區別是很明顯的,第一次備份使用全量備份是必須的,可是每次都是全量備份,勢必浪費時間和磁盤空間,特別是數據庫變化很小的狀況下,此時使用增量備份是一個比較好的選擇。
實踐
mysqldump命令
        它是MySQL自帶的命令,先備份buffer中數據,而後再備份磁盤中的數據。生成的是一個包好sql語句的備份文件。下面分別以全庫,單個數據庫,單個表,表結構,表數據的備份爲例說明它的基本用法。
備份全庫
能夠以下備份全庫
mysqldump -uroot -proot --all-databases --single-transaction > 20190201-1325_all_backup.sql
-uroot:數據庫登陸用戶爲root;
-proot:數據庫登陸密碼root,爲了安全,建議使用-p,密碼在執行命令後輸入;
--all-databases:表示備份全庫;
--singe-trasanction:保證了mysqldump看到的數據是一致的,此時其餘事務對數據的修改,mysqldump是看不到的,其實在執行更名前,得到了全部數據庫中全部表上的一個全局讀鎖(read lock);
>:輸出符號;
20190201-1325_all_backup.sql:sql文件名,執行備份命令後,備份結果就保存在這個文件中,文件名中最好要包含備份時間、備份範圍、backup關鍵字等信息,例如文件表示備份時間是2019年2月1日下午1點25分,all表示文件包含的是全庫信息,backup表示這個文件時備份文件。

備份單個數據庫
以備份單個test數據庫爲例,命令以下:
mysqldump -uroot -proot --single-transaction test > 20190201-1325_test_backup.sql
恢復test數據庫的命令,以下:
mysql -uroot -proot test < 20190201-1325_test_backup.sql
---------------------
做者:leboop
來源:CSDN
原文:https://blog.csdn.net/L_15156024189/article/details/87521511
相關文章
相關標籤/搜索