站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

MySQL介紹增量備份與恢復

MySQL介紹增量備份與恢復

免費學習推薦:mysql視頻教程

文章目錄

  • 一、MySQL 增量備份
    • 1.增量備份的概念
      • 1.1 為什么使用增量備份
      • 1.2 增量備份的特點
    • 2.增量備份示例
  • 二、MySQL 增量恢復
    • 1.增量恢復的場景
    • 2.丟失完全備份之后更改的數(shù)據(jù)的恢復步驟
    • 3.完全備份之后丟失所有數(shù)據(jù)的恢復步驟
    • 4. 基于時間點與位置的恢復
      • 4.1 基于時間點的恢復
      • 4.1 基于位置的操作
    • 5. 指定企業(yè)備份策略的思路

一、MySQL 增量備份

增量備份可以在完全備份的基礎(chǔ)上,減少備份文件的大小,從而加快備份和恢復的速度

1.增量備份的概念

1.1 為什么使用增量備份

  • 前面章節(jié)講到了完全備份有兩種方式,一種是使用 tar 打包數(shù)據(jù)文件,另一種是
    使用 mysqldump 進行完全備份
  • 完全備份存在的問題很容易看到,每次都是把所有的數(shù)據(jù)內(nèi)容進行備份,備份數(shù)據(jù)中有大量的重復數(shù)據(jù),并且完全備份的時間與恢復的時間很長
  • 解決完全備份存在的問題就是使用增量備份的方式,增量備份就是備份自上一次備份之后增加或改變的文件或者內(nèi)容

1.2 增量備份的特點

  • 增量備份的優(yōu)點是沒有重復數(shù)據(jù),備份量不大,時間短
  • 缺點也很明顯,需要上次完全備份及完全備份之后所有的增量備份才能恢復,而且對所有增量備份進行逐個反推恢復,操作較為繁鎖
  • MySQL 沒有提供直接的增量備份方法,但是可以通過 MySQL 的二進制日志(binary
    logs)間接實現(xiàn)增量備份

二進制日志對備份的意義如下:

  1. 二進制日志保存了所有更新或者可能更新數(shù)據(jù)庫的操作
  2. 二進制日志在啟動 MySQL 服務(wù)器后開始記錄,并在文件達到 max_binlog_size 所設(shè)置的大小或者接收到 flush logs 命令后重新創(chuàng)建新的日志文件
  3. 只需要定時執(zhí)行 flush logs 方法重新創(chuàng)建新的日志,生成二進制文件序列,并及時把這些日志保存到安全的地方就完成了一個時間段的增量備份

2.增量備份示例

  1. 開啟二進制日志功能
vim /etc/my.cnf...[mysqld]log-bin=mysql-binbinlog_format = MIXED#指定二進制日志(binlog)的記錄格式為 MIXEDsystemctl restart mysqld.service#重啟服務(wù)cd /usr/local/mysql/datals -l /usr/local/mysql/data/mysql-bin.*#查看二進制文件#二進制日志(binlog)有3種不同的記錄格式:STATEMENT(基于SQL語句)、ROW(基于行)、MIXED(混合模式)#默認格式是 STATEMENT

MySQL介紹增量備份與恢復
MySQL介紹增量備份與恢復

  1. 每周選擇服務(wù)器負載較輕的時間段,或者用戶訪問較少的時間段進行備份
mysqldump -uroot -p123123 SCHOOL CLASS01 > /opt/SCHOOL_CLASS01_$(date +%F).sql#對表進行完全備份mysqldump -uroot -p123123 --all-databases SCHOOL > /opt/SCHOOL_$(date +%F).sql#對庫進行完全備份crontab -e#也可以使用計劃性任務(wù)來執(zhí)行30 3 * * 3 mysqldump -uroot -p123123 SCHOOL CLASS01 > /opt/SCHOOL_CLASS01_$(date +%F).sql30 3 * * 3 mysqldump -uroot -p123123 --all-databases SCHOOL > /opt/SCHOOL_$(date +%F).sql每周三的凌晨 3:00 對數(shù)據(jù)庫和表進行完全備份

MySQL介紹增量備份與恢復
MySQL介紹增量備份與恢復

  1. 可每天進行增量備份操作,生成新的二進制日志文件,這樣在插入新的數(shù)據(jù)后,新的二進制文件對應(yīng)的就是數(shù)據(jù)庫的變化的內(nèi)容
