Mariadb數(shù)據(jù)庫的備份與恢復(fù)過程詳細(xì)介紹
一、前提條件:二進(jìn)制日志配置
作用
用于數(shù)據(jù)庫恢復(fù)(時(shí)間點(diǎn)恢復(fù))
?建議?:單獨(dú)存儲(chǔ)路徑,與數(shù)據(jù)文件分離
啟用步驟
效果# 編輯配置文件 vim /etc/my.cnf # 添加內(nèi)容 [mysqld] log_bin=/path/to/binlogs/bin-log # 自定義路徑和文件名前綴
效果
日志文件:
/path/to/binlogs/bin-log.000001索引文件:
/path/to/binlogs/bin-log.index
二、mysqldump 備份恢復(fù)
特性?
邏輯備份工具,支持所有存儲(chǔ)引擎
支持溫備(InnoDB 可熱備)
支持完全/部分備份,增量備份需結(jié)合 binlog
備份與還原場景
| 場景? | ?備份命令? | ?還原命令? | ?關(guān)鍵說明? |
|---|---|---|---|
| 單庫或多表(不備份庫定義) | mysqldump -uroot -p db1 [tb1] > dump.sql | mysql db1 < dump.sql | ?庫必須已存在? |
| 單庫或多庫(含庫定義) | mysqldump -uroot -p -B db1 [db2] > dump.sql | mysql < dump.sql | 自動(dòng)創(chuàng)建庫 |
| 所有數(shù)據(jù)庫(不含系統(tǒng)庫) | mysqldump -uroot -p -A > alldb.sql | mysql < alldb.sql | 排除 performance_schema/information_schema |
還原優(yōu)化操作
-- 臨時(shí)關(guān)閉二進(jìn)制日志記錄(避免記錄恢復(fù)操作) SET sql_log_bin = OFF; -- 清除歷史 binlog(可選) RESET MASTER; -- 導(dǎo)入備份文件 SOURCE /path/to/alldb.sql; -- 重新開啟二進(jìn)制日志 SET sql_log_bin = ON;
三、mysqldump關(guān)鍵參數(shù)詳解
--master-data=[=#] | ?必須開啟 binlog? |
| 1:所備份的數(shù)據(jù)之前加一條記錄為CHANGE MASTER TO語句,非注釋,不指定#,默認(rèn)為1 | |
| 2:記錄為注釋的CHANGE MASTER TO語句此選項(xiàng)會(huì)自動(dòng)關(guān)閉–lock-tables功能,自動(dòng)打開-x | –lock-all-tables功能(除非開啟–single-transaction) |
-A / --all-databases | 備份所有數(shù)據(jù)庫,含create database |
-B / --databases db_name… | 指定備份的數(shù)據(jù)庫,包括create database語句 |
-E / --events | 備份相關(guān)的所有event scheduler 計(jì)劃任務(wù) |
-R / --routines | 備份所有存儲(chǔ)過程和自定義函數(shù) |
--triggers | 備份表相關(guān)觸發(fā)器,默認(rèn)啟用,用–skip-triggers,不備份觸發(fā)器 |
--default-character-set=utf8 | 指定字符集 |
-F / --flush-logs | 備份前滾動(dòng)日志,鎖定表完成后,執(zhí)行flush logs命令,生成新的二進(jìn)制日志文件,配合-A 或 -B 選項(xiàng)時(shí),會(huì)導(dǎo)致刷新多次數(shù)據(jù)庫。建議在同一時(shí)刻執(zhí)行轉(zhuǎn)儲(chǔ)和日志刷新,可通過和–single-transaction或-x,–master-data 一起使用實(shí)現(xiàn),此時(shí)只刷新一次日志 |
--compact | 去掉注釋,適合調(diào)試,生產(chǎn)不使用 |
-d / --no-data | 只備份表結(jié)構(gòu) |
-t / --no-create-info | 只備份數(shù)據(jù),不備份create table |
-n / --no-create-db | 不備份create database,可被-A或-B覆蓋 |
--flush-privileges | 刷新權(quán)限,備份mysql或相關(guān)時(shí)需要使用 |
-f / --force | 忽略SQL錯(cuò)誤,繼續(xù)執(zhí)行 |
--hex-blob | 使用十六進(jìn)制符號(hào)轉(zhuǎn)儲(chǔ)二進(jìn)制列,當(dāng)有包括BINARY,VARBINARY,BLOB,BIT的數(shù)據(jù)類型的列時(shí)使用,避免亂碼 |
-q / --quick | 不緩存查詢,直接輸出,加快備份速度 |
??
--master-data會(huì)自動(dòng)啟用--lock-all-tables(除非搭配--single-transaction)
通過備份文件和二進(jìn)制文件恢復(fù)數(shù)據(jù)庫到當(dāng)前裝填
通常數(shù)據(jù)庫的備份都發(fā)生在凌晨用戶訪問量較少的時(shí)候進(jìn)行,例如我們?cè)诹璩?點(diǎn)對(duì)數(shù)據(jù)庫進(jìn)行了完全備份,但是在上午11點(diǎn)的時(shí)候,因?yàn)楣芾韱T的誤操作,到時(shí)候數(shù)據(jù)庫某張表被刪除,如果我們用數(shù)據(jù)庫的完整備份的話,就只能恢復(fù)到凌晨3點(diǎn),那么要恢復(fù)3點(diǎn)到11點(diǎn)這段時(shí)間的數(shù)據(jù),就需要用到二進(jìn)制日志
前提:在進(jìn)行數(shù)據(jù)庫備份的時(shí)候加了–master-data=[1|2]選項(xiàng),記錄了數(shù)據(jù)庫備份時(shí),日志的位置
四、Binlog + 全備恢復(fù)流程
場景模擬?
凌晨 3:00 進(jìn)行全備
上午 11:00 誤刪除數(shù)據(jù)表
?目標(biāo)?:恢復(fù)到誤刪前狀態(tài)(3:00 ~ 11:00 的數(shù)據(jù)從 binlog 恢復(fù))
操作步驟
4.1 全量備份?(記錄 binlog 位置)
[ root@Centos~]# mysqldump -A --master-data=2 > database.sql [ root@Centos~]# less database.sql -- CHANGE MASTER TO MASTER_LOG_FILE='XX-bin.000001', MASTER_LOG_POS=2638793; 這條記錄了當(dāng)前的備份所在的日志位置,為XX-bin.000001的2638793
4.2 提取增量 binlog
[root@Centos~]# mysqlbinlog --start-position=2638793 /XXX/mariadb-bin.000007 > binary.sql
4.3 恢復(fù)數(shù)據(jù)
-- 關(guān)閉 binlog 記錄 SET sql_log_bin = OFF; -- 導(dǎo)入全量備份 SOURCE full_backup.sql; -- 導(dǎo)入增量 binlog SOURCE incremental.sql; -- 重新啟用 binlog SET sql_log_bin = ON;
五、注意事項(xiàng)?
?遷移數(shù)據(jù)庫?:不可用
rm -rf /var/lib/mysql/*暴力刪除(破壞系統(tǒng)表),應(yīng)用mysqladmin正規(guī)操作。?路徑安全?:Binlog 存儲(chǔ)目錄需確保 MySQL 用戶有寫權(quán)限。
?一致性?:MyISAM 表備份需加
--lock-all-tables,InnoDB 推薦加--single-transaction。?版本兼容?:備份/恢復(fù)建議使用相同 MySQL 版本。
? ?進(jìn)階提示?:定期清理 binlog(PURGE BINARY LOGS)避免磁盤寫滿,建議配合 expire_logs_days參數(shù)使用。
請(qǐng)不要以此視為定論,這只是我的個(gè)人經(jīng)驗(yàn)
到此這篇關(guān)于Mariadb數(shù)據(jù)庫的備份與恢復(fù)的文章就介紹到這了,更多相關(guān)Mariadb備份與恢復(fù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
win10下mysql 5.7.23 winx64安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了win10下mysql 5.7.23 winx64安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09
mysql如何增加數(shù)據(jù)表的字段(ALTER)
這篇文章主要介紹了mysql如何增加數(shù)據(jù)表的字段(ALTER),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
MySql數(shù)據(jù)庫之a(chǎn)lter表的SQL語句集合
mysql之a(chǎn)lter表的SQL語句集合,包括增加、修改、刪除字段,重命名表,添加、刪除主鍵等。本文給大家介紹MySql數(shù)據(jù)庫之a(chǎn)lter表的SQL語句集合,感興趣的朋友一起學(xué)習(xí)吧2016-04-04

