国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

mysql備份策略的實(shí)現(xiàn)(全量備份+增量備份)

瀏覽:2日期:2023-10-01 10:06:50
目錄設(shè)計(jì)場(chǎng)景技術(shù)點(diǎn)服務(wù)器信息準(zhǔn)備工作編寫(xiě)全量備份腳本(Mysql-FullyBak.sh)編寫(xiě)增量備份腳本設(shè)置定時(shí)任務(wù)crontab恢復(fù)操作

最近項(xiàng)目需要對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)進(jìn)行備份,通過(guò)查閱各種資料,設(shè)計(jì)了一套數(shù)據(jù)庫(kù)備份策略,通過(guò)調(diào)試運(yùn)行一周后,目前已經(jīng)處于平穩(wěn)運(yùn)行狀態(tài)。現(xiàn)在將思路分享出來(lái),同時(shí)感謝gredn大佬。

設(shè)計(jì)場(chǎng)景

1)增量備份在周一到周六凌晨3點(diǎn),復(fù)制mysql-bin.00000*到指定目錄; 2)全量備份則使用mysqldump將整個(gè)數(shù)據(jù)庫(kù)導(dǎo)出,每周日凌晨3點(diǎn)執(zhí)行,并會(huì)刪除上周留下的mysq-bin.00000*,然后對(duì)mysql的備份操作會(huì)保留在bak.log文件中。

技術(shù)點(diǎn)

Mysqldump、mysqlbinlog、crontab

服務(wù)器信息

主機(jī):centos7;數(shù)據(jù)庫(kù):mysql5.7

準(zhǔn)備工作

開(kāi)啟binlog日志功能 (1)新建目錄,執(zhí)行:

#mkdir /home/mysql#cd /home/mysql#mkdir mysql-bin. #增量日志文件目錄

(2)修改所屬的用戶(hù)/組:(不修改,mysql無(wú)法重啟)

#chown -R mysql.mysql mysql-bin

mysql備份策略的實(shí)現(xiàn)(全量備份+增量備份)

(3)修改mysql配置文件,執(zhí)行:

#vim /etc/my.cnf

mysql備份策略的實(shí)現(xiàn)(全量備份+增量備份)

其中,server-id表示單個(gè)結(jié)點(diǎn)的id,這里由于只有一個(gè)結(jié)點(diǎn),所以可以把id隨機(jī)指定為一個(gè)數(shù),這里將id設(shè)置成1。若集群中有多個(gè)結(jié)點(diǎn),則id不能相同(對(duì)于5.7以下版本不需要指定server-id); log_bin指定binlog日志文件的存儲(chǔ)路徑,日志文件以mysql-bin開(kāi)頭。

(4)重啟mysql,執(zhí)行:

#systemctl restart mysqld.service

(5)查看日志文件:

#cd /home/mysql/mysql-bin

mysql備份策略的實(shí)現(xiàn)(全量備份+增量備份)

(6)進(jìn)入數(shù)據(jù)庫(kù),查看啟動(dòng)效果:

#show variables like ’%log_bin%’;

mysql備份策略的實(shí)現(xiàn)(全量備份+增量備份)

編寫(xiě)全量備份腳本(Mysql-FullyBak.sh)

進(jìn)入/home/mysql目錄 新建目錄:mkdir backup 進(jìn)入backup目錄,新建daily目錄:mkdir backup 切換到/home/mysql目錄,執(zhí)行:

#vim Mysql-FullyBak.sh

mysql備份策略的實(shí)現(xiàn)(全量備份+增量備份)

