MySQL數(shù)據(jù)庫完全備份與增量備份詳解
定義
完全備份就是將數(shù)據(jù)庫中的數(shù)據(jù)及所有對象全部備份。
由于 MySQL 服務(wù)器中的數(shù)據(jù)文件是基于磁盤的文本文件,所以完全備份就是復(fù)制數(shù)據(jù)庫文件,是最簡單也是最快速的方式。
但 MySQL 服務(wù)器的數(shù)據(jù)文件在服務(wù)器運(yùn)行期間,總是處于打開狀態(tài),為實(shí)現(xiàn)真正的完全備份,需要先停止 MySQL 數(shù)據(jù)庫服務(wù)器。
為了保障數(shù)據(jù)的完整性,在停止 MySQL 服務(wù)器之前,需要先執(zhí)行 flush tables 語句將所有數(shù)據(jù)寫入到數(shù)據(jù)文件中。對于該方法同學(xué)們只需了解,因?yàn)閷⑸a(chǎn)環(huán)境下的數(shù)據(jù)庫停下來做備份是不可取的。
使用 mysqldump 命令實(shí)現(xiàn)對表、數(shù)據(jù)庫、數(shù)據(jù)庫系統(tǒng)進(jìn)行備份:
mysqldump [-h主機(jī)名] –u用戶名 –p密碼 --lock-all-tables --database [tables] > 文件名
-h 主機(jī)名,可省略,表示本地服務(wù)器,--lock-all-tables 對要備份的數(shù)據(jù)庫的所有表施加讀鎖(在這個過程中,數(shù)據(jù)庫嚴(yán)格處于 read only 狀態(tài)),--database 后面可以加上需要備份的表,沒有指定表名,則表示備份整個數(shù)據(jù)庫。
完全備份與恢復(fù)演示
準(zhǔn)備一張 student 表,將該表建在 world 數(shù)據(jù)庫中。
建表:
CREATE DATABASE world; USE world; CREATE TABLE student( stuId INT(10) NOT NULL, stuName VARCHAR(10) NOT NULL, stuAge INT(10) NOT NULL, PRIMARY KEY(stuId) );
插入數(shù)據(jù):
INSERT INTO student(stuId, stuName, stuAge) VALUES(1, 'zhangsan', 18), (2, 'lisi', 19),(3, 'wangwu', 18);
使用 flush tables;
語句將所有數(shù)據(jù)寫入到數(shù)據(jù)文件中:
FLUSH TABLES;
退出 mysql 環(huán)境,使用 mysqldump 命令對數(shù)據(jù)庫 world 進(jìn)行完全備份:
mysqldump -u root -p --lock-all-tables --databases world > /tmp/world.sql
進(jìn)入 /tmp 目錄下,查看備份文件:
cd /tmp ls
現(xiàn)在,我們對 world 這個庫已經(jīng)做了完全備份,不怕其數(shù)據(jù)丟失。
模擬 world 數(shù)據(jù)庫中的 student 表丟失:
DROP TABLE student;
確認(rèn)表被刪除
SHOW TABLES;
使用 mysql 命令恢復(fù)數(shù)據(jù)庫:
mysql -uroot -p < /tmp/world.sql
進(jìn)入 mysql 環(huán)境,查看恢復(fù)結(jié)果:
SHOW TABLES;
輸出結(jié)果:
驗(yàn)證表中數(shù)據(jù):
SELECT * FROM student;
增量備份是對上次完全備份或增量備份以來改變了的數(shù)據(jù)進(jìn)行備份,依賴二進(jìn)制日志文件,需要開啟數(shù)據(jù)庫的 binlog 日志。先對數(shù)據(jù)庫進(jìn)行一次全量備份,備份同時將 binlog 日志刷新,在這次備份之后的所有操作都會記錄在新增的 binlog 日志當(dāng)中,我們只需要對增加的 binlog 進(jìn)行備份,就實(shí)現(xiàn)了對不斷增加內(nèi)容的數(shù)據(jù)庫的完美備份了。當(dāng)數(shù)據(jù)庫出現(xiàn)異常的時候,我們可以先恢復(fù)最近一次的全量備份,接著將增量備份的文件一個一個按順序恢復(fù)即可實(shí)現(xiàn)數(shù)據(jù)庫恢復(fù)。
到此這篇關(guān)于MySQL數(shù)據(jù)庫完全備份與增量備份詳解的文章就介紹到這了,更多相關(guān)MySQL數(shù)據(jù)庫備份內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mysql數(shù)據(jù)庫慢查詢常用優(yōu)化方式
數(shù)據(jù)庫SQL優(yōu)化是老生常談的問題,下面這篇文章主要給大家介紹了關(guān)于Mysql數(shù)據(jù)庫慢查詢常用優(yōu)化方式,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05Mysql獲取id最大值、表的記錄總數(shù)等相關(guān)問題的方法匯總
在做網(wǎng)站開發(fā)時,我們也許會想要取得mysql里id最大的一條記錄,這個其實(shí)很簡單。這篇文章給大家整理了獲取一個表的記錄數(shù)、獲取一個表的最大id、獲取一個表的auto_increment值等相關(guān)問題的答案,有需要的朋友們可以參考借鑒。2016-09-09Mysql支持的數(shù)據(jù)類型(列類型總結(jié))
MySQL支持大量的列類型,它可以被分為3類:數(shù)字類型、日期和時間類型以及字符串(字符)類型。本節(jié)首先給出可用類型的一個概述,并且總結(jié)每個列類型的存儲需求,然后提供每個類中的類型性質(zhì)的更詳細(xì)的描述2016-12-12MySql設(shè)置指定用戶數(shù)據(jù)庫查看查詢權(quán)限
這篇文章主要介紹了MySql設(shè)置指定用戶數(shù)據(jù)庫查看查詢權(quán)限,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10mysql百萬數(shù)據(jù)表加索引優(yōu)化的方法
在大數(shù)據(jù)時代,隨著數(shù)據(jù)量的快速增長,對數(shù)據(jù)庫的索引優(yōu)化變得尤為重要,本文主要介紹了mysql百萬數(shù)據(jù)表加索引優(yōu)化的方法,感興趣的可以了解一下2024-02-02關(guān)于MySQL與Golan分布式事務(wù)經(jīng)典的七種解決方案
本文介紹了分布式事務(wù)的一些基礎(chǔ)理論,并對常用的分布式事務(wù)方案進(jìn)行了講解;在文章的后半部分還給出了事務(wù)異常的原因、分類以及優(yōu)雅的解決方案;最后以一個可運(yùn)行的分布式事務(wù)例子,將前面介紹的內(nèi)容以簡短的程序進(jìn)行演示,需要的朋友可以參考一下文章具體內(nèi)容2021-10-10MySQL DATEDIFF函數(shù)獲取兩個日期的時間間隔的方法
這篇文章主要介紹了MySQL DATEDIFF函數(shù)獲取兩個日期的時間間隔的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01