這篇文章將為大家詳細(xì)講解有關(guān)MySQL完全備份與恢復(fù)的示例分析,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)是一家專注于做網(wǎng)站、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),安陽(yáng)縣網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:安陽(yáng)縣等地區(qū)。安陽(yáng)縣做網(wǎng)站價(jià)格咨詢:18980820575免費(fèi)學(xué)習(xí)推薦:mysql視頻教程
文章目錄
前言
一、MySQL 完全備份
2.1 使用 tar 打包文件夾備份
2.2 使用 mysqldump 工具備份
1.1 數(shù)據(jù)庫(kù)備份的重要性
1.2 數(shù)據(jù)庫(kù)備份的分類
1.3 MySQL 完全備份概念解讀
1.2.1 物理備份
1.2.2 邏輯備份
1.2.3 完全備份
1.2.4 差異備份
1.2.5 增量備份
1.2.6 備份方式比較
1.數(shù)據(jù)庫(kù)備份方式精講
2.mysqldump 備份演練
二、MySQL 完全恢復(fù)
2.1 使用 source 命令恢復(fù)表
2.2 使用 mysql 命令恢復(fù)表
1.1 source 命令整庫(kù)恢復(fù)
1.2 MySQL 命令整庫(kù)恢復(fù)
1.恢復(fù)整庫(kù)操作
2.恢復(fù)表操作
3.MySQL 備份思路
前言
隨著辦公自動(dòng)化和電子商務(wù)的飛速發(fā)展,企業(yè)對(duì)信息系統(tǒng)的依賴性越來(lái)越高,數(shù)據(jù)庫(kù)作為信息系統(tǒng)的核心,擔(dān)當(dāng)者重要的角色
數(shù)據(jù)庫(kù)備份,是在數(shù)據(jù)丟失的情況下,能及時(shí)恢復(fù)重要數(shù)據(jù),防止數(shù)據(jù)丟失的一種重要手段
一個(gè)合理的數(shù)據(jù)庫(kù)備份方案,能夠在數(shù)據(jù)丟失時(shí),有有效地恢復(fù)數(shù)據(jù),而且也需要考慮技術(shù)實(shí)現(xiàn)難度和有效地利用資源
一、MySQL 完全備份
1.數(shù)據(jù)庫(kù)備份方式精講
1.1 數(shù)據(jù)庫(kù)備份的重要性
生產(chǎn)環(huán)境中,數(shù)據(jù)的安全性是至關(guān)重要的,任何數(shù)據(jù)的丟失都可能產(chǎn)生嚴(yán)重的后果
數(shù)據(jù)庫(kù)備份的重要性主要體現(xiàn)在:
提高系統(tǒng)的高可用性和災(zāi)難可恢復(fù)性,在數(shù)據(jù)庫(kù)系統(tǒng)崩潰時(shí),沒(méi)有數(shù)據(jù)庫(kù)備份就沒(méi)法找到數(shù)據(jù)
使用數(shù)據(jù)庫(kù)備份還原數(shù)據(jù)庫(kù),是數(shù)據(jù)庫(kù)崩潰時(shí)提供數(shù)據(jù)恢復(fù)最小代價(jià)的最優(yōu)方案,如果讓用戶重新添加數(shù)據(jù),代價(jià)未免太大
沒(méi)有數(shù)據(jù)就沒(méi)有一切,數(shù)據(jù)庫(kù)備份是一種防范災(zāi)難的強(qiáng)力手段
使用數(shù)據(jù)庫(kù)的過(guò)程中,有多種原因造成數(shù)據(jù)的丟失:
程序錯(cuò)誤:指對(duì)數(shù)據(jù)庫(kù)操作的程序難免有些錯(cuò)誤,造成數(shù)據(jù)丟失
人為錯(cuò)誤:指由于使用人員的誤操作造成的數(shù)據(jù)被破壞,還有可能是黑客對(duì)系統(tǒng)攻擊造成的數(shù)據(jù)丟失等
計(jì)算機(jī)失敗:指運(yùn)行數(shù)據(jù)庫(kù)的服務(wù)器操作系統(tǒng)或軟件損壞,有可能造成數(shù)據(jù)的損壞
磁盤(pán)失?。褐赣脖P(pán)等存儲(chǔ)數(shù)據(jù)的硬件設(shè)備,長(zhǎng)時(shí)間運(yùn)行后可能損壞,造成數(shù)
據(jù)丟失災(zāi)難(如火災(zāi)、地震)和偷竊:指自然災(zāi)害等的發(fā)生,有可能造成數(shù)據(jù)丟失
數(shù)據(jù)丟失會(huì)造成嚴(yán)重的經(jīng)濟(jì)損失,如攜程網(wǎng)2015年5月28日數(shù)據(jù)庫(kù)崩潰,每小時(shí)損失大概106萬(wàn)美元
所以在企業(yè)信息系統(tǒng)建設(shè)中,數(shù)據(jù)庫(kù)的備份管理是非常重要的內(nèi)容
備份方式分很多種,從物理與邏輯的角度,備份可分為以下幾類:
指對(duì)數(shù)據(jù)庫(kù)操作系統(tǒng)的物理文件(如數(shù)據(jù)文件、日志文件等)的備份
物理備份又可以分為脫機(jī)備份(冷備份)和聯(lián)機(jī)備份(熱備份)
冷備份(脫機(jī)備份):在關(guān)閉數(shù)據(jù)庫(kù)時(shí)進(jìn)行的備份操作,能夠較好地保證數(shù)據(jù)庫(kù)的完整性
熱備份(聯(lián)機(jī)備份):在數(shù)據(jù)庫(kù)運(yùn)行狀態(tài)中進(jìn)行操作,這種備份方法依賴于數(shù)據(jù)庫(kù)的日志文件
指對(duì)數(shù)據(jù)庫(kù)邏輯組件(如表等數(shù)據(jù)庫(kù)對(duì)象)的備份
從數(shù)據(jù)庫(kù)的備份策略角度來(lái)看,備份又可分為完全備份、差異備份和增量備份
每次對(duì)數(shù)據(jù)進(jìn)行完整的備份
可以備份整個(gè)數(shù)據(jù)庫(kù),包含用戶表、系統(tǒng)表、索引、視圖和存儲(chǔ)過(guò)程等所有數(shù)據(jù)庫(kù)對(duì)象
但它需要花費(fèi)更多的時(shí)間和空間,所以,做一次完全備份的周期要長(zhǎng)些
備份那些自從上次完全備份之后被修改過(guò)的文件,即只備份數(shù)據(jù)庫(kù)部分的內(nèi)容
它比最初的完全備份小,因?yàn)橹话陨洗瓮耆珎浞菀詠?lái)所改變的數(shù)據(jù)庫(kù)
它的優(yōu)點(diǎn)是存儲(chǔ)和恢復(fù)速度快
只有那些在上次完全備份或者增量備份后被修改的文件才會(huì)被備份
備份方式 | 完全備份 | 差異備份 | 增量備份 |
---|---|---|---|
完全備份時(shí)的狀態(tài) | 表1、表2 | 表1、表2 | 表1、表2 |
第1次添加內(nèi)容 | 創(chuàng)建表3 | 創(chuàng)建表3 | 創(chuàng)建表3 |
備份內(nèi)容 | 表1、表2、表3 | 表3 | 表3 |
第2次添加內(nèi)容 | 創(chuàng)建表4 | 創(chuàng)建表4 | 創(chuàng)建表4 |
備份內(nèi)容 | 表1、表2、表3、表4 | 表3、表4 | 表4 |
完全備份每次都是把整個(gè)數(shù)據(jù)庫(kù)中的內(nèi)容進(jìn)行備份
差異備份在第1次添加內(nèi)容后備份,即備份新添加的內(nèi)容;第2次添加內(nèi)容后備份,把第1次添加的內(nèi)容也進(jìn)行了備份,它是根據(jù)完全備份時(shí)的狀態(tài)決定的
差異備份每次都是把完全備份之后所有的修改進(jìn)行備份,而不管之前是否做過(guò)差異備份
增量備份只備份每次新修改的內(nèi)容,第1次創(chuàng)建表3,就對(duì)表3備份,第2次添加表4后,因?yàn)橹耙呀?jīng)備份過(guò)表3,所以只備份表4的內(nèi)容
1.3 MySQL 完全備份概念解讀
MySQL 的備份方式主要有完全備份與增量備份
完全備份是對(duì)整個(gè)數(shù)據(jù)庫(kù)的備份、數(shù)據(jù)庫(kù)結(jié)構(gòu)和文件結(jié)構(gòu)的備份,保存的是備份完成時(shí)刻的數(shù)據(jù)庫(kù),是增量備份的基礎(chǔ)
完全備份的優(yōu)點(diǎn)是備份與恢復(fù)操作簡(jiǎn)單方便,缺點(diǎn)是數(shù)據(jù)存在大量重復(fù),占用大量的備份空間,備份的時(shí)間長(zhǎng)
在生產(chǎn)環(huán)境中,這兩種備份方式都會(huì)使用,需要制定合理高效的方案達(dá)到備份數(shù)據(jù)的目的,避免數(shù)據(jù)丟失造成嚴(yán)重的后果
2.mysqldump 備份演練
MySQL 數(shù)據(jù)庫(kù)的備份可以采用兩種方式
因?yàn)閿?shù)據(jù)庫(kù)實(shí)際上就是文件,直接打包數(shù)據(jù)庫(kù)文件夾,或者是使用專用備份工具 mysqldump 都可以進(jìn)行備份工作
2.1 使用 tar 打包文件夾備份
MySQL 的數(shù)據(jù)庫(kù)文件默認(rèn)都是保存在安全目錄的 data 文件夾下,可以直接保存 data 文件夾,因?yàn)檎加每臻g較大,可以使用data 打包壓縮進(jìn)行保存
yum -y install xz#數(shù)據(jù)庫(kù)文件很大,可以使用壓縮率較大的xz格式壓縮,選需要安裝xz壓縮格式工具tar Jcvf /opt/mysql-$(date +%F).tar.xz /usr/local/mysql/data/#對(duì)數(shù)據(jù)庫(kù)文件夾進(jìn)行打包操作ls /opt#查看打包命令是否運(yùn)行成功,已經(jīng)生成了備份文件du -sh /opt/mysql-2021-02-05.tar.xz #對(duì)比打包前后的文件大小,可以看到壓縮的備份文件所占用空間很小tar -Jxvf /opt/mysql-2021-02-05.tar.xz -C /usr/local/mysql/data/systemctl restart mysql#如果數(shù)據(jù)庫(kù)文件損壞數(shù)據(jù)丟失,可以解壓縮文件,相當(dāng)于數(shù)據(jù)恢復(fù)
2.2 使用 mysqldump 工具備份
上文中演示的是對(duì) MySQL 整個(gè)數(shù)據(jù)庫(kù)的目錄進(jìn)行壓縮的方式,是備份數(shù)據(jù)庫(kù)中所有的內(nèi)容
mysqldump 是 mysql 用于轉(zhuǎn)存儲(chǔ)數(shù)據(jù)庫(kù)的實(shí)用程序(自帶),它主要產(chǎn)生一個(gè) SQL 腳本,其中包含從頭重新創(chuàng)建數(shù)據(jù)庫(kù)所必需的命令(如 CREATE、TABLE、INSERT等)
使用 mysqldump 可以更加靈活地控制備份的內(nèi)容,比如某幾個(gè)表或庫(kù)都可以單獨(dú)備份
#開(kāi)始之前,創(chuàng)建庫(kù)和表,用作例子mysql -uroot -p123123#輸入密碼進(jìn)入數(shù)據(jù)庫(kù),以上為我的密碼create database SCHOOL;#創(chuàng)建庫(kù)use SCHOOL;create table CLASS01 ( id int(2) not null auto_increment, name varchar(10) not null, sex char(5) not null, hobby varchar(10), primary key (id));#創(chuàng)建表結(jié)構(gòu)#字段一:id,較大顯示長(zhǎng)度2,不能為空,自動(dòng)遞增從1開(kāi)始#字段二:name,可變長(zhǎng)度字段,10,不能為空#字段三:sex,固定長(zhǎng)度5,不能為空#字段四:hobby,可變長(zhǎng)度,最多10字符#字段四:主鍵(id)insert into CLASS01 values(1,'wangyi','man','reading');insert into CLASS01 values(2,'wanger','woman','singing');#插入2條數(shù)據(jù)select * from CLASS01;#檢查一下quit#退出數(shù)據(jù)庫(kù)
#使用 mysqldump 對(duì)某些表進(jìn)行完全備份,命令格式如下:mysqldump -u[用戶名] -p[密碼] [選項(xiàng)] [數(shù)據(jù)庫(kù)名] [數(shù)據(jù)表名] > /備份路徑/備份文件名.sql#導(dǎo)出的為數(shù)據(jù)庫(kù)腳本文件例:對(duì)庫(kù)SCHOOL中的表class進(jìn)行備份至/opt/目錄下mysqldump -uroot -p[密碼] SCHOOL CLASS01 > /opt/test01.sql
#對(duì)某些庫(kù)進(jìn)行完全備份mysqldump -uroot -p[密碼] [數(shù)據(jù)庫(kù)名] > /目錄/備份文件名.sql例:mysqldump -uroot -p123123 SCHOOL > /opt/test02#對(duì)多個(gè)庫(kù)進(jìn)行完全備份mysqldump -uroot -p123123 --databases SCHOOL sys > /opt/test03.sql#對(duì)所有庫(kù)進(jìn)行完全備份mysqldump -uroot -p123123 --all-databases > /opt/test04.sql#直接備份表結(jié)構(gòu)mysqldump -uroot -p123123 -d SCHOOL CLASS01 > /opt/test05.sqlls /opt/#查看打包命令是否運(yùn)行成功,已經(jīng)生成了備份文件
cat /opt/test05.sql#分析 mysqldump 工具生成的備份文件的內(nèi)容
上面使用了 -d 選項(xiàng),說(shuō)明只保存數(shù)據(jù)庫(kù)的表結(jié)構(gòu),且表中只有一個(gè)庫(kù),可以看到先刪除了表(同名),再創(chuàng)建了它
刪除和創(chuàng)建都是最普通的 MySQL 命令,任何一條在 MySQL 中都是可以執(zhí)行的語(yǔ)句,有了這些語(yǔ)句就可以創(chuàng)建出和現(xiàn)在的表結(jié)構(gòu)相同的表
如果不使用 -d 選項(xiàng),會(huì)把數(shù)據(jù)也進(jìn)行備份,下面看看數(shù)據(jù)時(shí)如何保存的
cat /opt/test01
可以看到與使用 -d 參數(shù)的差別是最后出現(xiàn)了 insert into 語(yǔ)句,往數(shù)據(jù)庫(kù)中插入了兩條數(shù)據(jù),也就是說(shuō),數(shù)據(jù)的備份是保存的插入語(yǔ)句操作
通過(guò)以上分析,很容易理解,備份的本質(zhì)就是保存數(shù)據(jù)庫(kù)當(dāng)前表結(jié)構(gòu)的創(chuàng)建語(yǔ)句和現(xiàn)有數(shù)據(jù)的插入語(yǔ)句,有了它們就可以直接恢復(fù)數(shù)據(jù)庫(kù)的狀態(tài)
二、MySQL 完全恢復(fù)
前面介紹了數(shù)據(jù)庫(kù)的完全備份,使用 mysqldump 工具可以把數(shù)據(jù)的創(chuàng)建語(yǔ)句保存在備份的腳本文件中
當(dāng)出現(xiàn)錯(cuò)誤時(shí),可以使用以下幾種方法恢復(fù)它們
1.恢復(fù)整庫(kù)操作
1.1 source 命令整庫(kù)恢復(fù)
mysql -uroot -p123123show databases;drop database SCHOOL;show databases;source /opt/test03.sql#之前備份過(guò)的,該備份為SCHOOL和sys兩個(gè)庫(kù)的完整備份#注意!選項(xiàng)得加“--databases”才是完整的備份,不然會(huì)恢復(fù)不了
1.2 MySQL 命令整庫(kù)恢復(fù)
quitmysql -uroot -p123123 -e 'drop database SCHOOL;'mysql -uroot -p123123 -e 'SHOW DATABASES;'mysql -uroot -p123123 < /opt/test03.sql mysql -uroot -p123123 -e 'SHOW DATABASES;'
2.恢復(fù)表操作
恢復(fù)數(shù)據(jù)表同樣可以使用 source 命令和 mysql 命令操作
2.1 使用 source 命令恢復(fù)表
mysql -uroot -p123123use SCHOOL;show tables;drop table CLASS01; source /opt/test01.sql#恢復(fù)表show tables;select * from CLASS01;#查看
2.2 使用 mysql 命令恢復(fù)表
quitmysql -uroot -p123123 -e 'SHOW TABLES FROM SCHOOL;'mysql -uroot -p123123 -e 'DROP TABLES SCHOOL.CLASS01;'mysql -uroot -p123123 -e 'SHOW TABLES FROM SCHOOL;'mysql -uroot -p123123 SCHOOL < /opt/test01.sqlmysql -uroot -p123123 -e 'SHOW TABLES FROM SCHOOL;'
3.MySQL 備份思路
MySQL 需要定期實(shí)施備份,指定合適的備份計(jì)劃或策略,并嚴(yán)格遵守
除了進(jìn)行完全備份,開(kāi)啟 MySQL 服務(wù)器的日志功能也很重要,完全備份加上日志,可以對(duì) MySQL 進(jìn)行較大化還原
備份文件的名字還需鑰使用統(tǒng)一的易于理解的名稱,推薦使用庫(kù)名或表名加上時(shí)間的命名規(guī)則,在需要恢復(fù)數(shù)據(jù)庫(kù)時(shí)能很容易的定位到相應(yīng)的所需備份文件
關(guān)于“MySQL完全備份與恢復(fù)的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。