寫在前面: 有時候經常要把數據庫轉來轉去,或者導入導出,以前記得命令,後來又忘記了,現在寫出來備忘!
------------------------------------------------------------------
注意:MySQLdump比直接拷貝數據庫文件夾速度要慢
但,直接復制文件夾不能100%轉移到其它機子上用,我說的不是Windows下 :)
#MySQLdump db_name >/path/name.sql
上面的命令意思是把一個庫導出到一個SQL文件. 當然,你直接在有ROOT密碼的機子上執行以上命令一定會報錯.所以,請用
#MySQLdump db_name >/path/name.sql -uroot -p
這回會要求你輸入密碼,輸入正確,找找/path下是不是有name.sql文件了?
數據庫太大了,想壓縮一下?好,用這個命令就行
#MySQLdump db_name |gzip >/path/name.gz -uroot -p
想備份全部的庫呢?
#MySQLdump --all-databases >/path/name.sql -uroot -p
#MySQLdump --all-databases |gzip >/path/name.gz -uroot -p (很明顯,這條命令是加壓縮的意思)
只想備份一個單獨或者幾個表?
有時候數據庫很大很大,整個庫備份就不好管理,那就單獨備份
#MySQLdump db_name tab_name >/path/sqlname.sql -uroot -p
備份做好了.遇到問題的時候.怎麼用備份恢復數據?
再簡單不過了,
MySQL db_name < backup-file.sql -uroot -p
注意:如果你想恢復的數據庫是包含授權表的MySQL數據庫,你需要用--skip-grant-table選項運行服務器。否則,它會抱怨不能找到授權表。在你已經恢復表後,執行MySQLadmin flush-privileges告訴服務器裝載授權標並使用它們
恢復單個表
恢復單個表較為復雜,如果你用一個由mysqldump生成的備份文件,並且它不包含你感興趣的表的數據,你需要從相關行中提取它們並將它們用作 mysql的輸入。這是容易的部分。難的部分是從只運用於該表的更新日志中拉出片斷。你會發覺MySQL_find_rows實用程序對此很有幫助,它從更新日志中提取多行查詢。