MySQL資料庫備份與還原

範長法@三月軟體發表於2014-05-22
備份資料庫

1.使用mysqldump命令備份
  • 備份一個資料庫:mysqldump -u 使用者名稱 -p密碼 資料庫名 [表名1,表名2...]>備份檔案路徑及名字.sql
          如果沒有表名,則備份整個資料庫
          eg: mysql -u root -p test studentinfo >D:\test.sql
 
  • 備份多個資料庫:mysqldump -u 使用者名稱 -p --databases 資料庫1,資料庫2...  >  備份檔案路徑及名字.sql
 
  • 備份所有資料庫:mysqldump -u 使用者名稱 -p --all -databases >  備份檔案路徑及名字.sql
 
     注:備份時候不一定是.sql副檔名,可以任意指定
 
2.直接複製整個資料庫目錄
  • 將mysql資料庫檔案直接複製出來,最好將服務先停止,保證資料一致
  • 對INNODB儲存引擎的表不適用
  • 還原時最好是相同版本的MySQL資料庫
 
3.使用mysqlhotcopy工具快速備份
  • 如備份時不能停止mysql服務,可使用此工具。比mysqldump命令快
  • 此工具是一個Perl指令碼,主要在Linux下使用
  • 使用LOCK TABLES、FLUSH TABLES和cp來進行快速備份
  • 原理:先將備份的資料庫加上一個讀操作鎖,用FLUSH TABLES將記憶體中的資料寫回到硬碟資料庫中,最後將備份的資料庫檔案複製到目標目錄
 
還原資料庫

1.使用mysql命令還原
  • mysql -u root -p[資料庫名]  < backup.sql
2.直接複製到資料庫目錄
  • 和前面複製目錄備份一樣,將目錄複製到對應的資料夾下
  • windows下目錄:C:/mysql/data     C:/Document and Settings/All Users/Application Data/MySQL/MySQL Server5.1/data等預設路徑
  • Linux下:/var/lib/mysql/    /usr/local/mysql/data    usr/local/mysql/var  等預設目錄
  • 使用mysqlhotcopy備份的資料庫也是通過這種方式還原,複製到資料庫目錄後,要將資料庫的使用者和組變成mysql: chwon -R mysql.mysql dataDir
 
資料庫遷移

1.資料庫遷移分類:
  • MySQL相同版本的資料庫之間遷移
  • 遷移到MySQL其他版本的資料庫中
  • 遷移到其他型別的資料庫中
MySQL相同版本之間遷移:
     mysqldump -h 主機名  -u root -password=password1  -all-databases  |
     mysql -h  host2  -u  root  -password=password2
 
用SELECT...INTO  OUTFILE匯出文字檔案
  • SELECT [列名] FROM 表名 [WHERE條件]  INTO  OUTFILE  '目標檔案路徑'[OPTION];
 
用mysqldump匯出文字檔案
  • mysqldump  -u  root  -pPassword  -T  目錄  dbname table [OPTION];
用mysql命令匯出文字檔案
  • mysql  -u  root  -pPassword  -e "SELECT語句"  dbname  >  D:/backup.txt
  • 匯出xml檔案:
    • mysql  -u  root  -pPassword  -xml  -X  -e "SELECT語句"  dbname  > D:/backup.xml
  • 匯出html檔案:
    • mysql  -u  root  -pPassword  --html  -H  -e  "SELECT語句"  dbname  >  D:/backup.html

相關文章