淺談MySQL數(shù)據(jù)庫的備份與恢復(fù)
一、MySQL 常見的備份方式
1. 直接拷貝數(shù)據(jù)庫文件(物理拷貝)
2. 使用 mysqldump 工具備份
3. 使用 mysqlhotcopy 工具備份
4. 使用 mysql 的主從同步復(fù)制,實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)同步備份
二、MySQL 物理數(shù)據(jù)文件結(jié)構(gòu)介紹
1. 日志文件
錯(cuò)誤日志 err log
二進(jìn)制日志 binary log
更新日志 update log
查詢?nèi)罩?query log
慢查詢?nèi)罩?slow query log
innodb 的 redo 日志
2. 數(shù)據(jù)文件
>>>對于 myisam 來說:
表結(jié)構(gòu)信息:.frm
數(shù)據(jù)信息:.myd
數(shù)據(jù)索引信息;.myi
>>>對于 Innodb 來說:
獨(dú)享表空間:.ibd
共享表空間:.ibdata
3. 系統(tǒng)文件
配置文件:my.cnf
進(jìn)程文件:xxx.pid
socket文件:xxx.sock
4. replication 文件
master.info:存儲在 slave 端目錄下,關(guān)于 master 和 slave 相關(guān)信息
relay log:存儲 I/O 進(jìn)程從 master 讀取的 bin-log 信息,然后由 slave 端的 SQL 線程從該 binary log 中讀取解析過的日志信息,轉(zhuǎn)化成 slave 所能執(zhí)行的 query 語句
index:則是存放 binary log 的路徑,也就是目錄文件
三、使用 mysqldump 備份與恢復(fù)
1. 備份原理
mysqldump 備份原理比較簡單,先查出需要備份的表結(jié)構(gòu),在文本文件中生成一個(gè) create 語句;然后將表中的所有數(shù)據(jù)記錄轉(zhuǎn)換成一條 insert 語句;通過這些語句就能夠創(chuàng)建表并插入數(shù)據(jù)。
2. 備份一個(gè)數(shù)據(jù)庫
基本語法:
>>> mysqldump -u username -p dbname table1 table2 ... > BackupName.sql
實(shí)例說明:
mysqldump -u root -p test person > /tmp/backup.sql
3. 備份多個(gè)數(shù)據(jù)庫
基本語法:
mysqldump -u username -p --databases dbname2 dbname2 > BackupName.sql
實(shí)例說明:
mysqldump -u root -p --databases test mysql > /tmp/backup.sql
4. 備份所有數(shù)據(jù)庫
基本語法:
mysqldump -u username -p -all-databases > BackupName.sql
實(shí)例說明:
mysqldump -u -root -p -all-databases > /tmp/all.sql
5. 數(shù)據(jù)恢復(fù)
基本語法:
mysql -u root -p [dbname] < backup.sql
實(shí)例說明:
mysql -u root -p < /tmp/backup.sql
四、直接復(fù)制數(shù)據(jù)庫目錄
MySQL 有一種非常簡單的備份方法,就是將 MySQL 中的數(shù)據(jù)庫文件直接復(fù)制出來。這是最簡單,速度最快的方法。不過在此之前,要先將服務(wù)器停止,這樣才可以保證在復(fù)制期間數(shù)據(jù)庫的數(shù)據(jù)不會發(fā)生變化。如果在復(fù)制數(shù)據(jù)庫的過程中還有數(shù)據(jù)寫入,就會造成數(shù)據(jù)不一致。這種情況在開發(fā)環(huán)境可以,但是在生產(chǎn)環(huán)境中很難允許備份服務(wù)器。
注意:這種方法不適用于 InnoDB 存儲引擎的表,而對于 MyISAM 存儲引擎的表很方便。同時(shí),還原時(shí) MySQL 的版本最好相同。
相關(guān)文章
生產(chǎn)庫自動(dòng)化MySQL5.6安裝部署詳細(xì)教程
自動(dòng)化運(yùn)維是一個(gè)DBA應(yīng)該掌握的技術(shù),其中,自動(dòng)化安裝數(shù)據(jù)庫是一項(xiàng)基本的技能,這篇文章主要介紹了生產(chǎn)庫自動(dòng)化MySQL5.6安裝部署詳細(xì)教程,需要的朋友可以參考下2016-09-09mysql實(shí)現(xiàn)多表關(guān)聯(lián)統(tǒng)計(jì)(子查詢統(tǒng)計(jì))示例
這篇文章主要介紹了mysql實(shí)現(xiàn)多表關(guān)聯(lián)統(tǒng)計(jì)(子查詢統(tǒng)計(jì)),結(jié)合具體案例形式分析了mysql多表關(guān)聯(lián)統(tǒng)計(jì)的原理、實(shí)現(xiàn)方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-10-10MySQL通過DQL實(shí)現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)的基本查詢
這篇文章給大家介紹了MySQL如何通過DQL進(jìn)行數(shù)據(jù)庫數(shù)據(jù)的基本查詢,文中通過代碼示例和圖文結(jié)合介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-01-01MySQL延遲關(guān)聯(lián)性能優(yōu)化方法
這篇文章主要介紹了MySQL延遲關(guān)聯(lián)性能優(yōu)化方法,本文講解了延遲關(guān)聯(lián)的背景、延遲關(guān)聯(lián)的分析、延遲關(guān)聯(lián)的解決等內(nèi)容,需要的朋友可以參考下2015-05-05詳解MySQL的數(shù)據(jù)行和行溢出機(jī)制
在前面的文章中,白日夢曾不止一次的提及到:InnoDB從磁盤中讀取數(shù)據(jù)的最小單位是數(shù)據(jù)頁。 而你想得到的id = xxx的數(shù)據(jù),就是這個(gè)數(shù)據(jù)頁眾多行中的一行。 這篇文章我們就一起來看一下數(shù)據(jù)行設(shè)計(jì)的多么巧妙。2020-11-11