概述
前面文章讨论了默认配置里的数据目录结构,所有的数据库、状态文件和日志文件都位于其中。不过,在确定数据目录内容的存放位置方面,也有一些回旋的余地。MySQL允许你迁移数据目录本身或者其中的某些元素。
你想这样做的理由可能有以下几种:
- 包含数据目录的那个文件系统已满,你需要将其移动到某个拥有更大容量的文件系统上。
- 如果数据目录位于一个很忙的磁盘驱动器上,那么你可以把它放在活动不太频繁的驱动器上,以平衡跨物理设备的磁盘活动。你可以把数据库和日志文件放在不同的驱动器上,或者基于同样的原因把数据库分散在各个驱动器上。同样地,虽然InnoDB系统表空间在概念上是一个巨大的存储块,但是可将其各个组成文件放置在不同的驱动器上,以提高性能。如果你使用了分区表,那么可以在各个分区来做这件事情。
- 把数据库和日志分别放在不同的磁盘上,这样有助于减少单个磁盘故障造成的破坏。
本文将讨论数据目录的哪一部分可以移动,以及如何进行移动。
迁移方法
迁移数据目录或其中各个部分的方法有两种。
第一种,在任何平台上,你都可以在服务器启动时,通过命令行或者选项文件,指定一个选项。例如,想要指定数据目录的位置,可以在服务器启动时,在命令行上使用--datadir=dir_name选项来指定,或者将下面的行放入某个选项文件中来指定:
[mysqld]
datadir = dir_name
第二种,在Unix上,可以先移动要迁移的文件或目录,然后在原来位置生成一个符号链接,指向新位置。
这两种方法都不能完全适用于可迁移的所有内容。下表总结了哪些是可迁移的,可以采用哪种迁移方法。如果使用的是选项文件,则可以在全局选项文件(如Unix里的/etc/my.cnf,或者Windows里的C:\my.cnf)中指定各种选项。
迁移实体 |
适用的迁移方法 |