熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> MySQL >> 正文

最簡便的MySql數據庫備份方法

2013-11-23 20:58:19  來源: MySQL 
使用MYSQL進行數據庫備份又很正規的數據庫備份方法同其他的數據庫服務器有相同的概念但有沒有想過MySQL會有更簡捷的使用文件目錄的備份方法而且又快有好
  
  數據備份捷徑
  因為這個方法沒有得到官方正式文檔的驗證我們暫稱為試驗吧
  
  目的備份hostA主機中一個mysql數據庫TestA並恢復到到hostB機中
  
  試驗環境
  操作系統WinNTMysqlphpMyAdmin
  
  在hostA中安裝mysql數據庫並建立TestA數據庫
  hostB機安裝mysql數據庫沒有TestA數據庫
  
  方法步驟
  啟動phpMyAdmin察看HostA和HostB中的數據庫列表在HostB中沒有TestA數據庫
  找到HostA中mysql的安裝目錄並找到數據庫目錄data
  在我的試驗環境中這個目錄是
  C:mysqldata
  找到對應數據庫名稱的子目錄
  C:mysqldataTestA
  粘貼拷貝到HostB的Data目錄下是HostA同HostB Mysql數據目錄下的文件相同
  
  刷新HostB的phpMyAdmin察看一下數據庫列表我們看到TestA已經出現並且作查詢修改等操作都正常備份恢復恢復成功
  
  試驗結論Mysql的數據庫可以通過文件形式保存備份恢復只要將相應文件目錄恢復即可無需使用其它工具備份
  
  正規的方法(官方建議)
  導出要用到MySQL的mysqldump工具基本用法是 
  
  mysqldump [OPTIONS] database [tables] 
  
  如果你不給定任何表整個數據庫將被導出 
  
  通過執行mysqldump help你能得到你mysqldump的版本支持的選項表 
  
  注意如果你運行mysqldump沒有quick或opt選項mysqldump將在導出結果前裝載整個結果集到內存中如果你正在導出一個大的數據庫這將可能是一個問題 
  
  mysqldump支持下列選項 
  
  addlocks 
  在每個表導出之前增加LOCK TABLES並且之後UNLOCK TABLE(為了使得更快地插入到MySQL) 
  adddroptable 
  在每個create語句之前增加一個drop table 
  allowkeywords 
  允許創建是關鍵詞的列名字這由在列名前面加表名的方法做到 
  c completeinsert 
  使用完整的insert語句(用列名字) 
  C compress 
  如果客戶和服務器均支持壓縮壓縮兩者間所有的信息 
  delayed 
  用INSERT DELAYED命令插入行 
  e extendedinsert 
  使用全新多行INSERT語法(給出更緊縮並且更快的插入語句) 
  # debug[=option_string] 
  跟蹤程序的使用(為了調試) 
  help 
  顯示一條幫助消息並且退出 
  fieldsterminatedby= 
  fieldsenclosedby= 
  fieldsoptionallyenclosedby= 
  fieldsescapedby= 
  fieldsterminatedby= 
  這些選擇與T選擇一起使用並且有相應的LOAD DATA INFILE子句相同的含義 
  LOAD DATA INFILE語法 
  F flushlogs 
  在開始導出前洗掉在MySQL服務器中的日志文件 
  f force 
  即使我們在一個表導出期間得到一個SQL錯誤繼續 
  h host= 
  從命名的主機上的MySQL服務器導出數據缺省主機是localhost 
  l locktables 
  為開始導出鎖定所有表 
  t nocreateinfo 
  不寫入表創建信息(CREATE TABLE語句) 
  d nodata 
  不寫入表的任何行信息如果你只想得到一個表的結構的導出這是很有用的! 
  opt 
  同quick adddroptable addlocks extendedinsert locktables 
  應該給你為讀入一個MySQL服務器的盡可能最快的導出 
  pyour_pass password[=your_pass] 
  與服務器連接時使用的口令如果你不指定=your_pass部分mysqldump需要來自終端的口令 
  P port_num port=port_num 
  與一台主機連接時使用的TCP/IP端口號(這用於連接到localhost以外的主機因為它使用 Unix套接字) 
  q quick 
  不緩沖查詢直接導出至stdout使用mysql_use_result()做它 
  S /path/to/socket socket=/path/to/socket 
  與localhost連接時(它是缺省主機)使用的套接字文件 
  T tab=pathtosomedirectory 
  對於每個給定的表創建一個table_namesql文件它包含SQL CREATE 命令和一個table_nametxt文件它包含數據 注意這只有在mysqldump運行在mysqld守護進程運行的同一台機器上的時候才工作txt文件的格式根據fieldsxxx和linesxxx選項來定 
  u user_name user=user_name 
  與服務器連接時MySQL使用的用戶名缺省值是你的Unix登錄名 
  O var=option setvariable var=option
  設置一個變量的值可能的變量被列在下面 
  v verbose 
  冗長模式打印出程序所做的更多的信息 
  V version 
  打印版本信息並且退出 
  w where=wherecondition 
  只導出被選擇了的記錄注意引號是強制的! 
  where=user=jimf wuserid> wuserid< 
  
  最常見的mysqldump使用可能制作整個數據庫的一個備份 
  
  mysqldump opt database > backupfilesql 
  
  但是它對用來自於一個數據庫的信息充實另外一個MySQL數據庫也是有用的 
  
  mysqldump opt database | mysql host=remotehost C database 
  
  由於mysqldump導出的是完整的SQL語句所以用mysql客戶程序很容易就能把數據導入了 
  
  mysqladmin create target_db_name 
  mysql target_db_name < backupfilesql
From:http://tw.wingwit.com/Article/program/MySQL/201311/29365.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.