數據備份是數據容災的最后一道防線,即便有著兩地三中心的架構,備份也依然重要。如果備份出問題,備份時影響了交易業務,備份數據無法恢復,這些也是企業難以承受的。所以選擇合適的備份工具尤為重要。
創新互聯建站長期為上千余家客戶提供的網站建設服務,團隊從業經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態環境。為永登企業提供專業的成都網站設計、網站制作,永登網站改版等技術服務。擁有十多年豐富建站經驗和眾多成功案例,為您定制開發。
每個企業級數據庫都會有配套的備份工具,MEB(MySQL Enterprise Backup)就是MySQL企業版中非常重要的工具之一,是為企業級客戶提供的數據備份方案。
Xtrabackup一直作為MEB 開源版備胎而存在,從MySQL 8.0開始情況可能會變得有所不同。
在 MySQL 8.0的Backup Lock、Redo Log Archiving、Page Tracking等新特性的加持下,MEB備份/恢復體驗會更好,目前xtrabackup還不支持這些特性。
MySQL 企業版還有哪些功能?
特性1:Backup Lock
8.0之前使用xtrabackup或MEB做物理備份,為了保證備份時InnoDB引擎表與其他引擎數據文件、及binlog日志的一致性會上全局讀鎖,再拷貝非InnoDB文件,這期間MySQL會變成只讀,數據無法寫入。表數量越多,可能加上時間越長,如果使用的xtrabackup 不小心沒加rsync參數,逐個拷貝frm文件,鎖定時間會更長,對業務影響較大。
我曾遇到過部署在虛擬機的實例有12000多張表,當時使用的xtrabackup,備份腳本中沒加rsync參數,結果鎖了十幾分鐘,而MEB就沒有這樣的問題。
MySQL 8.0支持輕量級備份鎖 LOCK INSTANCE FOR BACKUP,數據字典也重構了由InnoDB存儲。若不創建非InnoDB表,MEB默認使用備份鎖獲取binlog日志一致性位置,并阻止DDL操作,但不影響DML操作。
只有InnoDB表,僅上備份鎖
請點擊輸入圖片描述
若有非InnoDB表,上全局鎖
請點擊輸入圖片描述
特性2:Redo Log Archiving
MEB能做到在線熱備,備份時不影響數據庫讀寫,這是利用了InnoDB事務日志,在備份期間持續監視redo log的變化,讀取增量變化,寫入到ibbackup_logfile,也就不需要上鎖來保障備份一致性。(對非InnoDB的文件需要上讀鎖拷貝)
如果備份期間數據庫寫入負載特別大,而寫入ibbackup_logfile速度較慢,redo log size也不大,很可能會出現ibbackup_logfile的寫入速度跟不上redo log記錄生成速度,redo log 空間不夠時需要覆寫日志文件,那么來不及寫入ibbackup_logfile的記錄會丟失,導致備份失敗。
MEB 4.1對此做了優化,將redo log處理線程拆分成多線程分工合作,提高處理redo log的效率,降低了redo log覆寫造成備份失敗的概率,但redo log新增速度和ibbackup_logfile寫入速度懸殊太大,問題依然會發生。
MySQL 8.0.17支持了redo log archiving 徹底解決了此問題,備份前設置innodb_redo_log_archive_dirs,指定redo log歸檔目錄。MEB備份時自動開啟日志歸檔,當checkpoint時會將舊記錄歸檔到此目錄,后續從歸檔文件中讀取redo日志記錄,避免了覆寫可能導致的redo記錄丟失。
請點擊輸入圖片描述
注意:innodb_redo_log_archive_dirs 不能在數據目錄下,目錄權限要求是700
特性3:Page Tracking
Page Tracking 是為優化增量備份效率,減少不必要的數據頁掃描。
增量備份當前有3種掃描模式:
page-track:利用LSN精確跟蹤上次備份之后被修改頁面,僅復制這些頁面,效率最快。
optimistic:掃描上次備份之后被修改的InnoDB 數據文件中,找出并拷貝修改的頁面。依賴系統時間,使用存在限制。
full-scan:掃描所有InnoDB數據文件,找出并拷貝自上次備份之后修改的頁面,效率最慢
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、建立自動備份腳本
為了使數據庫備份和恢復的符合我們的實際要求(備份保留七天,每天凌晨備份一次),用一段符合要求的Shell腳本來實現整個備份過程的自動化。
[root@mysqltest ~]# vim mysql-backup.sh
#!/bin/bash
##作者:Barlow##
##最后修訂:2013-6-25##
#腳本作用:備份Mysql數據庫
#
#設定備份保留天數K
K=7
#
TODAY=`date '+%Y%m%d'`
KDAY=`date -d "$TODAY - $K day" '+%Y%m%d'`
BACKDIR=/var/mysqlbak/$TODAY
KDAYDIR=/var/mysqlbak/$KDAY
mkdir -p $BACKDIR
#
# The Password of MySQL
ROOTPASS=******* ##將*替換為實際mysql數據庫的root密碼
#
# Get the Name of Database
DBLIST=`ls -p /var/lib/mysql | grep / | tr -d /`
#
# Backup with Database
for dbname in $DBLIST
do
mysqlhotcopy $dbname -u root -p $ROOTPASS $BACKDIR | logger -t mysqlhotcopy
done
#
#刪除過期備份
if [ -d "$KDAYDIR" ];then
rm -rf $KDAYDIR
exit
fi
改變腳本權限,root具有完全權限,其他用戶沒有任何權限:
[root@mysqltest ~]# chmod 700 mysql-backup.sh
運行一次腳本:
[root@mysqltest ~]# ./mysql-backup.sh
查看運行結果:
[root@mysqltest ~]# ll /var/mysqlbak/20130625/
mysql/ wordpress/
[root@mysqltest ~]# ll /var/mysqlbak/20130625/
總用量 8
drwxr-x---. 2 mysql mysql 4096 6月 25 14:26 mysql
drwxr-x---. 2 mysql mysql 4096 6月 25 14:26 wordpress
可以看到備份已經成功完成。
2、創建自動任務每天運行
[root@mysqltest ~]# crontab -e
00 01 * * * /root/mysql-backup.sh
##每天凌晨1點運行一次
利用UCache災備云平臺,可作為一個工具,在window服務器現有架構不變的情況下,針對Mysql數據庫每天自動備份定時備份。
(1)新建備份任務
UCACHE災備云控制臺登錄賬號后:點擊【服務器定時數據保護】--【數據備份】點擊【新建】按鈕,然后選要保護的對象(您的生產服務器節點),選中對應的客戶端,選擇【文件系統】然后點擊【 下一步 】
(2)設置備份策略
選擇要進行備份的文件
(3)永久增量備份與數據保留設置
選擇完要過濾的數據之后點擊下一步,可進行下一步備份的高級功能選擇,各個選項說明如下:
【永久增量備份】開啟了永久增量備份每一次增量備份都會進行一次時間點合成形成新的一個永久增量時間點等效于完備時間點。
【數據保留策略】開啟數據保留策略一共有三種保留策略分別為數據保留期限、保留副本數、按備份策略的備份周期設置副本保留策略默認選中數據保留期限一年。可以設置保留完全副本的個數最大可設置1024個副本按備份策略的備份周期設置副本保留策略最大可設置99999個副本。
【傳輸和存儲加密】開啟傳輸加密與存儲加密選項開啟此功能的任務的數據在傳輸和存儲上都經過加密處理。一共有兩種加密方式AES256加密算法、SM4加密算法。
【數據壓縮】默認不開啟開啟該選項后默認啟用快速壓縮可選擇啟用強力壓縮
【重復數據刪除】勾選該選項可以啟動源端重復數據刪除的功能該選項在建立任務后不能通過修改任務的方式更改此屬性。指紋庫需要提前創建才能成功開啟重刪功能
最后新建完成
目錄和文件內容,可以全選和分選,還可以利用UCACHE災備云控制臺的“文件過濾”“目錄過濾”“時間過濾”功能進行不必要的數據不進行備份策略添加。為了備份效率不建議兩個任務包含同一文件。
(4)設置郵件告警
備份執行完畢,會得到系統的執行反饋,也可以設定告警監控策略,進行郵件監控
使用navicat工具連接mysql數據庫,這里以navicat for Mysql工具為例。如果數據庫在本機,那么連接ip處寫localhost即可,如果數據庫在其他機器,那需要寫具體的ip地址。
設置mysql備份文件的存儲路徑。新建連接頁面,設置連接信息的右側有個高級按鈕,點擊,進入高級設置頁面,然后設置保存路徑。如果已連接的要打開這個高級頁面的話,右鍵點擊連接,點連接屬性。
然后在navicat中點擊上方的計劃按鈕,再點擊下方的新建批處理作業按鈕。
進入批處理作業頁面后,在左側數據庫處選擇想要備份的數據庫,單擊,該數據庫就會出現在右側可用任務中。
然后在可用任務中單擊該任務,點擊中間的選擇按鈕,該任務就會到已選擇的任務中,也可在可用任務中雙擊該任務,也會到已選擇的任務中。
然后點擊上方的保存按鈕,輸入想要設置的文件名,點擊確定。
然后該任務就會出現在計劃列表中。
選中該計劃,點擊設置計劃任務,彈出框點擊計劃按鈕。
點擊新建按鈕,然后設置想要自動備份的周期以及開始時間,然后點擊應用。
然后會彈出設置賬戶信息對話框,這里我們輸入當前計算機的賬戶密碼就ok啦。
到這里任務創建完畢,到時見后,就會自動執行備份,我這里設置的是每個月1號的9:00執行備份任務。
MySQL數據庫備份與還原
備份和恢復數據
生成SQL腳本
在控制臺使用mysqldump命令可以用來生成指定數據庫的腳本文本,但要注意,腳本文本中只包含數據庫的內容,而不會存在創建數據庫的語句!所以在恢復數據時,還需要自已手動創建一個數據庫之后再去恢復數據。
mysqldump –u用戶名 –p密碼 數據庫名生成的腳本文件路徑
現在可以在C盤下找到mydb1.sql文件了!
注意,mysqldump命令是在Windows控制臺下執行,無需登錄mysql!!!
執行SQL腳本
執行SQL腳本需要登錄mysql,然后進入指定數據庫,才可以執行SQL腳本!!!
執行SQL腳本不只是用來恢復數據庫,也可以在平時編寫SQL腳本,然后使用執行SQL 腳本來操作數據庫!大家都知道,在黑屏下編寫SQL語句時,就算發現了錯誤,可能也不能修改了。所以我建議大家使用腳本文件來編寫SQL代碼,然后執行之!
SOURCE C:\mydb1.sql
注意,在執行腳本時需要先行核查當前數據庫中的表是否與腳本文件中的語句有沖突!例如在腳本文件中存在create table a的語句,而當前數據庫中已經存在了a表,那么就會出錯!
還可以通過下面的方式來執行腳本文件:
mysql -uroot -p123 mydb1c:\mydb1.sql
mysql –u用戶名 –p密碼 數據庫要執行腳本文件路徑
這種方式無需登錄mysql!
數據庫的自動備份,可以減輕維護者的工作量也便于系統恢復,對于比較重要的數據庫,最好還是設置下自動備份。
工具/原料
navicat for mysql
mysql 5.5
方法/步驟
打開navicat客戶端,連上mysql后,雙擊左邊你想要備份的數據庫。點擊“計劃”,再點擊“新建批處理作業”。
雙擊上面的可用任務,它就會到下面的列表里去,代表你選擇了這個任務。
點擊保存,彈出個命名對話框,給這個任務取個名字,點擊“確定”
點擊“設置”計劃任務。
彈出的對話框,選擇“計劃”,再點擊“新建”。
這里設置為從2014年1月24號起每天早上九點備份該數據庫。如果想提高備份頻率、或者設置備份截止日期,請點擊“高級”。
高級選項可以把備份設置的更精細,比如這里設置的是在24小時內每隔2小時就備份一次。加上前面的基本設置,任務計劃就是:從2014年1月24號開始,每天九點,每隔2小時備份一次,每天的備份都持續24小時。
最后,輸入電腦密碼就大功告成。
網站題目:mysql怎么設置備份,mysql數據如何備份
轉載注明:http://vcdvsql.cn/article10/hsppgo.html
成都網站建設公司_創新互聯,為您提供軟件開發、微信公眾號、建站公司、小程序開發、靜態網站、動態網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