亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2021年07月06日 11:01:33   作者:isyslab  
最近項目需要對數(shù)據(jù)庫數(shù)據(jù)進行備份,通過查閱各種資料,設計了一套數(shù)據(jù)庫備份策略,本文就來詳細的介紹一下,感興趣的可以了解一下

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

設計場景

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

技術點

Mysqldump、mysqlbinlog、crontab

服務器信息

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

準備工作

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

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

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

#chown -R mysql.mysql mysql-bin

這里寫圖片描述

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

#vim /etc/my.cnf

這里寫圖片描述

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

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

#systemctl restart mysqld.service

(5)查看日志文件:

#cd /home/mysql/mysql-bin

這里寫圖片描述

(6)進入數(shù)據(jù)庫,查看啟動效果:

#show variables like '%log_bin%';

這里寫圖片描述

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

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

#vim Mysql-FullyBak.sh

這里寫圖片描述

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

編寫增量備份腳本

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

#vim Mysql-DailyBak.sh

這里寫圖片描述

設置定時任務crontab

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

#yum install crontabs

服務操作說明:

#/bin/systemctl start crond.service //啟動服務
#/bin/systemctl stop crond.service //關閉服務
#/bin/systemctl restart crond.service //重啟服務
#/bin/systemctl reload crond.service //重新載入

配置:

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

加入開機自動啟動:

#chkconfig –level 35 crond on

(2)在命令行輸入:

#crontab -e 

添加相應的任務,wq存盤退出

#每個星期日凌晨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

說明:默認情況下,crontab執(zhí)行一次任務后,會通過email通知用戶,為避免每次發(fā)信息,加入/dev/null 2>&1

(3)查看定時任務:#crontab -l

這里寫圖片描述 

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

恢復操作

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

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

#tar -zxvf XXX.sql.tgz

這里寫圖片描述 

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

#grep CHANGE XXX.sql

這里寫圖片描述

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

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

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

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

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

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

這里寫圖片描述 

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

#mysql -uroot -p < XXX.sql

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

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

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

這里寫圖片描述 

到此這篇關于mysql備份策略的實現(xiàn)(全量備份+增量備份)的文章就介紹到這了,更多相關mysql備份策略內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • mysql的虛擬表(DUAL)的介紹及使用場景

    mysql的虛擬表(DUAL)的介紹及使用場景

    本文主要介紹了mysql的虛擬表(DUAL)的介紹及使用場景,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-04-04
  • Centos7下安裝MySQL8.0.23的步驟(小白入門級別)

    Centos7下安裝MySQL8.0.23的步驟(小白入門級別)

    這篇文章主要介紹了Centos7下安裝MySQL8.0.23的步驟(小白入門級別),本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • 淺談mysql數(shù)據(jù)庫中的using的用法

    淺談mysql數(shù)據(jù)庫中的using的用法

    在用Join進行多表聯(lián)合查詢時,我們通常使用On來建立兩個表的關系。其實還有一個更方便的關鍵字,那就是Using。
    2015-04-04
  • 基于MySql的擴展功能生成全局ID

    基于MySql的擴展功能生成全局ID

    本文借用 MySQL的擴展功能 REPLACE INTO 來生成全局id,REPLACE INTO和INSERT的功能一樣,但是當使用REPLACE INTO插入新數(shù)據(jù)行時,如果新插入的行的主鍵或唯一鍵(UNIQUE Key)已有的行重復時,已有的行會先被刪除,然后再將新數(shù)據(jù)行插入
    2015-12-12
  • mysql判斷字符串是否存在幾種常見方式

    mysql判斷字符串是否存在幾種常見方式

    寫SQL語句我們經(jīng)常需要判斷一個字符串中是否包含另一個字符串,下面這篇文章主要給大家介紹了關于mysql判斷字符串是否存在的幾種常見方式,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-05-05
  • MySQL中慢SQL優(yōu)化方法小結

    MySQL中慢SQL優(yōu)化方法小結

    這篇文章主要為大家詳細介紹了MySQL中慢SQL優(yōu)化方法的相關知識,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以參考一下
    2024-04-04
  • MySQL數(shù)據(jù)庫分庫分表的方案

    MySQL數(shù)據(jù)庫分庫分表的方案

    隨著項目不斷迭代,使用人數(shù)的不斷增加,數(shù)據(jù)庫中某些表數(shù)據(jù)正在逐步膨脹,往單表千萬迅速靠攏,,所以最近也在考慮做一下分庫分表,本文就給大家詳細講解了什么分庫分表和分庫分表的方案,需要的朋友可以參考下
    2023-11-11
  • mysql蠕蟲復制基礎知識點

    mysql蠕蟲復制基礎知識點

    在本篇內(nèi)容中我們給大家分享了關于mysql蠕蟲復制基礎知識點,對此有需要的朋友們跟著學習下吧。
    2019-02-02
  • mySQL中in查詢與exists查詢的區(qū)別小結

    mySQL中in查詢與exists查詢的區(qū)別小結

    最近被一個朋友問到mySQL中in查詢和exists的區(qū)別,當然只是草草的回答了下,今天偶然看到了一篇關于mysql中的exists查詢的文章,讀完感覺太”冷落”它了,這里總結一下,也跟自己常用的in查詢做一下對比。有需要的朋友們可以參考借鑒,下面來一起學習學習吧。
    2016-11-11
  • MySQL中的undo日志

    MySQL中的undo日志

    這篇文章主要介紹了MySQL中的undo日志的相關資料,幫助大家更好的理解和學習MySQL的相關知識,感興趣的朋友可以了解下
    2020-11-11

最新評論