ls /usr/local/mysql/datamysqladmin -uroot -p123123 flush-logs

MySQL介紹增量備份與恢復

  1. 插入新的數(shù)據(jù),以模擬數(shù)據(jù)的增加或變更
use SCHOOL;insert into CLASS01 values(3,'wangsan','woman','games');insert into CLASS01 values(4,'wangsi','man','runing');select * from CLASS01;

MySQL介紹增量備份與恢復

  1. 生成新的二進制文件并查看其內(nèi)容
cd /usr/local/mysql/data/lsmysqladmin -uroot -p123123 flush-logs

MySQL介紹增量備份與恢復

cp mysql-bin.000002 /opt/#將記錄變更的二進制文件02復制至/opt目錄下cd /opt/lsmysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000002#使用64位編碼機制去解碼,按行讀取詳細內(nèi)容

MySQL介紹增量備份與恢復
MySQL介紹增量備份與恢復


二、MySQL 增量恢復

  • 增量恢復比完全恢復操作更為繁瑣
  • 每個增量備份都是單獨的個體,數(shù)據(jù)不重復,需要控制得更加精確

1.增量恢復的場景

  • 當數(shù)據(jù)發(fā)送錯誤時,應(yīng)根據(jù)實際情況選擇使用完全備份恢復,還是增量備份
  • 增量備份的場景是:
    • 人為的 SQL 語句破壞了數(shù)據(jù)庫
    • 在進行下一次全備之前發(fā)送系統(tǒng)故障導致數(shù)據(jù)庫數(shù)據(jù)丟失
    • 在主從架構(gòu)中,主庫數(shù)據(jù)發(fā)送了故障
  • 根據(jù)數(shù)據(jù)丟失的情況可以分為兩類:
    • 只丟失了完全備份之后更改的數(shù)據(jù)
    • 完全備份之后丟失所有的數(shù)據(jù)

2.丟失完全備份之后更改的數(shù)據(jù)的恢復步驟

  • 當完全備份之后更改的數(shù)據(jù)丟失,需要把完全備份之后的所有增量備份文件逐個恢復
  • 步驟如下:
mysql -uroot -p123123use SCHOOL;delete from CLASS1 where id=3;delete from CLASS1 where id=4;#刪除插入的兩條數(shù)據(jù),模擬完全備份后數(shù)據(jù)丟失的故障select * from CLASS01;#檢查quitmysqlbinlog --no-defaults /opt/mysql-bin.000002 | mysql -uroot -p123123#使用二進制文件進行恢復操作mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"#檢查表內(nèi)容是否恢復

MySQL介紹增量備份與恢復
MySQL介紹增量備份與恢復

3.完全備份之后丟失所有數(shù)據(jù)的恢復步驟

  • 當完全備份和增量備份之后,所有的數(shù)據(jù)丟失,需要把完全備份和所有增量備份文件逐個恢復
  • 步驟如下:
mysql -uroot -p123123use SCHOOL;drop table CLASS01;#直接刪除整個表,假設(shè)完全備份后所有數(shù)據(jù)都丟失了quitmysql -uroot -p123123 SCHOOL < /opt/SCHOOL_CLASS01_2021-02-06.sqlmysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"#進行完全備份后查看一下mysqlbinlog --no-defaults /opt/mysql-bin.000002 | mysql -uroot -p123123#增量備份mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"

MySQL介紹增量備份與恢復
MySQL介紹增量備份與恢復

4. 基于時間點與位置的恢復

  • 利用二進制日志可實現(xiàn)基于時間點與位置的恢復,例如由于誤操作刪除了一張表,這時完全恢復是沒有用的
  • 因為日志里還有誤操作的語句,我們需要的是恢復到誤操作之前的狀態(tài),然后跳過誤操作的語句,再恢復后面操作的語句

4.1 基于時間點的恢復

  • 基于時間點的恢復,就是將某個起始時間的二進制文件導入數(shù)據(jù)庫中,從而跳過某個發(fā)生錯誤的時間點實現(xiàn)數(shù)據(jù)的恢復
  • 使用 mysqlbinlog 加上 –stop-datetime 選項,表示在哪個時間點結(jié)束,后面誤操作的語句不執(zhí)行
  • –start-datetime 選項表示執(zhí)行后面的語句
  • 結(jié)合使用它們就可以跳過誤操作的語句,完成恢復工作
  • 需要注意的是,二進制文件中保存的日期格式需要調(diào)整為用“-”分割
