我使用的是MySQL工作台,并且我已经构建了一个非常大(17 GB)的数据库。MySQL将数据放在C:\ProgramData\MySQL\MySQL Server5.5\ data目录中名为ibdata1的单个文件中。我的C盘空间不足,我想将其移动到外置驱动器。是否可以移动ibdata1文件,然后告诉MySQL指向另一个位置以找到它?另外,如果我想备份这些数据,我可以只复制ibdata1文件并保存它吗?如果我的电脑被盗了,我能从那个文件中恢复数据吗?
发布于 2014-01-22 12:51:54
您可以将整个C:\ProgramData\MySQL\MySQL Server 5.5\data
复制/备份到另一个驱动器,将my.cnf
或my.ini
中的datadir
选项更新为指向新位置,然后重新启动MySQL。
发布于 2014-01-22 14:37:31
是的,您可以更改Mysql服务器的数据目录。
从windows服务停止MySQL服务器。
将现有的数据目录(默认位于C:/Program Files/mysql/ data )复制到新路径或目录。
使用以下命令编辑MySQL配置文件:
打开my.cnf或my.ini此文件位于mysql bin目录下。
查找datadir的条目,并将路径更改为新的数据目录。
保存并关闭该文件。
重新启动MySQL服务器。
发布于 2014-01-22 15:14:24
数据数据您必须备份整个/
mysqld
innodb_data_file_path=ibdata1:10M:autoextend:max: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服务器具有在数据目录中创建文件的适当访问权限。更一般地,服务器必须在需要创建数据文件或日志文件的任何目录中拥有访问权限。
但是您可以对MySQL进行配置,使每个表(包括其索引)都存储为单独的文件。这样一来,ibdata1就不会变得那么大。根据Bill Karwin的评论,从MySQL 5.6版开始,这是默认启用的。
不久前我做了这件事。但是,要将您的服务器设置为对每个表使用单独的文件,您需要更改my.cnf以启用此功能:
mysqld
innodb_file_per_table
https://stackoverflow.com/questions/21273621
复制相似问题