本文更新於2020-05-03,使用MySQL 5.7,操作系統為Deepin 15.4。 MySQL的備份分為邏輯備份和物理備份,物理備份分為冷備份和熱備份。恢復分為完全恢復和不完全恢復,不完全恢復又分為基於時間點的恢復和基於位置的恢復。 邏輯備份和恢復 使用mysqldump進行邏輯備份,如my ...
本文更新於2020-05-03,使用MySQL 5.7,操作系統為Deepin 15.4。
目錄
MySQL的備份分為邏輯備份和物理備份,物理備份分為冷備份和熱備份。恢復分為完全恢復和不完全恢復,不完全恢復又分為基於時間點的恢復和基於位置的恢復。
邏輯備份和恢復
使用mysqldump進行邏輯備份,如mysqldump dbname > filename
。
為了保證數據備份的一致性,MyISAM存儲引擎需加上-l參數,如InnoDB等事務存儲引擎應加上--single-transaction。
恢復包括兩個步驟:
- 使用備份數據恢復,如
mysql dbname < backupfilename
。 - 將備份後至恢復前的日誌重做(不要把上一步執行時的二進位日誌也重做了),如
mysqlbinlog logfilename | mysql dbname
。可進行不完全恢復,但要註意是否包含完整的事務,如mysqlbinlog --start-date=start logfilename | mysql dbname
或mysqlbinlog --start-position=position logfilename | mysql dbname
。
物理備份和恢復
冷備份和恢復
冷備份就是停掉資料庫服務,拷貝數據文件。
熱備份和恢復
對MyISAM存儲引擎,熱備份可使用mysqlhotcopy
,本質就是將要備份的表加讀鎖,然後拷貝數據文件。
對InnoDB存儲引擎,可安裝使用ibbackup、Xtrabackup(包括xtrabackup和innobackupex兩個主要工具)等工具。
表數據導入導出
表數據導出有兩種方法:
- 使用
SELECT ... INTO OUTFILE filename [options]
。 - 使用
mysqldump -T
。
表數據導入有兩種方法:
LOAD DATA [LOCAL] INFILE filename INTO TABLE tablename [options]
。mysqlimport dbname filename
。