MySQL 資料的備份與恢復

2021-10-02 02:12:53 字數 2862 閱讀 7941

1、從物理與邏輯的角度

【 物理備份分為:離線備份(冷備份)和 聯機備份(熱備份)】

— 冷備份:是在關閉資料庫的時候進行

— 熱備份:資料庫處於執行狀態,依賴於資料庫的日誌檔案

2、從資料庫的備份策略角度

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

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

優點:只需備份差異

缺點:資料冗餘,占用空間率較大

優點:沒有重複資料,備份量不大,時間短

缺點:恢復麻煩,需要上次完全備份及完全備份之後所有的增量備份才能恢復,而且要對所有增量備份進行逐個反推恢復

1、mysqldump 命令 對單個庫進行完全備份

mysqldump -u 使用者名稱 -p [密碼] [選項] [資料庫名] > /備份路徑/備份檔案名
示例:

[root@localhost ~]# mysqldump -uroot -p ku > /opt/ku.sql
2、對多個庫進行完全備份
mysqldump -u 使用者名稱 -p [密碼] [選項] --databases 庫名1 [庫名2]... > /備份路徑/備份檔案名
示例:

[root@localhost ~]# mysqldump -uroot -p --databases ku mysql > /opt/ku_mysql.sql
3、對所有庫進行完全備份
mysqldump -u 使用者名稱 -p [密碼] [選項] --all-databases > /備份路徑/備份檔案名
示例:

[root@localhost ~]# mysqldump -uroot -p --opt --all-databases > /opt/all.sql
4、使用mysqldump 備份表
mysqldump -u 使用者名稱 -p [密碼] [選項] 資料庫名 表名 > /備份路徑/備份檔案名
示例:

[root@localhost ~]# mysqldump -uroot -p ku biao > /opt/ku_biao.sql
5、對某個表結構的備份
mysqldump -u 使用者名稱 -p [密碼] [選項] -d 資料庫名 表名 > /備份路徑/備份檔案名
示例:

[root@localhost ~]# mysqldump -uroot -p -d ku a > /opt/ku_a.sql
1、使用mysql 命令恢復資料
mysql -u 使用者名稱 -p [密碼] < 庫備份指令碼的路徑            『 < 表示匯入』
示例:

基於mysql 命令進行恢復:

[root@localhost ~]# mysql -uroot -p ku < /opt/ku.sql
2、恢復表

增量備份依賴二進位制日誌檔案,首先需要開啟二進位制日誌檔案: 進入/etc/my.cnf , 新增 log-bin=mysql-bin

[root@localhost ~]# vim /etc/my.cnf
新增資料 ——>進行完全備份 ——>錄入新的資料 ——>進行增量備份 ——>模擬故障 ——>恢復操作

mysqlbinlog [--no-defaults] 增量備份檔案 | mysql -u root -p
就是將某個起始時間的二級制日誌匯入資料庫中,從而跳過某個發生錯誤的時間點實現資料的恢復

mysqlbinlog --stop-position='操作id' 二進位制日誌 | mysql -u使用者名稱 -p密碼
[root@localhost data]# --stop-position='1131' /usr/local/mysql/data/mysql-bin.000002 | mysql -u root -p
可能會出現在乙個時間點裡既同時存在正確的操作又存在錯誤的操作,所以需要一種更為精確的恢復方式

(1) 從日誌開頭截止到某個時間點的恢復

mysqlbinlog [--no-defaults] --stop-datetime='年-月-日 小時:分鐘:秒' 二進位制日誌 | mysql -u 使用者名稱 -p 密碼
mysqlbinlog --no-defaults --stop-datetime='2020-01-09 17:56:36' /usr/local/mysql/data/mysql-bin.000002 | mysql -u root -p
(2)從某個時間點到日誌結尾的恢復

mysqlbinlog [--no-defaults] --start-datetime='年-月-日 小時:分鐘:秒' 二進位制日誌 | mysql -u 使用者名稱 -p 密碼
mysqlbinlog --no-defaults --start-datetime='2020-01-09 17:57:03' /usr/local/mysql/data/mysql-bin.000002 | mysql -u root -p
(3)從某個時間點到某個時間點的恢復

mysqlbinlog [--no-defaults] --start-datetime='年-月-日 小時:分鐘:秒' --stop-datetime='年-月-日 小時:分鐘:秒』 二進位制日誌| mysql -u使用者名稱 -p密碼

mysql 備份與恢復 MySQL 備份與恢復

1 檢視資料庫的資料儲存在哪個目錄下 shiyanlou mysql uroot e show variables like datadir variable name value datadir var lib mysql 2 備份資料的方法 select into outfile 檔名 或者 s...

mysql 備份與恢復 Mysql 備份與恢復

資料檔案一致性處理 在完全備份的情況下,檔案不是時間點一致的,因為進行快照的時間點不一樣。如果嘗 試在未prepare資料的情況下還原資料庫,雖然操作上支援恢復,但是在啟動的時候仍會 進行資料recovery。執行帶 prepare 選項的 mariabackup 命令會使資料檔案進行統一,達到資料...

MySQL資料備份與恢復

mysql命令列匯出資料庫 mysql命令列匯出資料庫 1,進入mysql目錄下的bin資料夾 cd mysql中到bin資料夾的目錄 如我輸入的命令列 cd c program files mysql mysql server 4.1 bin 或者直接將windows的環境變數path中新增該目錄...