新聞中心
MySQL是全球?yàn)榱餍械年P(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),簡(jiǎn)稱為RDBMS。但是即使擁有最為優(yōu)秀的軟件也無(wú)法避免數(shù)據(jù)丟失或者損壞的風(fēng)險(xiǎn)。數(shù)據(jù)的保護(hù)是數(shù)據(jù)庫(kù)管理員工作中最為基礎(chǔ)、最為核心的一項(xiàng)工作。采用合適的備份方式是確保數(shù)據(jù)安全的最有效的手段之一。

十年的華池網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營(yíng)銷的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整華池建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“華池網(wǎng)站設(shè)計(jì)”,“華池網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
目前在備份數(shù)據(jù)時(shí),最常用的是完全備份和增量備份兩種方式。完全備份是備份整個(gè)數(shù)據(jù)庫(kù)。增量備份是備份自上次備份以來(lái)的變化。兩種方式各有利弊。完全備份消耗時(shí)間和磁盤存儲(chǔ)空間,而增量備份備份時(shí)間短,并且占用空間小,但需要對(duì)備份歷史做處理,還是會(huì)有數(shù)據(jù)可能丟失的風(fēng)險(xiǎn)。接下來(lái)將會(huì)詳細(xì)介紹如何使用MySQL增量備份保護(hù)數(shù)據(jù)。
通過(guò)設(shè)置日志來(lái)開(kāi)啟增量備份
MySql提供了一種叫做binlog的日志功能,他們能夠記錄的只是已經(jīng)修改的數(shù)據(jù),由此可以生成所謂的“增量備份”。在MySQL中,binlog可以記錄所有修改了的數(shù)據(jù)庫(kù),其中就包括創(chuàng)建表、修改表結(jié)構(gòu)等都可以被自動(dòng)記錄下來(lái),還可以讓數(shù)據(jù)庫(kù)自己處理日志的復(fù)雜問(wèn)題,所以備份數(shù)據(jù)的方式也非常靈活。
操作步驟:
1. 開(kāi)啟日志記錄
在MySQL中,為了記錄所有修改了的數(shù)據(jù)庫(kù),需要將日志開(kāi)啟。
可以通過(guò)修改配置文件,添加以下語(yǔ)句啟動(dòng)日志功能:
log-bin = mysql-bin
2. 檢查是否開(kāi)啟日志記錄
開(kāi)啟日志記錄后首先需要檢查是否已經(jīng)正確啟動(dòng)了日志,并確認(rèn)binlog命令被執(zhí)行。可以通過(guò)以下命令查看和確認(rèn)當(dāng)前的binlog名稱。
show binary logs;
如果出現(xiàn)多個(gè)記錄,那么表示日志記錄已經(jīng)啟動(dòng)成功。
3. 創(chuàng)建全量備份
在備份前,需要先備份整個(gè)數(shù)據(jù)庫(kù)中的數(shù)據(jù),來(lái)作為下一次增量備份的基礎(chǔ)。這個(gè)全量備份的名稱可以為dump.sql,我們將其保存在/usr/local/mysql/backup目錄下。
mysqldump -u username -p –single-transaction –master-data=2 –all-databases > /usr/local/mysql/backup/dump.sql
4. 創(chuàng)建增量備份
增量備份操作步驟包含兩部分:
1)將binlog文件復(fù)制到新的目錄下
cp /var/lib/mysql/mysql-bin.00000X /usr/local/mysql/backup
2)將binlog生成SQL語(yǔ)句備份
mysqlbinlog /root/mysql_binlog/mysql-bin.000001 > /usr/local/mysql/backup/binlog.sql
最后將增量備份的binlog.sql的內(nèi)容拼接到dump.sql后面,再保存到備份目錄中。這樣下次要進(jìn)行的備份操作便會(huì)根據(jù)上次備份到的位置繼續(xù)進(jìn)行,從而實(shí)現(xiàn)增量備份的目的。
增量備份需要重復(fù)進(jìn)行上述操作,不斷生成新的增量備份,這樣就可以保護(hù)數(shù)據(jù)不丟失,還可以方便名為修復(fù)數(shù)據(jù)。但是需要注意的是,增量備份到一定階段,需要將數(shù)據(jù)重新生成全量備份,否則不僅備份過(guò)程會(huì)變得越來(lái)越復(fù)雜,而恢復(fù)數(shù)據(jù)也會(huì)成為難題。
結(jié)論
MySQL增量備份是一種高效、可靠的數(shù)據(jù)備份方式,對(duì)數(shù)據(jù)進(jìn)行有效保護(hù)。但是需要注意的是,數(shù)據(jù)備份只是數(shù)據(jù)安全措施中的一環(huán),對(duì)于整個(gè)數(shù)據(jù)安全措施來(lái)說(shuō),還需要采用其他措施,如定期進(jìn)行數(shù)據(jù)同步、數(shù)據(jù)恢復(fù)測(cè)試等。良好的數(shù)據(jù)保護(hù)習(xí)慣可以保障數(shù)據(jù)的持續(xù)安全和穩(wěn)定性,讓我們的業(yè)務(wù)在數(shù)據(jù)的穩(wěn)定和安全中飛速發(fā)展。
相關(guān)問(wèn)題拓展閱讀:
- 請(qǐng)問(wèn)mysql怎么自動(dòng)備份數(shù)據(jù)庫(kù)?
- 如何備份10G以上的mysql數(shù)據(jù)庫(kù)
請(qǐng)問(wèn)mysql怎么自動(dòng)備份數(shù)據(jù)庫(kù)?
在LINUX下:
可以蘆宴巖寫一個(gè)shell腳本,由crontab定時(shí)調(diào)用祥猜這個(gè)腳陪御本以實(shí)現(xiàn)備份數(shù)據(jù)庫(kù)。
參考網(wǎng)址:
數(shù)據(jù)庫(kù)的自動(dòng)備份,可以減輕維護(hù)者的工作量也便于系統(tǒng)恢復(fù),對(duì)于比較重要的數(shù)據(jù)庫(kù),更好還是設(shè)置下自動(dòng)備份。
工具/原料
navicat for mysql
mysql 5.5
方法/步驟
打開(kāi)navicat客戶端,連上mysql后,雙擊左邊你想要備份的數(shù)據(jù)庫(kù)。點(diǎn)擊“計(jì)劃”,再點(diǎn)擊“裂頃正新建批處理作業(yè)”。
雙擊上面的可用任務(wù),它就會(huì)到下面的列表里去,代表你選擇了這個(gè)任務(wù)。
點(diǎn)擊保存,彈出個(gè)命名對(duì)乎伍話框,給這個(gè)任務(wù)取個(gè)名字,肆悔點(diǎn)擊“確定”
點(diǎn)擊“設(shè)置”計(jì)劃任務(wù)。
彈出的對(duì)話框,選擇“計(jì)劃”,再點(diǎn)擊“新建”。
這里設(shè)置為從2023年1月24號(hào)起每天早上九點(diǎn)備份該數(shù)據(jù)庫(kù)。如果想提高備份頻率、或者設(shè)置備份截止日期,請(qǐng)點(diǎn)擊“高級(jí)”。
高級(jí)選項(xiàng)可以把備份設(shè)置的更精細(xì),比如這里設(shè)置的是在24小時(shí)內(nèi)每隔2小時(shí)就備份一次。加上前面的基本設(shè)置,任務(wù)計(jì)劃就是:從2023年1月24號(hào)開(kāi)始,每天九點(diǎn),每隔2小時(shí)備份一次,每天的備份都持續(xù)24小時(shí)。
最后,輸入電腦密碼就大功告成。
windows下:
具體來(lái)說(shuō),數(shù)明我們?nèi)粜枥萌蝿?wù)計(jì)劃程序自動(dòng)運(yùn)行則應(yīng)執(zhí)行如下步驟:
1.單擊“開(kāi)始”按鈕,然后依次選擇“程序”→“附件”→“系統(tǒng)工具”→“任務(wù)計(jì)劃”(或者是“設(shè)置”→“控制面板”→“任務(wù)計(jì)劃”),啟動(dòng)Windows的任務(wù)計(jì)劃管理程序。
2.在“任務(wù)計(jì)劃”窗口中雙擊“添加任務(wù)計(jì)劃”圖標(biāo),啟動(dòng)系統(tǒng)的“任務(wù)計(jì)劃向?qū)А?,然后單擊“下一步”按鈕,在給出的程序列表中選擇需要自動(dòng)運(yùn)行的應(yīng)用程序,然后單擊“下一步”按鈕。
設(shè)置適當(dāng)?shù)娜蝿?wù)計(jì)劃名稱并選擇自動(dòng)執(zhí)行這個(gè)任務(wù)的時(shí)間頻率(如每天、每星期、每月、一次性、每次啟動(dòng)計(jì)算機(jī)時(shí)、每次登錄時(shí)等),然后單擊“下一步”按鈕。
此時(shí)系統(tǒng)將會(huì)要求用戶對(duì)程序運(yùn)行的具體時(shí)間進(jìn)行設(shè)置,如幾號(hào)、幾點(diǎn)鐘、哪幾個(gè)時(shí)間段才能運(yùn)行等,我們只需根據(jù)自己的需要加以設(shè)置即可。
4.接下來(lái)系統(tǒng)將會(huì)要求用戶設(shè)置適當(dāng)?shù)挠脩裘懊艽a(如圖5所示),以便系統(tǒng)今后能自動(dòng)加以運(yùn)行。
5.最后,我們只需單擊“完成”按鈕即可將相應(yīng)任務(wù)添加到Windows的任務(wù)計(jì)劃程序中,此后它就會(huì)自動(dòng)“記住”這個(gè)任務(wù),一旦系統(tǒng)時(shí)間及相關(guān)條件與用戶設(shè)置的計(jì)劃相符,它就會(huì)自動(dòng)調(diào)用用戶所指定的應(yīng)用程序,十分方便(每次啟動(dòng)Windows的時(shí)候,任務(wù)計(jì)劃程序都會(huì)自動(dòng)啟動(dòng),并在后臺(tái)運(yùn)行,確保用戶的計(jì)劃能夠按時(shí)執(zhí)行)。
現(xiàn)在我們來(lái)測(cè)試一下剛才所建的任務(wù)是否成功,鼠標(biāo)右鍵單擊“php”程序圖標(biāo)(如圖6所示),在彈出的菜單里面選擇“運(yùn)行”。一般情況下程序圖標(biāo)只要這樣激活運(yùn)行就可以正常啟動(dòng)。如果運(yùn)行失敗可查看用戶和密碼是否薯殲告設(shè)置正確,還有確定“Task Scheduler”服務(wù)是否已啟動(dòng),本人當(dāng)初就是為了節(jié)省系統(tǒng)資源把它關(guān)掉了導(dǎo)致運(yùn)行失敗,害我找了大半天。另外也可從“系統(tǒng)日志”里查看到底是什么原因造成運(yùn)行失敗的。
好了,講了這么多任務(wù)計(jì)劃的應(yīng)用,現(xiàn)在我們切入正題,下面將介紹兩個(gè)例子:
一、讓PHP定時(shí)運(yùn)行吧!
1、編輯如下代碼,并保存為test.php:
2、添加一個(gè)任務(wù)計(jì)劃,在(如圖2所示)這一步輸入命令:D:\php4\php.exe -q D:\php4\test.php
3、時(shí)間設(shè)置為每隔1分鐘運(yùn)行一次,然后運(yùn)行這個(gè)任務(wù)。
4、現(xiàn)在我們來(lái)看看d:\php4\test.txt文件的內(nèi)容時(shí)候是否成功。如果內(nèi)容為如下所示,那么恭喜你成功了。
11:08:01 讓PHP定時(shí)運(yùn)行吧!
11:09:02 讓PHP定時(shí)運(yùn)行吧!
11:10:01 讓PHP定時(shí)運(yùn)行吧!
11:11:02 讓PHP定時(shí)運(yùn)行吧!
二改螞、讓MYSQL實(shí)現(xiàn)自動(dòng)備份變成可能!
1、編輯如下代碼,并保存為backup.php,如果要壓縮可以拷貝一個(gè)rar.exe:
backup Ver 0.01, for Win95/Win98/WinNT/Win2023/WinXP on i32
Copyright (C)ptker All rights reserved.
This is free software,and you are welcome to modify and redistribute it
under the GPL license
PHP Shell script for the backup MySQL database.
Usage:
can be database name you would like to backup.
With the –help, or -? options, you can get this help and exit.
./$dbname.sql”);
@exec(“$rar_tool a -ag_yyyy_mm_dd_hh_mm $dbname.rar $dbname.sql”);
@unlink(“$dbname.sql”);
echo “Backup complete!”;
}
?>
2、添加一個(gè)任務(wù)計(jì)劃,在(如圖2所示)這一步輸入命令:
D:\php4\php.exe -q D:\php4\backup.php databasename
3、時(shí)間設(shè)置為每天運(yùn)行一次,然后運(yùn)行這個(gè)任務(wù)。
4、最后會(huì)在d:\php4\目錄下生成一個(gè)以數(shù)據(jù)庫(kù)名和當(dāng)前時(shí)間組成的rar文件。
linux下:
MySQL :: Linux 下自動(dòng)備份數(shù)據(jù)庫(kù)的 shell 腳本
Linux 服務(wù)器上的程序每天都在更新 MySQL 數(shù)據(jù)庫(kù),于是就想起寫一個(gè) shell 腳本,結(jié)合 crontab,定時(shí)備份數(shù)據(jù)庫(kù)。其實(shí)非常簡(jiǎn)單,主要就是使用 MySQL 自帶的 mysqldump 命令。
腳本內(nèi)容如下:
#!/bin/sh
# File: /home/mysql/backup.sh
# Database info
DB_NAME=”test”
DB_USER=”username”
DB_PASS=”password”
# Others vars
BIN_DIR=”/usr/local/mysql/bin”
BCK_DIR=”/home/mysql/backup”
DATE=`date +%F`
# TODO
$BIN_DIR/mysqldump –opt -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $BCK_DIR/db_$DATE.gz
然后使用將此腳本加到 /etc/crontab 定時(shí)任務(wù)中:
01 5 * * 0 mysql /home/mysql/backup.sh
好了,每周日凌晨 5:01 系統(tǒng)就會(huì)自動(dòng)運(yùn)行 backup.sh 文件備份 MySQL 數(shù)據(jù)庫(kù)了。
/home/www/inc/back
直接利用第三方工具“多備份”來(lái)實(shí)現(xiàn)MySQL自動(dòng)備份數(shù)據(jù)庫(kù)吧,非常蘆碧大方便,可以設(shè)置按時(shí)/天/周/月/頻率進(jìn)行設(shè)置慧返自動(dòng)增量備份,兼容windows、Linux、Unix等系統(tǒng),在線陪豎就可以一鍵恢復(fù),不需要寫php代碼
數(shù)據(jù)備份絕晌是數(shù)據(jù)容災(zāi)的最后一道防線,即便有著兩地三中心的架構(gòu),備份也依然重要。如果備份出問(wèn)題,備份時(shí)影響了交易業(yè)務(wù),備份數(shù)據(jù)無(wú)法恢復(fù),這些也是企業(yè)難以承受的。所以選擇合適的備份工具尤為重要。
每個(gè)企業(yè)級(jí)數(shù)據(jù)庫(kù)都會(huì)有配套的備份工具,MEB(MySQL Enterprise Backup)就是MySQL企業(yè)版中非常重要的工具之一,是為企業(yè)級(jí)客戶提供的數(shù)據(jù)備份方案。
Xtrabackup一直作為MEB 開(kāi)源版?zhèn)涮ザ嬖?,從MySQL 8.0開(kāi)始情況可能會(huì)變得有所不同。
在 MySQL 8.0的Backup Lock、Redo Log Archiving、Page Tracking等新特性的加持下,MEB備份/恢復(fù)體驗(yàn)會(huì)更好,目前xtrabackup還不支持這些特性。
MySQL 企業(yè)版還有哪些功能?
特性1:Backup Lock
8.0之前使用xtrabackup或MEB做物理備份,為了保證備份時(shí)InnoDB引擎表與其他引擎數(shù)據(jù)文件、及binlog日志的一致性會(huì)上全局讀鎖,再拷貝非InnoDB文件,這期間MySQL會(huì)變成只讀,數(shù)據(jù)無(wú)法寫入。表數(shù)量越多,可能加上時(shí)間越長(zhǎng)塵宏肢,如果使用的xtrabackup 不小心沒(méi)加rsync參數(shù),逐個(gè)拷貝frm文件,鎖定時(shí)間會(huì)更長(zhǎng),對(duì)業(yè)務(wù)影響較大。
我曾遇到過(guò)部署在虛擬機(jī)的實(shí)例有12023多張表,當(dāng)時(shí)使用的xtrabackup,備份腳本中沒(méi)加rsync參數(shù),結(jié)果鎖了十幾分鐘,而MEB就沒(méi)有這樣的問(wèn)題。
MySQL 8.0支持輕量級(jí)備份鎖 LOCK INSTANCE FOR BACKUP,數(shù)據(jù)字典也重構(gòu)了由InnoDB存儲(chǔ)。若不創(chuàng)建非InnoDB表,MEB默認(rèn)使用備份鎖獲取binlog日志一致性位置,并阻止DDL操作,但不影響DML操作。
只有InnoDB表,僅上備份鎖
請(qǐng)點(diǎn)擊輸入圖片描述
若有非InnoDB表,上全局鎖
請(qǐng)點(diǎn)擊輸入圖片描述
特性2:Redo Log Archiving
MEB能做到在線熱備,備份時(shí)不影響數(shù)據(jù)庫(kù)讀寫,這是利用了InnoDB事務(wù)日志,在備份期間持續(xù)監(jiān)視r(shí)edo log的變化,讀取增量變化,寫入到ibbackup_logfile,也就不需要上鎖來(lái)保障備份一致性。(對(duì)非InnoDB的文件需要上讀鎖拷貝)
如果備份期間數(shù)據(jù)庫(kù)寫入負(fù)載特別大,而寫入ibbackup_logfile速度較慢,redo log size也不大,很可能會(huì)出現(xiàn)ibbackup_logfile的寫入速度跟不上redo log記錄生成速度,redo log 空間不夠時(shí)需要覆寫日志文件,那么來(lái)不及寫入ibbackup_logfile的記錄會(huì)丟失,導(dǎo)致備份失敗。
MEB 4.1對(duì)此做了優(yōu)化,將redo log處理線程拆分成多線派世程分工合作,提高處理redo log的效率,降低了redo log覆寫造成備份失敗的概率,但redo log新增速度和ibbackup_logfile寫入速度懸殊太大,問(wèn)題依然會(huì)發(fā)生。
MySQL 8.0.17支持了redo log archiving 徹底解決了此問(wèn)題,備份前設(shè)置innodb_redo_log_archive_dirs,指定redo log歸檔目錄。MEB備份時(shí)自動(dòng)開(kāi)啟日志歸檔,當(dāng)checkpoint時(shí)會(huì)將舊記錄歸檔到此目錄,后續(xù)從歸檔文件中讀取redo日志記錄,避免了覆寫可能導(dǎo)致的redo記錄丟失。
請(qǐng)點(diǎn)擊輸入圖片描述
注意:innodb_redo_log_archive_dirs 不能在數(shù)據(jù)目錄下,目錄權(quán)限要求是700
特性3:Page Tracking
Page Tracking 是為優(yōu)化增量備份效率,減少不必要的數(shù)據(jù)頁(yè)掃描。
增量備份當(dāng)前有3種掃描模式:
page-track:利用LSN精確跟蹤上次備份之后被修改頁(yè)面,僅復(fù)制這些頁(yè)面,效率最快。
optimistic:掃描上次備份之后被修改的InnoDB 數(shù)據(jù)文件中,找出并拷貝修改的頁(yè)面。依賴系統(tǒng)時(shí)間,使用存在限制。
full-scan:掃描所有InnoDB數(shù)據(jù)文件,找出并拷貝自上次備份之后修改的頁(yè)面,效率最慢
1、利用page-track增量備份,需先安裝備份組件
mysql> INSTALL COMPONENT “
2、在全備前開(kāi)啟page-track
SELECT mysqlbackup_page_track_set(true);
3、全備之后,做增量備份時(shí)指定若滿足page tracking條件,默認(rèn)會(huì)使用page-track模式,否則會(huì)使用full-scan模式,也可以指定–incremental=page-track。
mysqlbackup –incremental-backup-dir=backup_incr –trace=3 –incremental=page-track –incremental-base=history:last_full_backup backup
incremental-base有3種選擇
last_backup:基于前一次備份做增備,前一次備份可能是增備,也可能是全備。這種方式全備之間可能會(huì)有多個(gè)增備,每次增量可能比較小,但恢復(fù)時(shí)需要逐個(gè)合并。
last_full_backup:基于前一次全備做增備。這種方式增備會(huì)越往后體積可能越大,但恢復(fù)時(shí)只需要合并最后一次增量備份。
dir:基于前一次的備份目錄,前一次備份可能是增備,也可能是全備。
測(cè)試對(duì)比f(wàn)ull-scan 和page-track ,在變更頁(yè)小于總體50%的情況下 ,備份效率至少能有1倍的速度提升。
page-track 模式 磁盤讀寫均衡,說(shuō)明讀寫的都是修改頁(yè)面。
請(qǐng)點(diǎn)擊輸入圖片描述
full-scan模式 磁盤讀寫差別很大,說(shuō)明讀了很多未修改的頁(yè)面。
請(qǐng)點(diǎn)擊輸入圖片描述
如何備份10G以上的mysql數(shù)據(jù)庫(kù)
如果能打開(kāi)binlog,可以:
部署主從同步,直接用從庫(kù)當(dāng)備份好了
完整備份+增量備份,比如每周一個(gè)完整備份,每天一個(gè)小的增量dump,這樣在完整度和效率方面可以平衡下。工具可以用Percona的XtraBackup:
mysql數(shù)據(jù)庫(kù)增量備份的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于mysql數(shù)據(jù)庫(kù)增量備份,如何使用MySQL增量備份保護(hù)數(shù)據(jù)?,請(qǐng)問(wèn)mysql怎么自動(dòng)備份數(shù)據(jù)庫(kù)?,如何備份10G以上的mysql數(shù)據(jù)庫(kù)的信息別忘了在本站進(jìn)行查找喔。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開(kāi)通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過(guò)10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
當(dāng)前標(biāo)題:如何使用MySQL增量備份保護(hù)數(shù)據(jù)?(mysql數(shù)據(jù)庫(kù)增量備份)
標(biāo)題URL:http://m.fisionsoft.com.cn/article/dhgdgos.html


咨詢
建站咨詢