#恢復用戶“wangsan”的數(shù)據(jù),而不恢復“wangsi”mysql -uroot -p123123 -e "truncate table SCHOOL.CLASS01;"mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"mysqlbinlog --no-defaults --stop-datetime='2021-02-06 15:58:39' /opt/mysql-bin.000002 |mysql -uroot -p123123mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"

MySQL介紹增量備份與恢復

#恢復“wangsi”的數(shù)據(jù)mysqlbinlog --no-defaults --start-datetime='2021-02-06 15:58:39' /opt/mysql-bin.000002 |mysql -uroot -p

MySQL介紹增量備份與恢復

4.1 基于位置的操作

  • 基于位置的恢復,就是使用基于時間點的恢復
  • 可能會出現(xiàn)在一個時間點里既同時存在正確的操作又存在錯誤的操作,基于位置是一種更為精確的恢復方式
mysqlbinlog --no-defaults --stop-position='609' /opt/mysql-bin.000002 | mysql -uroot -p#使用64位編碼機制去解碼并按行讀取二進制文件02(增量備份)的詳細內(nèi)容......略

MySQL介紹增量備份與恢復

#僅恢復“1810”之前的數(shù)據(jù),即不恢復“wangsi”的數(shù)據(jù)mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"mysql -uroot -p123123 -e "truncate table SCHOOL.CLASS01;"mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"mysqlbinlog --no-defaults --stop-position='1810' /opt/mysql-bin.000002 | mysql -uroot -pmysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"

MySQL介紹增量備份與恢復

#僅恢復“wangsi”的數(shù)據(jù),跳過“wangsan”的數(shù)據(jù)恢復,即僅有第四條記錄mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"mysqlbinlog --no-defaults --start-position='1810' /opt/mysql-bin.000002 | mysql -uroot -p123123mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"

MySQL介紹增量備份與恢復

5. 指定企業(yè)備份策略的思路

  • 指定企業(yè)備份策略要根據(jù)企業(yè)數(shù)據(jù)庫的實際讀寫的頻繁性與數(shù)據(jù)的重要性進行
  • 數(shù)據(jù)更新頻繁,則應(yīng)該進行較為頻繁的備份
  • 數(shù)據(jù)較為重要,則在有適當更新時進行備份
  • 在數(shù)據(jù)庫壓力小的時段進行全備,如一周一次,然后每天增備
  • 根據(jù)公司的規(guī)模,中小公司可一天一次全備,大公司可每周一次全備,每天進行一次增備,并且盡量為企業(yè)實現(xiàn)主從復制架構(gòu)

相關(guān)免費學習推薦:mysql數(shù)據(jù)庫(視頻)

贊(0)
分享到: 更多 (0)
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
热久久这里只有精品| 人妻精品久久久久中文字幕| 91精品无码久久久久久五月天| 亚洲精品乱码久久久久久按摩 | 精品亚洲视频在线观看| 日韩免费高清视频| 中日韩精品视频在线观看| 国内精品国语自产拍在线观看91| 亚洲国产成人精品电影| 久久久久人妻精品一区| 久久夜色精品国产尤物| 亚洲热线99精品视频| 国产在线精品一区二区三区不卡 | 日韩福利在线视频| 日韩一区二区三区在线精品| 国产精品无码免费视频二三区| 国产精品无码一区二区在线观| 伊人久99久女女视频精品免| 久久机热这里只有精品无需| 精品少妇ay一区二区三区| 亚洲自偷精品视频自拍| 久久精品国产99久久无毒不卡| 亚洲av午夜福利精品一区人妖 | 2022久久国产精品免费热麻豆| 久久亚洲精品国产精品| 久久国产乱子伦精品在| 久久九九国产精品怡红院| 久久99国产精品| 亚洲国产精品自在在线观看| 无码国产69精品久久久久网站| 久久丝袜精品综合网站| 亚洲AV成人精品网站在线播放| 亚洲国产精品久久久久| 少妇人妻偷人精品无码视频| 一本大道久久a久久精品综合| 日韩人妻精品一区二区三区视频| 99视频在线精品免费| 3d动漫精品啪啪一区二区中 | 国产av无码专区亚洲国产精品 | 无码日韩精品一区二区免费暖暖| 久久国产精品61947|