首頁 > 軟體

一文學會Mysql資料庫備份與恢復

2022-05-31 14:03:13

資料庫備份的分類

物理備份:資料庫作業系統的物理檔案(如資料檔案,紀錄檔檔案等)的備份

物理備份的方法:

冷備份(離線備份):是在關閉資料庫時候進行的

熱備份(聯機備份):資料庫處於執行狀態,依賴於資料庫的紀錄檔檔案

溫備份:資料庫鎖定表格(不可寫入但可讀)的狀態下備份操作

邏輯備份:對資料庫邏輯元件(如:表等資料庫物件)的備份

從資料庫的備份策略角度,備份可分為

完全備份:每次對資料庫進行完整的備份

差異備份:備份自從上次完全備份之後被修改過的檔案

增量備份:只有在上次完全備份或者增量備份後被修改的檔案才會被備份

常見的備份方法

物理冷備:
備份時資料庫處於關閉狀態,直接打包資料庫檔案
備份速度快,恢復時也是最簡單的

專用備份工具mydump或mysqlhotcopy
mysqldump常用的邏輯備份工具
mysqlhotcopy僅擁有備份MyISAM或ARCHIVE表


啟用二進位制紀錄檔進行增量備份
進行增量備份,需要重新整理二進位制紀錄檔

第三方工具備份
免費的MySQL熱備份軟體Percona XtraBackup

Mysql完全備份

是對整個資料庫、資料庫結構和檔案結構的備份
儲存的是備份完成時刻的資料庫
是差異備份與增量備份的基礎

優點:備份與恢復操作簡單方便

缺點:資料存在大量的重複,佔用大量的備份空間,備份與恢復時間長

完全備份分類

物理冷備份與恢復:關閉MySQL資料庫,使用tar命令直接打包資料庫資料夾,直接替換現有MySQL目錄即可

mysqldump備份與恢復:MySQL自帶的備份工具,可方便實現對MySQL的備份,可以將指定的庫,表匯出為SQL指令碼,使用命令mysql匯入備份的資料

冷備份方法實現恢復資料庫

現在庫中有兩個表,退出資料口,關閉mysql服務

systemctl stop mysqld

進行壓縮

mkdir /backup

tar Jcvf /backup/mysql_alldata_$(date +%F).tar.xz /usr/local/mysql/data/

恢復資料庫

mkdir bak
mv /usr/local/mysql/data/ /bak/    ##模擬資料庫丟失
mkdir restore

tar Jxvf /backup/mysql_alldata_2022-02-12.tar.xz -C restore/

mysqldump備份與恢復

(1)完全備份一個或多個完整的庫(包括其中所有的表)

mysqldump -u root -p[密碼] --databases 庫名 > /備份路徑/備份檔名.sql

(2) 完全備份 mysql伺服器中所有的庫

mysqldump -u root -p[密碼] --all-databases >/備份路徑/備份檔名.sql

(3) 完全備份指定庫中的部分表

mysqldump -u root -p[密碼] 庫名 [表名1] [表名2] > /備份路徑/備份檔名.sql

##使用 -d 選項,說明只儲存資料庫的表結構
##不使用 -d 選項,說明表資料也進行備份

(4) 檢視備份檔案

grep -v "^--" /backup2/ky17_ky18.sql | grep -v "^/" | grep -v "^$"

Mysql完全恢復

(1) 恢復資料庫

(2) 恢復資料表

Mysql 紀錄檔管理

MySQL的紀錄檔預設儲存位置為/usr/ local/mysql/data

vim /etc/my.cnf

mysql -uroot -pabc123

Mysql增量備份

1.開啟二進位制紀錄檔功能

systemctl restart mysqld

2.每週凌晨兩點對資料庫或表進行完全備份

進資料庫寫入新的資料

再次生成新的二進位制紀錄檔檔案

檢視二進位制紀錄檔檔案的內容

Mysql增量恢復

1.一般恢復

模擬資料丟失

mysqlbinlog --no-defaults mysql-bin.000003 | mysql -u root -p

模擬丟失所有資料的恢復步驟

drop database kgc;
mysql -uroot -pabc123 < kgc_2022-02-13.sql 
mysqlbinlog --no-defaults mysql-bin.000003 | mysql -u root -p

斷點恢復

基於位置點恢復

先將二進位制檔案轉為txt檔案,檢視

模擬故障點

那隻恢復id=6 name=dc 的資料如何恢復

基於時間點恢復

僅恢復到 15:29:34 之前的資料 即不恢復 dc的資料

僅恢復到 15:29:34 之後的資料 即不恢復 dd的資料

如果恢復某條SQL語句之前的所有資料,就stop在這個語句的位置節點或時間點

如果恢復某條SQL語句以及之後的所有資料,就從這個語句的位置節點或時間點start

總結

到此這篇關於Mysql資料庫備份與恢復的文章就介紹到這了,更多相關Mysql備份與恢復內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com