移动和备份大型MySQL数据库

时间:2014-01-22 03:28:09

标签: mysql database mysql-workbench database-administration

我使用MySQL Workbench并且我已经构建了一个非常大的(17 GB)数据库。 MySQL将数据放在C:\ ProgramData \ MySQL \ MySQL Server 5.5 \ data目录中名为ibdata1的单个文件中。我的C盘空间不足,我想把它移到我的外置硬盘上。是否可以移动ibdata1文件,然后告诉MySQL指向另一个位置来查找它?此外,如果我想备份该数据,我可以复制ibdata1文件并保存。然后,如果我的计算机被盗或者其他什么东西,我能以某种方式从该文件中恢复数据吗?

3 个答案:

答案 0 :(得分:1)

您可以将整个C:\ProgramData\MySQL\MySQL Server 5.5\data复制/备份到另一个驱动器,更新datadirmy.cnf中的my.ini选项以指向新位置,然后重新启动MySQL。

答案 1 :(得分:1)

是的,您可以更改Mysql服务器的数据目录。

从Windows服务中停止MySQL服务器。

将现有数据目录(默认位于C:/ Program Files / mysql / data)复制到新路径或目录。

使用以下命令编辑MySQL配置文件:

打开my.cnf或my.ini这个文件位于mysql bin目录下。

查找datadir的条目,并更改新数据目录的路径。

保存并关闭文件。

重启MySQL服务器。

答案 2 :(得分: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:自动扩展

InnoDB不创建目录,因此在启动服务器之前,请确保/ ibdata目录存在。对于您配置的任何日志文件目录也是如此。使用Unix或DOS mkdir命令创建任何必要的目录。

确保MySQL服务器具有在数据目录中创建文件的适当访问权限。更一般地说,服务器必须在需要创建数据文件或日志文件的任何目录中具有访问权限。

  • 除非删除所有数据库,删除文件并重新加载转储,否则ibdata1文件实际上无法收缩。

但您可以配置MySQL,以便将每个表(包括其索引)存储为单独的文件。这样ibdata1就不会那么大。根据Bill Karwin的评论,默认情况下启用MySQL版本5.6。

不久前我做到了这一点。但是,要将服务器设置为为每个表使用单独的文件,您需要更改my.cnf以启用此功能:

  

的[mysqld]

     

innodb_file_per_table