參數(shù)說(shuō)明: ?lock-tables 鎖定當(dāng)前導(dǎo)出的數(shù)據(jù)表,而不是一下子鎖定全部庫(kù)下的表。本選項(xiàng)只適用于MySQL數(shù)據(jù)庫(kù)引擎為MyISAM 表,如果是 Innodb 表可以用 ?single-transaction 選項(xiàng)。 ?flush-logs 結(jié)束當(dāng)前日志,生成新日志文件。 ?delete-master-logs 清除以前的日志,以釋放空間。但是如果服務(wù)器配置為鏡像的復(fù)制主服務(wù)器,用?delete-master-logs刪掉MySQL二進(jìn)制日志很危險(xiǎn),因?yàn)閺姆?wù)器可能還沒(méi)有完全處理該二進(jìn)制日志的內(nèi)容。在這種情況下,使用 PURGE MASTER LOGS更為安全。 ?quick 該選項(xiàng)在導(dǎo)出大表時(shí)很有用,它強(qiáng)制 MySQLdump 從服務(wù)器查詢(xún)?nèi)〉糜涗浿苯虞敵龆皇侨〉盟杏涗浐髮⑺鼈兙彺娴絻?nèi)存中。 ?single-transaction 該選項(xiàng)在導(dǎo)出數(shù)據(jù)之前提交一個(gè) BEGIN SQL語(yǔ)句,BEGIN 不會(huì)阻塞任何應(yīng)用程序且能保證導(dǎo)出時(shí)數(shù)據(jù)庫(kù)的一致性狀態(tài)。它只適用于事務(wù)表,例如 InnoDB 和 BDB。本選項(xiàng)和 ?lock-tables 選項(xiàng)是互斥的,因?yàn)閘ock-tables會(huì)使任何掛起的事務(wù)隱含提交。要想導(dǎo)出大表的話(huà),應(yīng)結(jié)合使用 ?quick 選項(xiàng)。 ?events 導(dǎo)出事件 ?master-data=2 其中參數(shù)?master-data=[0|1|2] 0: 不記錄 1:記錄為CHANGE MASTER語(yǔ)句 2:記錄為注釋的CHANGE MASTER語(yǔ)句 ?master-data=2 選項(xiàng)將會(huì)在輸出SQL中記錄下完全備份后新日志文件的名稱(chēng), 用于日后恢復(fù)時(shí)參考,例如輸出的備份SQL文件中含有: CHANGE MASTER TO MASTER_LOG_FILE=’MySQL-bin.000002′, MASTER_LOG_POS=106;

編寫(xiě)增量備份腳本

切換到/home/mysql目錄,執(zhí)行:

#vim Mysql-DailyBak.sh

mysql備份策略的實(shí)現(xiàn)(全量備份+增量備份)

設(shè)置定時(shí)任務(wù)crontab

(1)安裝crontab(centos7默認(rèn)已經(jīng)安裝):

#yum install crontabs

服務(wù)操作說(shuō)明:

#/bin/systemctl start crond.service //啟動(dòng)服務(wù)#/bin/systemctl stop crond.service //關(guān)閉服務(wù)#/bin/systemctl restart crond.service //重啟服務(wù)#/bin/systemctl reload crond.service //重新載入

配置:

#/bin/systemctl status crond.service //服務(wù)狀態(tài)

加入開(kāi)機(jī)自動(dòng)啟動(dòng):

#chkconfig ?level 35 crond on

(2)在命令行輸入:

#crontab -e

添加相應(yīng)的任務(wù),wq存盤(pán)退出

#每個(gè)星期日凌晨3:00執(zhí)行完全備份腳本0 3 * * 0 /bin/bash -x /home/mysql/Mysql-FullyBak.sh >/dev/null 2>&1#周一到周六凌晨3:00做增量備份0 3 * * 1-6 /bin/bash -x /home/mysql/Mysql-DailyBak.sh >/dev/null 2>&1

說(shuō)明:默認(rèn)情況下,crontab執(zhí)行一次任務(wù)后,會(huì)通過(guò)email通知用戶(hù),為避免每次發(fā)信息,加入/dev/null 2>&1

(3)查看定時(shí)任務(wù):#crontab -l

mysql備份策略的實(shí)現(xiàn)(全量備份+增量備份)

參數(shù)與說(shuō)明: crontab -u //設(shè)定某個(gè)用戶(hù)的cron服務(wù),一般root用戶(hù)在執(zhí)行這個(gè)命令的時(shí)候需要此參數(shù) ; crontab -l //列出某個(gè)用戶(hù)cron服務(wù)的詳細(xì)內(nèi)容; crontab -r //刪除所有用戶(hù)的cron服務(wù); crontab -e //編輯某個(gè)用戶(hù)的cron服務(wù); 例如:root查看自己的cron設(shè)置:crontab -u root -l 例如:root刪除用戶(hù)fred的cron設(shè)置:crontab -u fred -r 補(bǔ)充: (1)可直接編輯/etc/crontab 文件,即vi /etc/crontab,添加相應(yīng)的任務(wù)(針對(duì)整個(gè)系統(tǒng)的crontab文件); (2)crontab執(zhí)行定時(shí)任務(wù)的記錄會(huì)寫(xiě)入到/var/log/cron這個(gè)文件中,該記錄以帳號(hào)為區(qū)分。

