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