網(wǎng)站互動(dòng)交流怎么做百度中心人工電話號(hào)碼
目錄
1. 前言
2.準(zhǔn)備工作
2.1.環(huán)境信息
2.2.創(chuàng)建備份目錄
2.3.配置/etc/my.cnf文件
2.4.授予root用戶BACKUP_ADMIN權(quán)限
3.全量備份
4.準(zhǔn)備備份?
5.數(shù)據(jù)恢復(fù)?
6.總結(jié)
"實(shí)戰(zhàn)演練:利用Percona XtraBackup執(zhí)行MySQL全量備份操作詳解"
1. 前言
本文將繼續(xù)上篇【MySQL備份】Percona XtraBackup基礎(chǔ)篇中對(duì)Percona XtraBackup的探索,深化討論其全量備份技術(shù)及詳盡的恢復(fù)策略。本章節(jié)旨在構(gòu)建一套完備的備份恢復(fù)指南,進(jìn)一步鞏固您的數(shù)據(jù)庫安全防線,確保數(shù)據(jù)資產(chǎn)的萬無一失。
在本篇內(nèi)容中,我們將細(xì)致剖析Percona XtraBackup執(zhí)行全量備份的高效實(shí)踐,這一核心功能不僅能夠?qū)崟r(shí)捕捉數(shù)據(jù)庫狀態(tài)的完整映像,還依托其先進(jìn)的日志處理機(jī)制,保證備份數(shù)據(jù)的絕對(duì)一致性和可靠性。您將學(xué)習(xí)到如何運(yùn)用簡潔明了的命令行指令,安全無礙地將數(shù)據(jù)庫快照存置于指定位置,為數(shù)據(jù)保護(hù)筑起第一道堅(jiān)固壁壘。
緊接著,文章將引領(lǐng)您步入數(shù)據(jù)恢復(fù)的精密藝術(shù)殿堂。從備份到恢復(fù)的無縫對(duì)接,是檢驗(yàn)備份方案成色的真正試金石。我們將逐步拆解恢復(fù)流程的每一個(gè)關(guān)鍵環(huán)節(jié):從安全停機(jī)、數(shù)據(jù)遷移與權(quán)限配置,到細(xì)膩的預(yù)處理步驟,直至數(shù)據(jù)庫服務(wù)的順利重啟與健康狀況的全面核查。每一步都精心設(shè)計(jì),確保在面對(duì)不可預(yù)見的數(shù)據(jù)危機(jī)時(shí),能夠迅速恢復(fù)業(yè)務(wù)運(yùn)營,維持?jǐn)?shù)據(jù)連續(xù)性和服務(wù)穩(wěn)定性。
通過本篇的深度解析,您不僅能掌握Percona XtraBackup全量備份的精髓,更能領(lǐng)略其在數(shù)據(jù)恢復(fù)領(lǐng)域的獨(dú)到之處,為您的數(shù)據(jù)庫管理技能樹增添一份堅(jiān)實(shí)保障。無論是對(duì)初學(xué)者的啟蒙,還是對(duì)資深DBA的技能進(jìn)階,本篇章節(jié)均是不可或缺的知識(shí)寶典。
2.準(zhǔn)備工作
2.1.環(huán)境信息
主機(jī)IP | 操作系統(tǒng) | Mysql版本 | XtraBackup版本 |
---|---|---|---|
172.17.0.2 | CentOS Stream release 9 | 8.0.37 | 8.0.35 |
2.2.創(chuàng)建備份目錄
mkdir -p /data/backup
2.3.配置/etc/my.cnf文件
[xtrabackup]
host=localhost
port=3306
user=root
password=123456
socket=/var/lib/mysql/mysql.sock
target_dir=/data/backup
2.4.授予root用戶BACKUP_ADMIN權(quán)限
grant BACKUP_ADMIN on *.* to 'root'@'%'
LOCK INSTANCE FOR BACKUP 是MySQL 8.0引入的一種新的備份相關(guān)SQL語句,主要用于在進(jìn)行數(shù)據(jù)庫備份時(shí),以一種更為細(xì)粒度和高效的方式控制對(duì)數(shù)據(jù)庫實(shí)例的訪問,以保證備份的一致性。這個(gè)命令的工作原理及特點(diǎn)如下:
目的:在執(zhí)行備份操作時(shí),此命令用于獲取一個(gè)實(shí)例級(jí)別的鎖,該鎖允許在備份過程中繼續(xù)執(zhí)行DML(數(shù)據(jù)操作語言,如INSERT、UPDATE、DELETE)操作,同時(shí)防止那些可能導(dǎo)致數(shù)據(jù)快照不一致的DDL(數(shù)據(jù)定義語言,如CREATE、ALTER、DROP)操作和某些管理操作。這樣可以在不影響數(shù)據(jù)庫服務(wù)的情況下進(jìn)行備份,特別適用于需要最小化服務(wù)中斷的在線備份場(chǎng)景。
權(quán)限需求:執(zhí)行LOCK INSTANCE FOR BACKUP語句需要用戶具備BACKUP_ADMIN權(quán)限。這是一個(gè)專門為了備份相關(guān)的高級(jí)操作而設(shè)計(jì)的權(quán)限級(jí)別。
兼容性:此特性是在MySQL 8.0及以上版本中引入的,早于8.0的MySQL版本并不支持這一語句,因此在使用舊版本時(shí),可能需要依賴其他機(jī)制(如FLUSH TABLES WITH READ LOCK)來確保備份的一致性。
解鎖:執(zhí)行備份后,需要使用UNLOCK INSTANCE語句來釋放之前由LOCK INSTANCE FOR BACKUP獲得的鎖,從而恢復(fù)正常操作。
與傳統(tǒng)備份命令的對(duì)比:相比于傳統(tǒng)的備份方法,如使用FLUSH TABLES WITH READ LOCK,LOCK INSTANCE FOR BACKUP提供了更小的性能影響,因?yàn)樗粫?huì)完全阻止寫操作,只是限制了可能引起數(shù)據(jù)不一致的活動(dòng),更適合于高可用性和高性能要求的生產(chǎn)環(huán)境。
3.全量備份
登陸數(shù)據(jù)庫查看現(xiàn)有的的數(shù)據(jù),可以看到現(xiàn)在有一個(gè)tes1的庫
進(jìn)行全量備份,最后看到 completed OK!代表成功
xtrabackup --backup --target-dir=/data/backup --datadir=/var/lib/mysql --user=root --password=123456 --host=172.17.0.2 --port=3306
在/data/backup目錄下可以看到備份的數(shù)據(jù)
登陸數(shù)據(jù)庫刪除tes1庫
4.準(zhǔn)備備份?
使用Percona XtraBackup進(jìn)行全量備份后,在某些特定場(chǎng)景下確實(shí)可以直接使用備份數(shù)據(jù),但這并不意味著不需要準(zhǔn)備備份(prepare step)。備份準(zhǔn)備是確保數(shù)據(jù)一致性的一個(gè)重要步驟,尤其是在進(jìn)行數(shù)據(jù)恢復(fù)操作之前。具體是否需要準(zhǔn)備備份取決于你的備份目的和后續(xù)操作:
-
立即恢復(fù): 如果你計(jì)劃立即在相同或類似的MySQL環(huán)境中恢復(fù)這個(gè)備份,你應(yīng)該執(zhí)行備份準(zhǔn)備步驟。這一步驟會(huì)應(yīng)用未完成的事務(wù)日志(redo log),確保備份數(shù)據(jù)的一致性,并將數(shù)據(jù)文件轉(zhuǎn)換成可以直接用于啟動(dòng)MySQL服務(wù)的狀態(tài)。
xtrabackup --prepare --target-dir=<備份目錄>
-
備份存檔或復(fù)制: 如果你只是想創(chuàng)建一個(gè)備份副本用于存檔或者復(fù)制到其他服務(wù)器上,理論上可以在不進(jìn)行準(zhǔn)備的情況下直接復(fù)制備份目錄。但請(qǐng)注意,未經(jīng)準(zhǔn)備的備份在恢復(fù)時(shí)仍需經(jīng)過準(zhǔn)備步驟才能使用。
-
增量備份基礎(chǔ): 如果計(jì)劃在這個(gè)全量備份的基礎(chǔ)上執(zhí)行增量備份,也不需要立即準(zhǔn)備這個(gè)全量備份。增量備份會(huì)記錄自上次備份以來的變化,因此全量備份保持原樣即可。
總結(jié)來說,盡管在某些情況下全量備份后直接存檔或作為增量備份基礎(chǔ)可以不立即執(zhí)行準(zhǔn)備步驟,但在準(zhǔn)備將數(shù)據(jù)用于恢復(fù)或確保數(shù)據(jù)一致性時(shí),備份準(zhǔn)備是必不可少的。最佳實(shí)踐中,建議在備份流程中包括準(zhǔn)備步驟,以確保備份數(shù)據(jù)隨時(shí)可用于快速且可靠地恢復(fù)。
5.數(shù)據(jù)恢復(fù)?
停止MySQL服務(wù)進(jìn)行恢復(fù)數(shù)據(jù)
systemctl stop mysqld
rsync -avrP /data/backup/ /var/lib/mysql/
恢復(fù)數(shù)據(jù)時(shí),一定要記得更改數(shù)據(jù)目錄下的文件擁有者以及所屬組權(quán)限,否則mysql無法啟動(dòng)
chown -R mysql:mysql /var/lib/mysql
重啟數(shù)據(jù)庫查看數(shù)據(jù)是否恢復(fù),可以看到之前被刪除的tes1數(shù)據(jù)庫已經(jīng)成功恢復(fù)
6.總結(jié)
需要注意的是,在執(zhí)行恢復(fù)之前需要關(guān)閉MySQL服務(wù)器。您不能恢復(fù)到正在運(yùn)行的mysqld實(shí)例的數(shù)據(jù)目錄(導(dǎo)入部分備份時(shí)除外)。由于文件的屬性將被保留,在大多數(shù)情況下,您需要mysql在啟動(dòng)數(shù)據(jù)庫服務(wù)器之前將文件的屬主和屬組更改為mysql.mysql。