完全備份就是將資料庫中的資料及所有物件全部備份。
由於 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;
mysqldump -u root -p --lock-all-tables --databases world > /tmp/world.sql
#進入/tmp 目錄下,查看備份檔:
cd /tmp ls
模擬world 資料庫中的student 表格遺失:
DROP TABLE student;
SHOW TABLES;
使用mysql 指令恢復資料庫:
mysql -uroot -p < /tmp/world.sql
SHOW TABLES;
SELECT * FROM student;
以上是MySQL資料庫完全備份與增量備份怎麼實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!