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

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


咨詢
建站咨詢