恢復(fù)操作

恢復(fù)過(guò)程亦會(huì)寫(xiě)入日志文件,如果數(shù)據(jù)量很大,建議先關(guān)閉binlog日志功能 1、場(chǎng)景:假設(shè)早上9點(diǎn)的時(shí)候,數(shù)據(jù)庫(kù)被攻擊,drop了整個(gè)數(shù)據(jù)庫(kù)! 2、恢復(fù)思路: 利用全備的sql文件中記錄的CHANGE MASTER語(yǔ)句,binlog文件及其位置點(diǎn)信息,找出binlog文件中增量的那部分。 用mysqlbinlog命令將上述的binlog文件導(dǎo)出為sql文件,并剔除其中的drop語(yǔ)句。 通過(guò)全備文件和增量binlog文件導(dǎo)出的sql文件,就可以恢復(fù)到完整的數(shù)據(jù)。 3、恢復(fù)步驟:

(1)首先,解壓最新的全量備份文件,進(jìn)入備份文件目錄,執(zhí)行:

#tar -zxvf XXX.sql.tgz

mysql備份策略的實(shí)現(xiàn)(全量備份+增量備份)

(2)查看全備之后新增的binlog文件,執(zhí)行:

#grep CHANGE XXX.sql

mysql備份策略的實(shí)現(xiàn)(全量備份+增量備份)

由圖可知,這是全備時(shí)刻的binlog文件位置,即mysql-bin.000003的154行,因此在該文件之前的binlog文件中的數(shù)據(jù)都已經(jīng)包含在這個(gè)全備的sql文件中。

(3)恢復(fù)mysql-bin.000003文件的154行之后的信息

進(jìn)入到mysql-bin.000003目錄,執(zhí)行(sysecokit為數(shù)據(jù)庫(kù)名);

#mysqlbinlog --start-position=154 --database=sysecokit mysql-bin.000003 | mysql -uroot -p -v sysecokit

(4)將其他binlog文件(除去mysql-bin.000003)導(dǎo)出sql文件,執(zhí)行(-d指定數(shù)據(jù)庫(kù)):

#mysqlbinlog -d sysecokit mysql-bin.00000X >00Xbin.sql

mysql備份策略的實(shí)現(xiàn)(全量備份+增量備份)

(5) vim編輯最新的00Xbin.sql刪除其中的drop語(yǔ)句 (6)恢復(fù)全備數(shù)據(jù),執(zhí)行:

#mysql -uroot -p < XXX.sql

如:#mysql -uroot -p < 20180716.sql (7)恢復(fù)增量數(shù)據(jù),執(zhí)行(syseco為數(shù)據(jù)庫(kù)名稱(chēng)):

#mysql -uroot -p syseco<00Xbin.sql

如:#mysql -uroot -p syseco<004bin.sql 自此,已經(jīng)完成所有工作,讓我們查看一下運(yùn)行一周后產(chǎn)生的文件:

mysql備份策略的實(shí)現(xiàn)(全量備份+增量備份)

到此這篇關(guān)于mysql備份策略的實(shí)現(xiàn)(全量備份+增量備份)的文章就介紹到這了,更多相關(guān)mysql備份策略?xún)?nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: MySQL 數(shù)據(jù)庫(kù)
相關(guān)文章:
主站蜘蛛池模板: 衡水市| 泸水县| 化隆| 永丰县| 株洲市| 开封县| 鱼台县| 雅江县| 会理县| 漾濞| 白水县| 张家港市| 津南区| 湘阴县| 无极县| 玉山县| 青海省| 漯河市| 兴安盟| 永新县| 英山县| 华坪县| 南木林县| 内丘县| 南康市| 琼海市| 塔城市| 旬阳县| 日照市| 塔河县| 泌阳县| 漠河县| 容城县| 孟村| 滦南县| 栖霞市| 杂多县| 永城市| 墨江| 常熟市| 翁源县|