如何優(yōu)雅安全的備份MySQL數(shù)據(jù)
1. 為什么要備份數(shù)據(jù)
先說一下為什么需要備份MySQL數(shù)據(jù)?
一句話總結(jié)就是:為了保證數(shù)據(jù)的安全性。
如果我們把數(shù)據(jù)只存儲(chǔ)在一個(gè)地方,如果物理機(jī)器損壞,會(huì)導(dǎo)致數(shù)據(jù)丟失,無法恢復(fù)。
還有就是我們每次手動(dòng)修改線上數(shù)據(jù)之前,為了安全起見,都需要先備份數(shù)據(jù)。防止人為的誤操作,導(dǎo)致弄臟數(shù)據(jù)或弄丟數(shù)據(jù)。
2. 怎樣備份MySQL數(shù)據(jù)?
想要快速簡(jiǎn)單粗暴備份MySQL數(shù)據(jù),可以使用mysqldump命令:
# 備份test數(shù)據(jù)庫 mysqldump -uroot -p test > backup.db
但是這樣備份的可能包含臟數(shù)據(jù),比如在我們備份數(shù)據(jù)的過程中,有個(gè)下單的操作正在執(zhí)行。
下單之后,還沒有來得及扣款,就開始執(zhí)行備份數(shù)據(jù)的命令,就會(huì)出現(xiàn)臟數(shù)據(jù)。
下單,保存訂單表
備份數(shù)據(jù)
扣款
3. 怎么安全的備份數(shù)據(jù)?
mysqldump命令也提供了以事務(wù)的形式備份的參數(shù):
# 開啟一個(gè)事務(wù)備份test數(shù)據(jù)庫 mysqldump -uroot -p --single-transaction test > backup.db
開啟事務(wù)后,會(huì)跟正常業(yè)務(wù)操作產(chǎn)生鎖資源競(jìng)爭(zhēng),可能會(huì)阻塞其他的業(yè)務(wù)操作,嚴(yán)重的可能會(huì)導(dǎo)致服務(wù)宕機(jī),所以備份操作盡量在業(yè)務(wù)低峰期執(zhí)行。
還有一個(gè)問題,只有InnoDB引擎支持事務(wù)命令,對(duì)于不支持的事務(wù)MyISAM引擎,備份數(shù)據(jù)的時(shí)候怎么保證數(shù)據(jù)的安全性呢?
有一個(gè)粗暴的辦法就是設(shè)置全庫只讀,禁止寫操作,這樣備份的時(shí)候不就能保證數(shù)據(jù)安全性啦。
先用命令查看一下數(shù)據(jù)庫的只讀狀態(tài):
show variables like 'read_only';
OFF表示只讀模式關(guān)閉,ON表示開啟只讀模式。
set global read_only=1;

這樣設(shè)置其實(shí)是非常危險(xiǎn)的,如果客戶端連接斷開,整個(gè)數(shù)據(jù)庫也會(huì)一直處于只讀模式,無法進(jìn)行寫操作。
更推薦的辦法是設(shè)置全局鎖 FTWRL(flush tables with read lock)。
# 設(shè)置全局鎖,禁止寫操作 flush tables with read lock; # 釋放鎖 unlock tables;
設(shè)置全局鎖之后,如果客戶端斷開,會(huì)自動(dòng)釋放鎖,更安全。
4. 怎么恢復(fù)數(shù)據(jù)?
通過備份文件恢復(fù)數(shù)據(jù)也非常簡(jiǎn)單:
# 把備份文件數(shù)據(jù)導(dǎo)入到test數(shù)據(jù)庫 mysqldump -uroot -p test < backup.db
到此這篇關(guān)于如何優(yōu)雅安全的備份MySQL數(shù)據(jù)的文章就介紹到這了,更多相關(guān)備份MySQL數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MySQL全面安全加固實(shí)戰(zhàn)的全流程
- MySQL數(shù)據(jù)庫SSL安全連接方式
- MySQL性能監(jiān)控與安全管理的完整指南
- MySQL 用戶權(quán)限與安全管理最佳實(shí)踐
- 如何正確、安全地關(guān)閉MySQL
- MySQL用戶權(quán)限設(shè)置保護(hù)數(shù)據(jù)庫安全
- MySQL數(shù)據(jù)庫安全秘籍之守護(hù)數(shù)據(jù)金庫防火防盜防攻擊
- mysql 安全管理詳情
- 如何優(yōu)雅、安全的關(guān)閉MySQL進(jìn)程
- 保障MySQL數(shù)據(jù)安全的一些建議
- MySQL 5.7 學(xué)習(xí)心得之安全相關(guān)特性
- MySQL安全策略(MySQL安全注意事項(xiàng))
- 關(guān)于加強(qiáng)MYSQL安全的幾點(diǎn)建議
- 詳細(xì)講解安全升級(jí)MySQL的方法
- 淺析MySQL的注入安全問題
- MySQL數(shù)據(jù)庫安全設(shè)置與注意事項(xiàng)小結(jié)
- MySQL的安全問題從安裝開始說起
- MySQL安全設(shè)置圖文教程
- 10個(gè)提高M(jìn)ySQL安全性的重要措施:從賬號(hào)管理到網(wǎng)絡(luò)防護(hù),再到數(shù)據(jù)備份和版本更新
相關(guān)文章
MySQL連表更新實(shí)戰(zhàn)案例及常見錯(cuò)誤
更新數(shù)據(jù)是使用數(shù)據(jù)庫時(shí)最重要的任務(wù)之一,下面這篇文章主要介紹了MySQL連表更新實(shí)戰(zhàn)案例及常見錯(cuò)誤的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-12-12
linux環(huán)境安裝MySQL的詳細(xì)步驟記錄(二進(jìn)制包形式)
MySQL是一個(gè)廣泛使用的開源關(guān)系型數(shù)據(jù)庫管理系統(tǒng),最新版本為?8.0,這篇文章主要介紹了linux環(huán)境安裝MySQL(二進(jìn)制包形式)的相關(guān)資料,需要的朋友可以參考下2026-01-01
詳解MySQL如何有效的存儲(chǔ)IP地址及字符串IP和數(shù)值之間如何轉(zhuǎn)換
本文主要介紹了MySQL如何有效的存儲(chǔ)IP地址及字符串IP和數(shù)值之間如何轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01

