mysql基礎之資料庫備份和恢復的基礎知識

2022-08-29 04:15:13 字數 4156 閱讀 6763

備份資料的最終目的是為了在出現一些意外情況時,能夠通過備份將資料還原,所以單單的備份資料往往是無法滿足還原時的需求的,所以在備份資料庫時,除了要備份資料本身,還要備份相關的資料庫環境,如配置檔案,定時任務,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%';

+---------------+-----------------+

| 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語句備份的同時,最好將表架構也備份乙份,因為還原的時候可以用到。

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...