完全備份就是將資料庫中的資料及所有物件全部備份。
由於 MySQL 伺服器中的資料文件是基於磁碟的文字文件,所以完全備份就是複製資料庫文件,是最簡單也是最快速的方式。
但 MySQL 伺服器的資料檔案在伺服器運作期間,總是處於開啟狀態,為實現真正的完全備份,需要先停止 MySQL 資料庫伺服器。
為了確保資料的完整性,在停止 MySQL 伺服器之前,需要先執行 flush tables 語句將所有資料寫入到資料檔案中。同學只需知道這種方法不可行,因為在生產環境下停止資料庫進行備份是不可取的。
使用mysqldump 指令實作對資料表、資料庫、資料庫系統進行備份:
mysqldump [-h主机名] –u用户名 –p密码 --lock-all-tables --database [tables] > 文件名
-h 主機名,可省略,表示本機伺服器,--lock-all-tables 對要備份的資料庫的所有表施加讀鎖(在這個過程中,資料庫嚴格處於read only 狀態),--database 後面可以加上需要備份的表,沒有指定表名,則表示備份整個資料庫。
準備一張 student 表,將該表建在 world 資料庫中。
已建表:
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) );
插入資料:
INSERT INTO student(stuId, stuName, stuAge) VALUES(1, 'zhangsan', 18), (2, 'lisi', 19),(3, 'wangwu', 18);##使用
flush tables; 語句將所有資料寫入到資料檔案中:
FLUSH TABLES;退出mysql 環境,使用mysqldump 指令對資料庫world 進行完全備份:
mysqldump -u root -p --lock-all-tables --databases world > /tmp/world.sql
#進入/tmp 目錄下,查看備份檔:
cd /tmp ls現在,我們對world 這個函式庫已經做了完全備份,不怕其資料遺失。
模擬world 資料庫中的student 表格遺失:
DROP TABLE student;確認表被刪除
SHOW TABLES;
使用mysql 指令恢復資料庫:
mysql -uroot -p < /tmp/world.sql進入mysql 環境,查看復原結果:
SHOW TABLES;輸出結果:############################################################################################## #########驗證表中資料:######
SELECT * FROM student;#############增量備份是上次完全備份或增量備份以來改變了的資料進行備份,依賴二進位日誌文件,需要開啟資料庫的binlog 日誌。先對資料庫進行一次全量備份,備份同時將binlog 日誌刷新,在這次備份之後的所有操作都會記錄在新增的binlog 日誌當中,我們只需要對增加的binlog 進行備份,就實現了對不斷增加內容的資料庫的完美備份了。當資料庫出現異常的時候,我們可以先還原最近一次的全量備份,接著將增量備份的檔案一個一個依序還原即可實現資料庫復原。 ###
以上是MySQL資料庫完全備份與增量備份怎麼實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!