備份數據的最終目的是爲了在出現一些意外狀況時,可以經過備份將數據還原,因此單單的備份數據每每是沒法知足還原時的需求的,因此在備份數據庫時,除了要備份數據自己,還要備份相關的數據庫環境,如配置文件,定時任務,sudo權限等等相關的信息。mysql
一、災難恢復:硬件故障,軟件故障,天然災害,黑客攻擊,誤操做sql
二、測試數據庫
一、備份須要多少時間(備份過程的時長)
二、能容忍最多丟失多少數據
三、恢復數據須要在多場時間內完成(恢復過程的時長)
四、須要恢復哪些數據
(1)作還原測試,用於測試備份的可用性
(2)還原演練服務器
五、備份負載架構
一、數據函數
二、二進制日誌,innodb的事務日誌工具
三、代碼(存儲過程、存儲函數、觸發器、時間調度器)性能
四、服務器的配置文件測試
一、徹底備份(全量備份)(Full Backup)spa
對某個時間點的全部數據進行一個徹底的備份,對應時間點的全部數據都被包含在徹底備份中。(備份整個數據集)
二、部分備份
只備份數據子集
三、增量備份
僅備份最近一次徹底備份或增量備份(若是有增量備份)以來變化的數據
四、差別備份
僅備份最近一次徹底備份以來變化的數據;
五、熱備
在數據庫正常運行的狀況下進行備份,讀寫操做都可執行(每每依賴於事務日誌)(難度最大)(myisam存儲引擎不支持熱備,Innodb存儲引擎支持熱備)
六、溫備
讀操做能夠、寫不行
七、冷備
讀寫操做均不能執行(停數據庫後進行文件拷貝便可)
八、物理備份
直接備份數據庫所對應的數據文件,與存儲引擎無關(cp),相對於邏輯備份來講,性能更強
九、邏輯備份
從數據庫中「導出」數據另存而進行備份
一、數據集:徹底+增量+二進制日誌|徹底+差別+二進制日誌
二、備份手段:物理,邏輯(物理備份恢復較快,邏輯備份恢復較慢)
對於備份較大的數據建議物理備份,對於較小的數據建議用邏輯備份。
一、cp命令或tar命令
在Linux中直接對數據文件進行備份,這種方式只適用於冷備的方式
二、經過select語句進行部分備份
經過select語句將表中的數據導出到指定文件中。
MariaDB [bi]> show variables like '%datadir%'; +---------------+-----------------+ | Variable_name | Value | +---------------+-----------------+ | datadir | /var/lib/mysql/ | +---------------+-----------------+ 1 row in set (0.00 sec) --注意:文件必須放在數據庫的工做目錄下 MariaDB [bi]> select * from test into outfile '/var/lib/mysql/test.backup'; Query OK, 6 rows affected (0.00 sec) --查看原來的數據 MariaDB [bi]> select * from test; +--------------+------+------+------+ | name | high | age | id | +--------------+------+------+------+ | 劉亦菲 | 179 | 32 | 3 | | 劉德華 | 180 | 40 | 5 | | 畢洪態 | 177 | 26 | 2 | | 漩渦鳴人 | NULL | NULL | NULL | | 胡歌 | 178 | 32 | 1 | | 謝霆鋒 | 182 | 33 | 6 | +--------------+------+------+------+ 6 rows in set (0.00 sec)
--刪除所有數據(或者建立一個和原表結構同樣的新表)
--不能夠恢復部分數據 MariaDB [bi]> delete from test where id in (1,2,3,5,6); MariaDB [bi]> delete from test where id is null;
--使用load data恢復數據 MariaDB [bi]> load data infile "/var/lib/mysql/test.backup" into table test;Query OK, 6 rows affected (0.01 sec) Records: 6 Deleted: 0 Skipped: 0 Warnings: 0 MariaDB [bi]> select * from test; +--------------+------+------+------+ | name | high | age | id | +--------------+------+------+------+ | 劉亦菲 | 179 | 32 | 3 | | 劉德華 | 180 | 40 | 5 | | 畢洪態 | 177 | 26 | 2 | | 漩渦鳴人 | NULL | NULL | NULL | | 胡歌 | 178 | 32 | 1 | | 謝霆鋒 | 182 | 33 | 6 | +--------------+------+------+------+ 6 rows in set (0.00 sec)
在使用select語句備份的同時,最好將表架構也備份一份,由於還原的時候能夠用到。
三、mysqldump+複製binlog:
mysqldump:徹底備份(部分備份)(邏輯備份工具)
複製binlog中指定時間範圍內的event:增量備份
mysqldump是mysql自帶的備份工具,它是一種邏輯備份工具,也就是說,它會將數據從數據庫中讀出,轉化爲對應的sql語句。
mysqldump可以實現徹底備份或部分備份
使用innodb表類型的表可以使用mysqldump進行熱備
使用myisam表類型的表只可以使用mysqldump進行溫備
若是數據量較小,能夠選擇使用mysqldump。
原理:
經過協議鏈接到mysql數據庫,將須要備份的數據查詢出來,將查詢出的數據轉換成對應的insert語句,還原這些數據時,只要執行這些insert語句便可將對應的數據還原。
優勢:
能夠直接使用文本處理工具處理對應的備份數據,由於備份數據已經被mysqldump轉換成了對應的insert語句,因此,咱們能夠藉助文件系統中的文本處理工具對備份數據進行直接處理。
缺點:
當數據爲浮點類型時,會出現精度丟失
它的備份過程屬於邏輯備份,其備份速度、恢復速度與物理備份工具相比較慢,並且mysqldump備份的過程是串行化的(mydumper可並行備份),不會並行的進行備份;當數據量較大時,其效率較低
四、lvm2快照+複製binlog:
lvm2快照:(作快照的時候不能有任何的數據寫入)(幾乎熱備(備份速度快))
lvm2快照:適用cp或者tar等作物理備份:徹底備份
複製binlog中指定時間範圍內的event:增量備份
五、xtrabackup|mariabackup:
由Percona提供的支持對InnoDB作熱備(物理備份)工具(開源免費的)
支持徹底備份、差別備份、增量備份、部分備份等功能