2014-01-22 36 views
1

我正在使用MySQL Workbench,並且構建了一個非常大的(17 GB)數據庫。 MySQL將數據放在C:\ ProgramData \ MySQL \ MySQL Server 5.5 \ data目錄下的一個名爲ibdata1的文件中。我的C盤空間不足,我想將其移到我的外接驅動器。是否有可能移動ibdata1文件,然後告訴MySQL指向另一個位置來找到它?另外,如果我想備份這些數據,我可以複製ibdata1文件並保存它。然後,如果我的電腦被盜或某物,我能以某種方式恢復該文件中的數據?移動並備份大型MySQL數據庫

回答

1

您可以複製/備份整個C:\ProgramData\MySQL\MySQL Server 5.5\data到另一個驅動器,更新my.cnfmy.inidatadir選項指向新的位置,並重新啓動MySQL的。

1

是的,您可以更改您的Mysql服務器的數據目錄。

從windows服務停止MySQL服務器。

將現有數據目錄(默認位於C:/ Program Files/mysql/data)複製到新路徑或目錄。

編輯用下面的命令MySQL配置文件:

打開的my.cnf或my.ini文件這個文件位於MySQL的bin目錄下。

查找datadir的條目,並將路徑更改爲新的數據目錄。

保存並關閉文件。

重新啓動MySQL服務器。

0
  • 您必須備份整個/ data /目錄和ibdata1文件並將其放入新的/ data /目錄中。

  • InnoDB不知道文件系統的最大文件大小,所以請謹慎對待最大文件大小爲2GB等較小值的文件系統。要指定自動擴展數據文件的最大大小,請在autoextend屬性後面使用max屬性。下面的配置允許ibdata1中長大到500MB的限制:

的[mysqld]

innodb_data_file_path中= ibdata1中:10M:自動擴展:最大:500M

InnoDB的創建表文件默認在MySQL數據目錄中。要明確指定位置,請使用innodb_data_home_dir選項。例如,要使用名爲ibdata1中和ibdata2兩個文件,但在/ ibdata目錄創建它們,配置InnoDB的是這樣的:

的[mysqld]

innodb_data_home_dir =/ibdata

innodb_data_file_path中= ibdata1中: 50M; ibdata2:50M:autoextend

InnoDB不會創建目錄,因此請確保在啓動服務器之前存在/ ibdata目錄。對於您配置的任何日誌文件目錄也是如此。使用Unix或DOS mkdir命令創建任何必需的目錄。

確保MySQL服務器具有在數據目錄中創建文件的正確訪問權限。更一般地說,服務器必須在需要創建數據文件或日誌文件的任何目錄中擁有訪問權限。

  • ibdata1文件實際上不會收縮,除非您刪除所有數據庫,刪除文件並重新加載轉儲。

但是,您可以配置MySQL,以便每個表(包括其索引)都存儲爲單獨的文件。這樣ibdata1的增長就不會那麼大。根據Bill Karwin的評論,這在MySQL的5.6版本中是默認啓用的。

剛纔我做了這個。然而,設置你的服務器使用單獨的文件中的每個表,你需要爲了使這種改變的my.cnf:

的[mysqld]

innodb_file_per_table