免費學習推薦:mysql影片教學
文章目錄
-
- ##前言
- 一、MySQL 完全備份
-
- #1.資料庫備份方式精簡
-
- 1.1 資料庫備份的重要性
- 1.2 資料庫備份的分類
-
- 1.2.1 實體備份
- 1.2.2 邏輯備份
- ##1.2. 3 完全備份
- 1.2.4 差異備份
- 1.2.5 增量備份
1.2.6 備份方式比較
-
1.3 MySQL 完全備份概念解讀
-
- 2.mysqldump 備份演練2.2 使用mysqldump 工具備份
-
- 二、MySQL 完全還原
-
- 1.還原整庫作業1.2 MySQL 指令整庫復原
-
- 2.復原表格操作
-
#2.1 使用source 指令還原表
- 2.2 使用mysql 指令還原表
-
- 3.MySQL 備份想法
前言
隨著辦公室自動化和電子商務的快速發展,企業對資訊系統的依賴性越來越高,資料庫作為資訊系統的核心,擔當者重要的角色
資料庫備份,是在資料遺失的情況下,能及時恢復重要數據,防止資料遺失的重要手段
一個合理的資料庫備份方案,能夠在資料遺失時,有有效地恢復數據,也需要考慮技術實現難度和有效地利用資源
一、MySQL 完全備份
-
- 1.資料庫備份方式精簡
-
1.1 資料庫備份的重要性
生產環境中,資料的安全性是至關重要的,任何資料的遺失都可能產生嚴重的後果
- 資料庫備份的重要性主要體現在:
- ##提高系統的高可用性和災難可恢復性,在資料庫系統崩潰時,沒有資料庫備份就沒法找到資料
- 使用資料庫備份還原資料庫,是資料庫崩潰時提供資料復原最小代價的最優方案,如果讓使用者重新新增數據,代價未免太大
- 沒有資料就沒有一切,資料庫備份是一種防範災難的強力手段
-
使用資料庫的過程中,有多種原因造成資料的遺失:
- 程式錯誤:指對資料庫操作的程式難免有些錯誤,造成資料遺失
- 人為錯誤:指使用人員的誤操作造成的數據被破壞,還有可能是駭客對系統攻擊造成的資料遺失等
電腦失敗:指運行資料庫的伺服器作業系統或軟體損壞,有可能造成資料的損壞
磁碟失敗:指硬碟等儲存資料的硬體設備,長時間運轉後可能損壞,造成數
根據遺失#災難(如火災、地震)和偷竊:指自然災害等的發生,有可能造成資料遺失
- 資料遺失會造成嚴重的經濟損失,如攜程網2015年5月28日資料庫崩潰,每小時損失約106萬美元
- #所以在企業資訊系統建置中,資料庫的備份管理是非常重要的內容
- 1.2 資料庫備份的分類
-
備份方式分很多種,從實體與邏輯的角度,備份可分為以下幾類:
指對資料庫作業系統的實體檔案(如資料檔案、記錄文件等等)的備份
實體備份又可以分為離線備份(冷備份)與線上備份(熱備份)
###冷備份(脫機備份):在關閉資料庫時進行的備份操作,能夠較好地保證資料庫的完整性######熱備份(線上備份):在資料庫運行狀態中進行操作,這種備份方法依賴資料庫的日誌檔案######## ##1.2.2 邏輯備份#########指對資料庫邏輯元件(如表格等資料庫物件)的備份############從資料庫的備份策略角度來看,備份又可分為完全備份、差異備份與增量備份###
1.2.3 完全備份
- 每次對資料進行完整的備份
- 可以備份整個資料庫,包含使用者表、系統表、索引、檢視和預存程序等所有資料庫物件
- 但它需要花費更多的時間和空間,所以,做一次完全備份的周期要長些
1.2.4 差異備份
- 備份那些自從上次完全備份之後被修改過的文件,即只備份資料庫部分的內容
- 它比最初的完全備份小,因為只包含自上次完全備份以來所改變的資料庫
- 它的優點是儲存和復原速度快
1.2.5 增量備份
- 只有那些在上次完全備份或增量備份後被修改的檔案才會被備份
1.2.6 備份方式比較
##備份方式 | 完全備份 | 差異備份 | 增量備份 |
#完全備份時的狀態 | #表1、表2 | 表1、表2 | 表1、表2 |
第1次加入內容 | #建立表格3 | 建立表格3 | 建立表格3 |
#備份內容 | 表1、表格2、表格3 | 表3 | 表3 |
第2次加入內容 | 建立表格4##建立表4 |
建立表格4 |
|
備份內容
表1、表2、表3、表4 |
表3、表4 |
表4 |
|
- 完全備份每次都是把整個資料庫中的內容進行備份
- 差異備份在第1次加入內容後備份,也就是備份新加入的內容;第2次加入內容後備份,把第1次新增的內容也進行了備份,它是根據完全備份時的狀態決定的
- 差異備份每次都是把完全備份之後所有的修改進行備份,而不管之前是否做過差異備份
- 增量備份只備份每次新修改的內容,第1次建立表3,就對錶3備份,第2次加入表4後,因為之前已經備份過表3 ,所以只備份表4的內容
1.3 MySQL 完全備份概念解讀
- MySQL 的備份方式主要有完全備份與增量備份
- 完全備份是對整個資料庫的備份、資料庫結構和檔案結構的備份,保存的是備份完成時刻的資料庫,是增量備份的基礎
- 完全備份的優點是備份與復原作業簡單方便,缺點是資料存在大量重複,佔用大量的備份空間,備份的時間長
- 在生產環境中,這兩種備份方式都會使用,需要製定合理高效的方案達到備份資料的目的,避免資料遺失造成嚴重的後果
2.mysqldump 備份演練
- MySQL 資料庫的備份可以採用兩種方式
- 因為資料庫其實就是文件,直接打包資料庫資料夾,或是使用專用備份工具mysqldump 都可以進行備份工作
2.1 使用tar 打包資料夾備份
- MySQL 的資料庫檔案預設都是保存在安全性目錄的data 資料夾下,可以直接儲存data 資料夾,因為佔用空間較大,可以使用data 打包壓縮進行儲存
yum -y install xz#数据库文件很大,可以使用压缩率较大的xz格式压缩,首选需要安装xz压缩格式工具tar Jcvf /opt/mysql-$(date +%F).tar.xz /usr/local/mysql/data/#对数据库文件夹进行打包操作ls /opt#查看打包命令是否运行成功,已经生成了备份文件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#如果数据库文件损坏数据丢失,可以解压缩文件,相当于数据恢复
登入後複製
2.2 使用mysqldump 工具備份
- 上文中示範的是對MySQL整個資料庫的目錄進行壓縮的方式,是備份資料庫中所有的內容
- mysqldump 是mysql 用於轉存儲資料庫的實用程式(自帶),它主要產生一個SQL 腳本,其中包含從頭重新創建資料庫所必需的指令(如CREATE、TABLE、INSERT等)
- 使用mysqldump 可以更靈活地控制備份的內容,例如某幾個表或函式庫都可以單獨備份
#开始之前,创建库和表,用作例子mysql -uroot -p123123#输入密码进入数据库,以上为我的密码create database SCHOOL;#创建库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));#创建表结构#字段一: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条数据select * from CLASS01;#检查一下quit#退出数据库
登入後複製
#使用 mysqldump 对某些表进行完全备份,命令格式如下:mysqldump -u[用户名] -p[密码] [选项] [数据库名] [数据表名] > /备份路径/备份文件名.sql#导出的为数据库脚本文件例:对库SCHOOL中的表class进行备份至/opt/目录下mysqldump -uroot -p[密码] SCHOOL CLASS01 > /opt/test01.sql
登入後複製
#对某些库进行完全备份mysqldump -uroot -p[密码] [数据库名] > /目录/备份文件名.sql例:mysqldump -uroot -p123123 SCHOOL > /opt/test02#对多个库进行完全备份mysqldump -uroot -p123123 --databases SCHOOL sys > /opt/test03.sql#对所有库进行完全备份mysqldump -uroot -p123123 --all-databases > /opt/test04.sql#直接备份表结构mysqldump -uroot -p123123 -d SCHOOL CLASS01 > /opt/test05.sqlls /opt/#查看打包命令是否运行成功,已经生成了备份文件
登入後複製
#cat /opt/test05.sql#分析 mysqldump 工具生成的备份文件的内容
登入後複製
- 上面使用了-d 選項,說明只保存資料庫的表結構,且表中只有一個庫,可以看到先刪除了表(同名),再創建了它
- 刪除和創建都是最普通的MySQL 指令,任何一條在MySQL 中都是可以執行的語句,有了這些語句就可以創建出和現在的表結構相同的表
- 如果不使用-d 選項,會把資料也進行備份,下面看看資料時如何保存的
- #可以看到與使用-d 參數的差異是最後出現了insert into 語句,往資料庫中插入了兩條數據,也就是說,資料的備份是保存的插入語句操作
- 透過以上分析,很容易理解,備份的本質就是保存資料庫目前表結構的建立語句和現有資料的插入語句,有了它們就可以直接恢復資料庫的狀態
#二、MySQL 完全恢復
- 前面介紹了資料庫的完全備份,使用mysqldump 工具可以把資料的建立語句保存在備份的腳本檔案中
- 當出現錯誤時,可以使用以下幾種方法還原它們
##1.恢復整庫操作
1.1 source 指令整庫恢復
mysql -uroot -p123123show databases;drop database SCHOOL;show databases;source /opt/test03.sql#之前备份过的,该备份为SCHOOL和sys两个库的完整备份#注意!选项得加“--databases”才是完整的备份,不然会恢复不了
登入後複製
1.2 MySQL 指令整庫復原
quitmysql -uroot -p123123 -e 'drop database SCHOOL;'mysql -uroot -p123123 -e 'SHOW DATABASES;'mysql -uroot -p123123 <p><img src="https://img.php.cn/upload/article/000/000/052/46d75be18c0819b67f9c8259bacd7776-9.png" alt="MySQL 介紹完全備份與還原"></p><p>#2.復原表操作<strong></strong></p>##還原資料表同樣可以使用source 指令與mysql 指令操作
登入後複製
2.1 使用source 指令恢復表格mysql -uroot -p123123use SCHOOL;show tables;drop table CLASS01;
source /opt/test01.sql#恢复表show tables;select * from CLASS01;#查看
登入後複製
2.2 使用 mysql 命令恢复表
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 <p><img src="https://img.php.cn/upload/article/000/000/052/29945f61915e1a240cc5e16f53f849e5-12.png" alt="MySQL 介紹完全備份與還原"></p><p><strong>3.MySQL 备份思路</strong></p>
登入後複製
- MySQL 需要定期实施备份,指定合适的备份计划或策略,并严格遵守
- 除了进行完全备份,开启 MySQL 服务器的日志功能也很重要,完全备份加上日志,可以对 MySQL 进行最大化还原
- 备份文件的名字还需钥使用统一的易于理解的名称,推荐使用库名或表名加上时间的命名规则,在需要恢复数据库时能很容易的定位到相应的所需备份文件
相关免费学习推荐:mysql数据库(视频)
以上是MySQL 介紹完全備份與還原的詳細內容。更多資訊請關注PHP中文網其他相關文章!