国产精品久久久久AV,免费VA人成视频网站全,国产免费人成视频在线播放播,精品一区二区三区自拍图片区

成都金信佳業(yè)科技有限公司

6 信用指數(shù)1
您當(dāng)前的位置:首頁(yè) » 新聞中心 » 怎么對(duì)MySQL數(shù)據(jù)庫(kù)進(jìn)行備份與恢復(fù)

新聞中心

怎么對(duì)MySQL數(shù)據(jù)庫(kù)進(jìn)行備份與恢復(fù)
發(fā)布時(shí)間:2019-10-22        瀏覽次數(shù):68        返回列表

一、數(shù)據(jù)庫(kù)備份的一些概念

1.造成數(shù)據(jù)丟失的原因

程序錯(cuò)誤、人為操作錯(cuò)誤、運(yùn)算錯(cuò)誤、磁盤故障、災(zāi)難(火災(zāi)、地震)和盜竊等

2.數(shù)據(jù)備份的類型

1)從物理與邏輯的角度分類

物理備份可分為:

  • 冷備份(脫機(jī)備份):在數(shù)據(jù)庫(kù)關(guān)閉狀態(tài)下進(jìn)行備份操作
  • 熱備份(聯(lián)機(jī)備份):在數(shù)據(jù)庫(kù)處于運(yùn)行狀態(tài)時(shí)進(jìn)行備份操作,該備份方法依賴數(shù)據(jù)庫(kù)的日志文件
  • 溫備份:數(shù)據(jù)庫(kù)鎖定表格(不可寫入但可讀)的狀態(tài)下進(jìn)行備份操作

說白了物理備份是對(duì)數(shù)據(jù)庫(kù)操作系統(tǒng)的物理文件(如數(shù)據(jù)文件、日志文件等)的備份,這種類型的備份適用于在出現(xiàn)問題時(shí)需要快速恢復(fù)的大型重要數(shù)據(jù)庫(kù)。

邏輯備份是對(duì)數(shù)據(jù)庫(kù)邏輯組件(如表等數(shù)據(jù)庫(kù)對(duì)象)的備份,這種類型的備份使用于可以編輯數(shù)據(jù)值或表結(jié)構(gòu)較小的數(shù)據(jù)量,或者在不同的機(jī)器體系結(jié)構(gòu)上重新創(chuàng)建數(shù)據(jù)。

2)從數(shù)據(jù)庫(kù)的備份策略角度分類

