1.冷備份
在數據庫處于非運行狀態(tài)時通過直接拷貝數據文件或目錄的方式進行備份。
2.熱備份
1).將數據庫設置為只讀狀態(tài):
mysql>flush tables with read lock;
該語句的作用是:刷新緩沖區(qū),對于所有帶讀取鎖定的數據庫,關閉所有打開的表,并鎖定所有的表,直到執(zhí)行UNLOCK TABLES為止。
注意:在備份完成之前當前會話的連接不可退出,否則自動解鎖。
2).使用mysqldump導出或直接拷貝數據文件。
mysqldump [options] [db_name [tbl_name ...]]
最簡單的導出就是:
shell>mysqldump db_name > db_back.sql
常用選項有:
--quick: 該選項對導出大表非常有用。如果不帶該選項,mysqldump將在導出結果前裝載整個結果集到內存中,對于正在導出一個大的數據庫,這將可能是一個問題。使用該選項后,它將強迫mysqldump從服務器以一次一行的方式檢索而不做緩沖,直接輸出。
--disable-keys:告訴 mysqldump 在 Insert 語句的開頭和結尾增加 /*!40000 Alter TABLE table DISABLE KEYS */; 和 /*!40000 Alter TABLE table ENABLE KEYS */; 語句,這能大大提高插入語句的速度,因為它是在插入完所有數據后才重建索引的。該選項只適合 MyISAM 表。
--add-drop-table:在每個create語句之前增加一個drop table語句。
--add-locks:在每個表導出之前增加LOCK TABLES并且之后UNLOCK TABLE(為了使得更快地插入到MySQL)。
--extended-insert:使用可以包括多個values列表的多行INSERT語法(可以加快插入速度)。
--lock-tables:在導出前先鎖定所有表。如果是MyISAM表,將通過READ LOCAL的形式被鎖定以支持并發(fā)插入,對InnoDB和BDB類型表不會有效果。
--opt:等同于--quick --add-drop-table --add-locks --extended-insert --lock-tables
--quick和--opt選項默認打開,可以通過--skip-opt選項來關閉。
更多選項請參考手冊。
3).取消數據庫的只讀狀態(tài):
mysql>unlock tables;