備份資料的最終目的是為了在出現一些意外情況時,能夠通過備份將資料還原,所以單單的備份資料往往是無法滿足還原時的需求的,所以在備份資料庫時,除了要備份資料本身,還要備份相關的資料庫環境,如配置檔案,定時任務,sudo許可權等等相關的資訊。
1、災難恢復:硬體故障,軟體故障,自然災害,黑客攻擊,誤操作
2、測試
1、備份需要多少時間(備份過程的時長)
2、能容忍最多丟失多少資料
3、恢復資料需要在多場時間內完成(恢復過程的時長)
4、需要恢復哪些資料
(1)做還原測試,用於測試備份的可用性
(2)還原演練
5、備份負載
1、資料
2、二進位制日誌,innodb的事務日誌
3、**(儲存過程、儲存函式、觸發器、時間排程器)
4、伺服器的配置檔案
1、完全備份(全量備份)(full backup)
對某個時間點的所有資料進行乙個完全的備份,對應時間點的所有資料都被包含在完全備份中。(備份整個資料集)
2、部分備份
只備份資料子集
3、增量備份
僅備份最近一次完全備份或增量備份(如果有增量備份)以來變化的資料
4、差異備份
僅備份最近一次完全備份以來變化的資料;
5、熱備
在資料庫正常執行的情況下進行備份,讀寫操作均可執行(往往依賴於事務日誌)(難度最大)(myisam儲存引擎不支援熱備,innodb儲存引擎支援熱備)
6、溫備
讀操作可以、寫不行
7、冷備
讀寫操作均不能執行(停資料庫後進行檔案拷貝即可)
8、物理備份
直接備份資料庫所對應的資料檔案,與儲存引擎無關(cp),相對於邏輯備份來說,效能更強
9、邏輯備份
從資料庫中「匯出」資料另存而進行備份
1、資料集:完全+增量+二進位制日誌|完全+差異+二進位制日誌
2、備份手段:物理,邏輯(物理備份恢復較快,邏輯備份恢復較慢)
對於備份較大的資料建議物理備份,對於較小的資料建議用邏輯備份。
1、cp命令或tar命令
在linux中直接對資料檔案進行備份,這種方式只適用於冷備的方式
2、通過select語句進行部分備份
通過select語句將表中的資料匯出到指定檔案中。
mariadb [bi]> show variables like '%datadir%';在使用select語句備份的同時,最好將表架構也備份乙份,因為還原的時候可以用到。+---------------+-----------------+
| 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)
3、mysqldump+複製binlog:
mysqldump:完全備份(部分備份)(邏輯備份工具)
複製binlog中指定時間範圍內的event:增量備份
mysqldump是mysql自帶的備份工具,它是一種邏輯備份工具,也就是說,它會將資料從資料庫中讀出,轉化為對應的sql語句。
mysqldump能夠實現完全備份或部分備份
使用innodb表型別的表能夠使用mysqldump進行熱備
使用myisam表型別的表只能夠使用mysqldump進行溫備
如果資料量較小,可以選擇使用mysqldump。
原理:通過協議連線到mysql資料庫,將需要備份的資料查詢出來,將查詢出的資料轉換成對應的insert語句,還原這些資料時,只要執行這些insert語句即可將對應的資料還原。
優點:可以直接使用文字處理工具處理對應的備份資料,因為備份資料已經被mysqldump轉換成了對應的insert語句,所以,我們可以借助檔案系統中的文字處理工具對備份資料進行直接處理。
缺點:當資料為浮點型別時,會出現精度丟失
它的備份過程屬於邏輯備份,其備份速度、恢復速度與物理備份工具相比較慢,而且mysqldump備份的過程是序列化的(mydumper可並行備份),不會並行的進行備份;當資料量較大時,其效率較低
4、lvm2快照+複製binlog:
lvm2快照:(做快照的時候不能有任何的資料寫入)(幾乎熱備(備份速度快))
lvm2快照:適用cp或者tar等做物理備份:完全備份
複製binlog中指定時間範圍內的event:增量備份
5、xtrabackup|mariabackup:
由percona提供的支援對innodb做熱備(物理備份)工具(開源免費的)
支援完全備份、差異備份、增量備份、部分備份等功能
Oracle和MySQL資料庫的備份與恢復
oracle 最簡單的備份與恢復的例子 匯出 exp scott tiger orcl file c wolfetest export scott data.dmp 匯入 imp scott tiger orcl file c wolfetest export scott data.dmp 注意 在...
linux系統下MySQL資料庫備份與恢復
備份 mysqldump u username p databasename filename.sql 自行設定sql檔名 備份所有資料庫 mysqldump u username p all databases filename.sql 如果需要壓縮匯出的sql檔案 mysqldump u use...
Mysql之資料庫備份
1.手動拷貝備份 mysql資料庫的檔案儲存在目錄 var lib mysql中,資料庫為每個庫建立乙個目錄,所有的資料庫檔案都在這些目錄中.root linuxhero mysql ls root linuxhero mysql servcie mysqld stop 先停止資料庫 bbs mys...