從備份策略可分為:

  • 完全備份:每次對(duì)數(shù)據(jù)進(jìn)行完整的備份,即對(duì)整個(gè)數(shù)據(jù)庫(kù)的備份、數(shù)據(jù)庫(kù)結(jié)構(gòu)和文件結(jié)構(gòu)的備份,保存的是備份完成時(shí)刻的數(shù)據(jù)庫(kù),是差異備份與增量備份的基礎(chǔ)。完全備份的備份與恢復(fù)操作都非常簡(jiǎn)單方便,但數(shù)據(jù)存在大量的重復(fù),并且會(huì)占用大量的磁盤空間,備份時(shí)間也很長(zhǎng)。
  • 差異備份:備份那些從上一次完全備份之后被修改過的所有文件,備份的時(shí)間節(jié)點(diǎn)是從上次完整備份起,備份數(shù)據(jù)量會(huì)越來越大。恢復(fù)數(shù)據(jù)時(shí),只需恢復(fù)上次的完整備份與zui近一次的差異備份。
  • 增量備份:只有那些在上次完全備份或者增量備份后被修改的文件才會(huì)被備份。以上次完整備份或上次增量備份的時(shí)間為時(shí)間點(diǎn),僅備份這之間的數(shù)據(jù)變化,因而備份的數(shù)據(jù)量小,占用空間小,備份速度快。但恢復(fù)時(shí),需要從上一次的完整備份開始到zui后一次增量備份之間的所有增量一次恢復(fù),如中間某次的備份數(shù)據(jù)損壞,將導(dǎo)致數(shù)據(jù)的丟失。
  • 3.常見的備份方法

    1)物理冷備份

    需要在數(shù)據(jù)庫(kù)關(guān)閉狀態(tài)下進(jìn)行,能夠較好的保證數(shù)據(jù)庫(kù)的完整性。一般用于非核心業(yè)務(wù),這類業(yè)務(wù)一般都允許終端,物理冷備份的特點(diǎn)就是速度快,恢復(fù)操作簡(jiǎn)單。

    通常通過直接打包數(shù)據(jù)庫(kù)文件夾(如:/usr/local/mysql/data)來實(shí)現(xiàn)

    2)專用備份工具mysqldump或mysqlhotcopy

    mysqldump是客戶端常用邏輯備份程序,能夠產(chǎn)生一組被執(zhí)行以再現(xiàn)原始數(shù)據(jù)庫(kù)對(duì)象定義和表數(shù)據(jù)的SQL語(yǔ)句。它可以轉(zhuǎn)儲(chǔ)一個(gè)到多個(gè)MySQL數(shù)據(jù)庫(kù),對(duì)其進(jìn)行備份或傳輸?shù)竭h(yuǎn)程SQL服務(wù)器。Mysqldump更為通用,因?yàn)樗梢詡浞莞鞣N表。

    Mysqlhotcopy是由Tim Bunce zui初編寫和貢獻(xiàn)的Perl腳本。Mysqlhotcopy僅用于備份MyISAM和ARCHIVE表。它只能運(yùn)行在UNIX或linux上,因?yàn)槭褂梅秶苄。谶@里就不細(xì)說了。

    3)通過啟用二進(jìn)制日志進(jìn)行增量備份

    MySQL支持增量備份,進(jìn)行增量備份時(shí)必須啟用二進(jìn)制日志。二進(jìn)制日志文件為用戶提供復(fù)制,對(duì)執(zhí)行備份點(diǎn)后進(jìn)行的數(shù)據(jù)庫(kù)更改所需的信息進(jìn)行恢復(fù)。如果進(jìn)行增量備份,需要刷新二進(jìn)制日志。

    4)通過第三方工具備份

    Percona XtraBackup是一個(gè)免費(fèi)的MySQL熱備份軟件,支持在線熱備份Innodb和XtraDB,也可以支持MySQL表備份,不過MyISAM表的備份要在表鎖的情況進(jìn)行。由于內(nèi)容太多,這里就不詳細(xì)講解了,有興趣的話可以查閱該軟件的詳細(xì)介紹了解一下。

    二、MySQL的完全備份與恢復(fù)

    1.物理冷備份與恢復(fù)

    物理冷備份一般用tar命令直接打包數(shù)據(jù)庫(kù)文件夾,而在進(jìn)行備份之前需要使用先關(guān)閉mysql服務(wù)。

    1)備份數(shù)據(jù)庫(kù)

    創(chuàng)建一個(gè)/backup目錄作為備份數(shù)據(jù)存儲(chǔ)路徑,使用tar創(chuàng)建備份文件。整個(gè)數(shù)據(jù)庫(kù)文件夾備份屬于完全備份。

    2)恢復(fù)數(shù)據(jù)庫(kù)

    模擬故障,將/usr/local/mysql/data移動(dòng)到/bak目錄下。

    2.mysqldump備份與恢復(fù)

    通過mysqldump命令可以將指定的庫(kù)、表或全部的庫(kù)導(dǎo)出為SQL腳本,便于該命令在不同版本的MySQL服務(wù)器上使用。例如,當(dāng)需要升級(jí)MySQL服務(wù)器時(shí),可以先使用mysqldump命令將原有庫(kù)信息導(dǎo)出,然后直接在升級(jí)后的MySQL服務(wù)器中導(dǎo)入即可。

    1)備份數(shù)據(jù)庫(kù)

    使用mysqldump命令導(dǎo)出數(shù)據(jù)時(shí),默認(rèn)會(huì)直接在終端顯示,若要保存到文件,還需要結(jié)合shell的">"重定向輸出操作。

    常用的選項(xiàng):-u:指定用戶名;-p:指定密碼

    示例:將mysql庫(kù)中的user表導(dǎo)出為mysql-user.sql,將整個(gè)auth庫(kù)導(dǎo)出為auth.sql,將所有庫(kù)導(dǎo)出為all-data.sql文件。

    2)查看備份文件

    通過mysqldump工具導(dǎo)出的SQL腳本是文本文件,其中""部分或以"--"開頭的行為注釋信息,使用grep、less、cat等文本工具可以查看腳本內(nèi)容。如下圖(查看auth.sql文件中的內(nèi)容):

    3)恢復(fù)數(shù)據(jù)庫(kù)

    使用mysqldump命令導(dǎo)出的SQL備份腳本,在恢復(fù)時(shí)通過mysql命令對(duì)其進(jìn)行導(dǎo)入操作。命令格式為:"mysql [選項(xiàng)] [庫(kù)名] [表名] < /備份路徑/備份文件名"。

    當(dāng)備份文件中只包含表的備份,而不包含創(chuàng)建的庫(kù)的語(yǔ)句時(shí),執(zhí)行導(dǎo)入操作時(shí)必須指定庫(kù)名,且目標(biāo)庫(kù)必須存在。

    示例:從備份文件mysql-user.sql中將表導(dǎo)入test庫(kù)。
    若備份文件中已經(jīng)包括完整的庫(kù)信息,則導(dǎo)入操作時(shí)不需要指定庫(kù)名。

    三、MySQL的增量備份與恢復(fù)

    1.增量備份的概述

    1)增量恢復(fù)的特點(diǎn)

    與完全備份不同,增量備份沒有重復(fù)數(shù)據(jù),備份量不大,時(shí)間短;但其恢復(fù)麻煩,需要上次完全備份及完全備份之后所有的增量備份才能恢復(fù),而且要對(duì)所有增量備份進(jìn)行逐個(gè)反推恢復(fù),MySQL沒有提供直接的增量備份辦法,可以通過MySQL提供的二進(jìn)制日志(binary logs)間接實(shí)現(xiàn)增量備份。

    2)MySQL二進(jìn)制日志對(duì)備份的意義

    二進(jìn)制日志保存了所有更新或者可能更新數(shù)據(jù)庫(kù)的操作。二進(jìn)制日志在啟動(dòng)MySQL服務(wù)器后開始記錄,并在文件達(dá)到二進(jìn)制日志所設(shè)置的zui大值或者接收到flush logs命令后重新創(chuàng)建新的日志文件,生成二進(jìn)制文件序列,并及時(shí)把這些日志保存到安全的存儲(chǔ)位置,即可完成一個(gè)時(shí)間段的增量備份。使用max_binlog_size配置項(xiàng)可以設(shè)置二進(jìn)制日志文件的zui大值,如果二進(jìn)制文件的大小超過了max_binlog_size,它就會(huì)自動(dòng)創(chuàng)建新的二進(jìn)制文件。

    要進(jìn)行MySQL的增量備份,首先要開啟二進(jìn)制日志功能,開啟MySQL的二進(jìn)制日志功能的實(shí)現(xiàn)方法有很多種,zui常用的是在MySQL配置文件的mysql項(xiàng)下加入"log-bin=/文件路徑/文件名"前綴,如log-bin=/usr/local/mysql/mysql-bin,然后重啟MySQL服務(wù),就可以在指定路徑下查看二進(jìn)制日志文件了(如下圖)。默認(rèn)情況下,二進(jìn)制日志文件的擴(kuò)展名是一個(gè)六位的數(shù)字,如mysql-bin.000001。

    2.增量恢復(fù)

    在維護(hù)數(shù)據(jù)庫(kù)時(shí),因?yàn)楦鞣N各樣的原因可能會(huì)導(dǎo)致數(shù)據(jù)丟失,如:認(rèn)為的SQL語(yǔ)句破壞、在進(jìn)行下一次全備份之前發(fā)生系統(tǒng)故障、數(shù)據(jù)庫(kù)主從架構(gòu)中主庫(kù)的數(shù)據(jù)發(fā)生故障等。所以常用的增量恢復(fù)的方法有三種:一般恢復(fù)、基于位置的恢復(fù)、基于時(shí)間點(diǎn)的恢復(fù)

    1)一般恢復(fù):將所有備份的二進(jìn)制日志內(nèi)容全部恢復(fù)

    命令格式:

    "mysqlbinlog [--no-defaults] 增量備份文件 | mysql -u 用戶名 -p"

    2)基于位置的恢復(fù):數(shù)據(jù)庫(kù)管理員在操作數(shù)據(jù)庫(kù)時(shí)可能在同一時(shí)間點(diǎn)既有錯(cuò)誤的操作也有正確的操作,通過基于位置進(jìn)行恢復(fù)可以更加精準(zhǔn)

    命令格式:

    格式1:恢復(fù)數(shù)據(jù)到指定位置

    "mysqlbinlog --stop-position='操作id' 二進(jìn)制日志 | mysql -u 用戶名 -p 密碼"

    格式2:從指定的位置開始恢復(fù)

    "mysqlbinlog --start-position='操作id' 二進(jìn)制日志 | mysql -u 用戶名 -p 密碼"

    3)基于時(shí)間點(diǎn)恢復(fù):跳過某個(gè)發(fā)生錯(cuò)誤的時(shí)間點(diǎn)實(shí)現(xiàn)數(shù)據(jù)恢復(fù),而基于時(shí)間點(diǎn)的恢復(fù)可以分為三種情況

    A.從日志開頭截止到某個(gè)時(shí)間點(diǎn)的恢復(fù)

    命令格式:

    "mysqlbinlog [--no-defaults] --stop-datetime='年-月-日 小時(shí):分鐘:秒' 二進(jìn)制日志 | mysql -u 用戶名 -p 密碼"

    B.從某個(gè)時(shí)間點(diǎn)到日志結(jié)尾的恢復(fù)

    命令格式:

    "mysqlbinlog [--no-defaults] --start-datetime='年-月-日 小時(shí):分鐘:秒' 二進(jìn)制日志 | mysql -u 用戶名 -p 密碼"

    C.從某個(gè)時(shí)間點(diǎn)到某個(gè)時(shí)間點(diǎn)的恢復(fù)

    命令格式:

    "mysqlbinlog [--no-defaults] --start-datetime='年-月-日 小時(shí):分鐘:秒' --stop-datetime='年-月-日 小時(shí):分鐘:秒' 二進(jìn)制日志 | mysql -u 用戶名 -p 密碼"

    關(guān)于增量恢復(fù)的操作在這里總結(jié)的可能有點(diǎn)籠統(tǒng),需要通過案例來了解,下個(gè)文檔我總結(jié)一個(gè)關(guān)于增量備份與恢復(fù)的案例我們一起來再詳細(xì)的了解一下。