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