新聞中心
MySQL數(shù)據(jù)庫是現(xiàn)今最常用的關(guān)系型數(shù)據(jù)庫之一,它被廣泛應(yīng)用于各種各樣的應(yīng)用程序中,如網(wǎng)絡(luò)應(yīng)用、企業(yè)級(jí)軟件、電子商務(wù)網(wǎng)站等等。但是,由于各種原因,比如軟件故障、服務(wù)器故障或者人為失誤,數(shù)據(jù)庫中存儲(chǔ)的數(shù)據(jù)有可能會(huì)丟失或者損壞。因此,數(shù)據(jù)庫備份是非常重要的任務(wù)。在這篇文章中,我們將介紹如何使用Linux系統(tǒng)中的Crontab功能實(shí)現(xiàn)MySQL數(shù)據(jù)庫的定時(shí)備份。

目前成都創(chuàng)新互聯(lián)公司已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站托管運(yùn)營、企業(yè)網(wǎng)站設(shè)計(jì)、嘉禾網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
Crontab是一個(gè)用于在Linux操作系統(tǒng)中定時(shí)執(zhí)行任務(wù)的工具。它允許用戶設(shè)置定時(shí)任務(wù),例如備份MySQL數(shù)據(jù)庫,清理系統(tǒng)日志等等。因此,我們可以使用Crontab功能,在MySQL數(shù)據(jù)庫中定時(shí)備份數(shù)據(jù)。
之一步:創(chuàng)建MySQL備份腳本
創(chuàng)建MySQL備份腳本是我們備份MySQL數(shù)據(jù)庫的之一步。在這個(gè)腳本中,我們將使用mysqldump命令來備份我們的數(shù)據(jù)庫。mysqldump命令可以將MySQL數(shù)據(jù)庫中的所有表導(dǎo)出為單獨(dú)的SQL文件,這些文件包含數(shù)據(jù)庫的完整結(jié)構(gòu)和數(shù)據(jù)。對(duì)于大型數(shù)據(jù)庫,備份操作可能需要一些時(shí)間。因此,我們可以在備份腳本中加入一些選項(xiàng)來壓縮備份文件,以節(jié)省存儲(chǔ)空間,并減少備份運(yùn)行時(shí)間。
以下是一個(gè)示例MySQL備份腳本:
“`
#!/bin/bash
# MySQL備份腳本
# 設(shè)置備份目錄和MySQL登錄憑據(jù)
BACKUP_DIR=”/var/backups/mysql”
MYSQL_USER=”root”
MYSQL_PASSWORD=”password”
# 創(chuàng)建備份目錄(假設(shè)它不存在)
mkdir -p ${BACKUP_DIR}
# 備份日期
BACKUP_DATE=$(date +%Y-%m-%d)
# MySQL備份文件名
BACKUP_FILE=”backup-${BACKUP_DATE}.sql”
# 壓縮MySQL備份文件
COMPRESSED_BACKUP_FILE=${BACKUP_FILE}.gz
# 完整備份MySQL數(shù)據(jù)庫
mysqldump -u ${MYSQL_USER} -p${MYSQL_PASSWORD} –all-databases > ${BACKUP_DIR}/${BACKUP_FILE}
# 壓縮備份文件
gzip ${BACKUP_DIR}/${BACKUP_FILE}
# 刪除超過7天的備份文件
find ${BACKUP_DIR} -type f -mtime +7 -name “*.gz” -exec rm {} \;
# 輸出備份文件名
echo “MySQL備份已完成:${BACKUP_DIR}/${COMPRESSED_BACKUP_FILE}”
“`
上面的腳本分為三部分:
一、設(shè)置備份目錄和MySQL登錄憑據(jù)
我們需要設(shè)置一個(gè)備份目錄來存儲(chǔ)備份文件,并指定MySQL登錄憑據(jù)。你需要替換MYSQL_USER和MYSQL_PASSWORD的值以反映你的正確憑據(jù)。
二、備份MySQL數(shù)據(jù)庫
在這一部分,我們使用mysqldump命令備份MySQL數(shù)據(jù)庫。該命令將導(dǎo)出所有數(shù)據(jù)庫的表,并將其存儲(chǔ)在一個(gè)名為backup-.sql的單獨(dú)文件中。
三、刪除舊的備份文件
在這一部分,我們使用find命令查找超過7天的備份文件,并將它們刪除。
第二步:添加Crontab任務(wù)
在MySQL備份腳本創(chuàng)建完成之后,我們需要將任務(wù)添加到Crond中。Crond是一個(gè)定時(shí)任務(wù)管理器,它允許用戶在后臺(tái)運(yùn)行腳本,定時(shí)執(zhí)行一些任務(wù)。我們可以通過編輯crontab文件來添加定時(shí)任務(wù)。使用以下命令打開crontab文件:
“`
$ crontab -e
“`
這個(gè)命令將打開一個(gè)文本編輯器,允許我們編輯Crontab任務(wù)。
然后,我們可以在crontab文件中添加以下行:
“`
# 每晚10點(diǎn)備份MySQL數(shù)據(jù)庫
0 22 * * * /bin/bash /path/to/mysql/backup.sh >/dev/null 2>&1
“`
以上示例中的Crontab功能表示每天晚上十點(diǎn)運(yùn)行MySQL備份腳本(backup.sh)并且將標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出重定向至/dev/null。
在這個(gè)例子中,如果你將MySQL備份腳本放在/home/user/backup.sh,則Crontab行看起來像這樣:
“`
0 22 * * * /bin/bash /home/user/backup.sh >/dev/null 2>&1
“`
我們只需要保存并關(guān)閉crontab文件即可。
結(jié)束語:
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!
Mysql數(shù)據(jù)庫備份的幾種方法
數(shù)據(jù)備份是數(shù)據(jù)容災(zāi)的最后一道防線,即便有著兩地三中心的架構(gòu),備份也依然重要。如果備份出問題,備份時(shí)影響了交易業(yè)務(wù),備份數(shù)據(jù)無法恢復(fù),這些也是企業(yè)難以承受的。所以選擇合適的備份工具尤為重要。
每個(gè)企業(yè)級(jí)數(shù)據(jù)庫都會(huì)有配套的備份工具,MEB(MySQL Enterprise Backup)就是MySQL企業(yè)版中非常重要的工具之一,是為企業(yè)級(jí)客戶提供的數(shù)據(jù)備份方案。
Xtrabackup一直作為MEB 開源版?zhèn)涮ザ嬖?,從MySQL 8.0開始情況可能會(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ù)無法寫入。表數(shù)量越多,可能加上時(shí)間越長(zhǎng),如果使用的xtrabackup 不小心沒加rsync參數(shù),逐個(gè)拷貝frm文件,鎖定時(shí)間會(huì)更長(zhǎng),對(duì)業(yè)務(wù)影響較大。
我曾遇到過部署在虛擬機(jī)的實(shí)例有12023多張表,當(dāng)時(shí)使用的xtrabackup,備份腳本中沒加rsync參數(shù),結(jié)果鎖了十幾分鐘,而MEB就沒有這樣的問題。
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ù)庫讀寫,這是利用了InnoDB事務(wù)日志,在備份期間持續(xù)監(jiān)視r(shí)edo log的變化,讀取增量變化,寫入到ibbackup_logfile,也就不需要上鎖來保障備份一致性。(對(duì)非InnoDB的文件需要上讀鎖拷貝)
如果備份期間數(shù)據(jù)庫寫入負(fù)載特別大,而寫入ibbackup_logfile速度較慢,redo log size也不大,很可能會(huì)出現(xiàn)ibbackup_logfile的寫入速度跟不上redo log記錄生成速度,redo log 空間不夠時(shí)需要覆寫日志文件,那么來不及寫入ibbackup_logfile的記錄會(huì)丟失,導(dǎo)致備份失敗。
MEB 4.1對(duì)此做了優(yōu)化,將redo log處理線程拆分成多線程分工合作,提高處理redo log的效率,降低了redo log覆寫造成備份失敗的概率,但redo log新增速度和ibbackup_logfile寫入速度懸殊太大,問題依然會(huì)發(fā)生。
MySQL 8.0.17支持了redo log archiving 徹殲顫底解決了此問題,備份前設(shè)置innodb_redo_log_archive_dirs,指定redo log歸檔目錄。MEB備份時(shí)自動(dòng)開啟日志歸檔攔改搭,當(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ù)頁掃描。
增量備份當(dāng)前有3種掃描模式:
page-track:利用LSN精確跟蹤上次備份之后被修改頁面,僅復(fù)制這些頁面,效率最快。
optimistic:掃描上次備份之后被修改的InnoDB 數(shù)據(jù)文件中,找出并拷貝修改的頁面。依賴系統(tǒng)時(shí)間,使用存在限制。
full-scan:掃描所有InnoDB數(shù)據(jù)文件,找出并拷貝自上次簡(jiǎn)拿備份之后修改的頁面,效率最慢
1、利用page-track增量備份,需先安裝備份組件
mysql> INSTALL COMPONENT “
2、在全備前開啟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ì)比full-scan 和page-track ,在變更頁小于總體50%的情況下 ,備份效率至少能有1倍的速度提升。
page-track 模式 磁盤讀寫均衡,說明讀寫的都是修改頁面。
請(qǐng)點(diǎn)擊輸入圖片描述
full-scan模式 磁盤讀寫差別很大,說明讀了很多未修改的頁面。
請(qǐng)點(diǎn)擊輸入圖片描述
1、復(fù)制date文件夾備份
============================
假想環(huán)境:
MySQL 安裝位置:C:\MySQL
論壇數(shù)據(jù)庫名稱為:bbs
數(shù)據(jù)庫備份目的地:C:\db_bak\
============================
新建db_bak.bat,寫入以下代碼
*******************************Code Start*****************************
net stop mysql
xcopy c:\mysql\data\bbs\*.* c:\db_bak\bbs\%date:~0,10%\ /S /I
net start mysql
*******************************Code End *****************************
然后使用Windows的“計(jì)劃任務(wù)”定時(shí)執(zhí)行該批處理腳本即可。(例如:每天凌晨3點(diǎn)執(zhí)行back_db.bat)
解
釋:備份和恢復(fù)的操作都比較簡(jiǎn)單,完整性比較高,控制備份周期比較靈活,例如,用%date:~0,10%。此方法適合有獨(dú)立主機(jī)但對(duì)mysql沒有管理
經(jīng)驗(yàn)的用戶。缺點(diǎn)是占用空間比較多,備份期間mysql會(huì)短時(shí)間斷開(例如:針對(duì)30M左右的數(shù)據(jù)庫耗時(shí)5s左右),針對(duì)%date:~0,10%的用法
參考。李掘
2、mysqldump備份成sql文件
==============
假想環(huán)境:
MySQL 安裝位置:C:\MySQL
論壇數(shù)據(jù)庫名稱為:bbs
MySQL root 密碼:123456
數(shù)據(jù)庫備份目的地:D:\db_backup\
腳本:
rem *******************************Code Start*****************************
@echo off
set “Ymd=%date:~,4%%date:~5,2%%date:~8,2%”
C:\MySQL\bin\mysqldump –opt -u root –password=bbs > D:\db_backup\bbs_%Ymd%.sql
@echo on
rem *******************************Code End*****************************
將以上代碼保存為backup_db.bat
然后使用Windows的“計(jì)劃任務(wù)”定時(shí)執(zhí)行該腳本即可。(例如:每天歷衡凌晨5點(diǎn)執(zhí)行back_db.bat)
說明:此方法可以不用關(guān)閉數(shù)據(jù)庫,并且可以按每一天的時(shí)間來名稱備份文肢擾做件。
通過%date:~5,2%來組合得出當(dāng)前日期,組合的效果為yyyymmdd,date命令得到的日期格式默認(rèn)為yyyy-mm-dd(如果不是此格式可以通過pause命令來暫停命令行窗口看通過%date:~,20%得到的當(dāng)前計(jì)算機(jī)日期格式),所以通過%date:~5,2%即可得到日期中的第五個(gè)字符開始的兩個(gè)字符,例如今天為,通過%date:~5,2%則可以得到02。(日期的字符串的下標(biāo)是從0開始的)
3、利用WinRAR對(duì)MySQL數(shù)據(jù)庫進(jìn)行定時(shí)備份。
對(duì)于MySQL的備份,更好的方法就是直接備份MySQL數(shù)據(jù)庫的Data目錄。下面提供了一個(gè)利用WinRAR來對(duì)Data目錄進(jìn)行定時(shí)備份的方法。
首先當(dāng)然要把WinRAR安裝到計(jì)算機(jī)上。
將下面的命令寫入到一個(gè)文本文件里
*******************************Code Start*****************************
net stop mysql
c:\progra~1\winrar\winrar a -ag -k -r -s d:\mysql.rar d:\mysql\data
net start mysql
*******************************Code End*****************************
保存,然后將文本文件的擴(kuò)展名修改成CMD。進(jìn)入控制面版,打開計(jì)劃任務(wù),雙擊“添加計(jì)劃任務(wù)”。在計(jì)劃任務(wù)向?qū)е姓业絼偛诺腃MD文件,接著為這個(gè)任務(wù)指定一個(gè)運(yùn)行時(shí)間和運(yùn)行時(shí)使用的賬號(hào)密碼就可以了。
這種方法缺點(diǎn)是占用時(shí)間比較多,備份期間壓縮需要時(shí)間,mysql斷開比之一種方法更多的時(shí)間,但是對(duì)于文件命名很好。
如何定時(shí)備份遠(yuǎn)程mysql數(shù)據(jù)庫
在百度里面搜索“多備份”,注冊(cè)一個(gè)賬號(hào)
登陸成功后,找到數(shù)據(jù)庫備猜早份
進(jìn)行數(shù)據(jù)庫遠(yuǎn)程授權(quán):要備份成功,得先對(duì)數(shù)據(jù)庫進(jìn)行遠(yuǎn)程授權(quán),允許備份主機(jī)遠(yuǎn)程訪問你的數(shù)據(jù)庫。
填寫你的數(shù)據(jù)庫IP,數(shù)據(jù)庫用戶名,密碼等參數(shù)信息
選擇存儲(chǔ)位置,備份頻率等
至此,數(shù)據(jù)庫仔嘩備份任務(wù)就創(chuàng)建成功了。然后,多備份就會(huì)自動(dòng)定時(shí)的幫你念兆行備份你的數(shù)據(jù)庫。
mysql數(shù)據(jù)庫如何定時(shí)備份數(shù)據(jù)庫備份的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于mysql數(shù)據(jù)庫如何定時(shí)備份數(shù)據(jù)庫備份,簡(jiǎn)單易懂的MySQL數(shù)據(jù)庫定時(shí)備份方法,Mysql數(shù)據(jù)庫備份的幾種方法,如何定時(shí)備份遠(yuǎn)程mysql數(shù)據(jù)庫的信息別忘了在本站進(jìn)行查找喔。
香港云服務(wù)器機(jī)房,創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)云服務(wù)器廠商,回大陸優(yōu)化帶寬,安全/穩(wěn)定/低延遲.創(chuàng)新互聯(lián)助力企業(yè)出海業(yè)務(wù),提供一站式解決方案。香港服務(wù)器-免備案低延遲-雙向CN2+BGP極速互訪!
當(dāng)前標(biāo)題:簡(jiǎn)單易懂的MySQL數(shù)據(jù)庫定時(shí)備份方法(mysql數(shù)據(jù)庫如何定時(shí)備份數(shù)據(jù)庫備份)
分享網(wǎng)址:http://www.5511xx.com/article/cojsjgj.html


咨詢
建站咨詢
