MySQL数据目录结构(2)

2016-01-29 15:06 16 1 收藏

MySQL数据目录结构(2),MySQL数据目录结构(2)

【 tulaoshi.com - MySQL 】

MySQL数据目录结构(2)

[晏子]  
3 重定位数据库目录

前面讨论的数据目录结构是缺省配置,所有数据库和状态文件均包含其中,然而,你有某些自由决定数据目录内容的位置,本节讨论为什么你可能移走部分数据目录(或甚至目录本身)、你能移走什么以及你如何做这些改变。
MySQL允许你重定位数据目录或其中的成员,由几个原因你为什么要这样做:
你能将数据目录放在你缺省所在的文件系统更大容量的文件系统上。
如果你的数据目录在一个繁忙的硬盘上,你可能把它放在不太忙的磁盘上以均衡磁盘活动。你可以把数据库和日志文件放在分开的磁盘上或跨磁盘分布。
你可能想运行多个服务器,各自有自己的数据目录,这是解决每个进程文件描述符限制问题的一种方法,特别是你不能重新配置内核以允许更高的限制。
有些系统在例如/var/run中保存服务器的部分文件,你可能想把MySQL的PID文件也放在那儿,为了系统操作的一致性。

3.1 重定位方法

有两种方法重定位数据目录的内容:
你可以在服务器启动时指定选项,在命令行或在一个选项文件的[mysqld]中。
你可以移走要重定位的东西,然后在原位置做一个指向新位置的符号连接。

两种方法都不能解决你能重定位的一切,下表总结了什么能重定位和用哪种方法重定位。如果你使用选项文件,有可能在全局选项文件/etc/my.cnf(Windows上的c:my.cnf)指定选项。当前的Windows版本也寻找系统目录(c:Windows或c:NT)。表 重定位方法
重定位方法 适用的重定位方法
整个数据目录 启动选项或符号连接
单个数据库目录 符号连接
单个数据库表 符号连接
PID文件 启动选项
一般日志 启动选项
更新日志 启动选项

你也可以使用缺省数据目录中的选项文件my.cnf,但不推荐使用该文件。如果你想重定位数据目录本身,你不得不让缺省数据目录可读以便使你能在这里放置选项文件指定服务器应该在哪里找到“真正”的数据目录!这很混乱。如果你想使用一个选项文件指定服务器选项,最好使用/etc/my.cnf。
3.1 检验重定位的效果

在试图重定位任何东西之前,检验操作达到预期效果是个好主意。借助于du、df和ls -l命令获得磁盘空间的信息,但这些依赖于你正确了解你的文件系统的布局。
下面演示一个在你检验一个属目录重定位时的设计陷阱。假定你的数据目录是/usr/local/var,而你想把它移到/var/mysql,因为df显示/var文件系统有很多的空闲空间:

%df /usr /varFilesystem  1k-blocks     Used   Avail  Capacity  Mounted on/dev/wd0s3e    396895   292126   73018    80%     /usr/dev/wd0s3f   1189359  1111924  162287    15%     /var  

重定位的数据目录在/usr文件系统上有多少空闲空间呢?要知道它,使用du -s找出该目录使用多少空间。
%cd /usr/local/var%du -s .133426

这大约是130MB,真实这样吗?在数据目录下试一下df:
%df /usr/local/varFilesystem  1k-blocks     Used   Avail  Capacity  Mounted on/dev/wd0s3f   1189359  1111924  162287    15%     /var 

这就奇怪了。如果我们为包含/usr/local/var的文件系统申请空闲空间,为什么却报告var上的空间呢?这里ls -l提供了答案:
%ls -l /usr/local....lrwxrwxrwx  1  root  wheel  10 Dec 11 23:33 var -> /var/mysql.... 

输出显示/usr/local/var是对/var/mysql的符号连接,换句话说,数据目录已经被重定位于/var文件系统,并用一个指向那里的符号连接代替。通过将数据目录移到/var竟然释放了/usr上那么多空间!

3.2 重定位数据目录

要重定位数据目录,关闭服务器并把数据目录移到新位置上,然后你应该删除员数据目录并用指向新位置的符号连接代替它,或用明确指出新位置的选项重启服务器。下表列出指定位置的命令行和选项。表 数据目录重定位语法
选项源 语法
命令行 --data-dir=/path/to/dir
选项文件 [mysqld]
datadir=/path/to/dir

3.3 重定位数据库

数据库能通过符号连接的方法移走。要重定位一个数据库,关闭服务器并移走数据库目录并删除原来的数据库目录,用指向新位置的符号连接代替它,然后重启

来源:http://www.tulaoshi.com/n/20160129/1495272.html

延伸阅读
标签: ASP
本程序有两文件test.asp 和tree.asp 还有一些图标文件 1。test.asp 调用类生成树 代码如下 <%@ Language=VBScript % <html <head <link rel="stylesheet" href="tree.css" <titletree</title </head <!-- #include file="tree.asp" -- <% '======================================== ' BUILDING A TREE PROGRAMATIC...
标签: MySQL mysql数据库
  作者:随想 OSO奥索(5) int mysql_data_seek(int result_id, int row_num); 由SELECT查询返回的每个结果集都有一个行游标,指示下一个提取行的函数(mysql_fetch_array()、mysql_fetch_object()或者mysql_fetch_row())调用将返回哪一行。mysql_data_seek()将给定结果集的指针设置到给定的行。行号的范围为0到mysql_num_rows()-1。如果...
我们都知道当我们建立数据表(innodb或myisam)时,会生成相应的文件(如:MYD,MYI,frm) 在这里,我们探讨下使用frm文件恢复 innodb和myisam类型表的结构,不过由于他们存储引擎的特性,所以恢复的方法也不一样,以下是详细的恢复过程。 myisamchk "xxx.frm" myisamchk 可以试出来,库是不是 myisam 类型 1:恢复innodb类型数据表结构 我们...
mysql数据库里,对一个已创建的表进行DDL操作,比如说添加一个字段。在做测试时,发现ddl操作的时间特别的长。oracle里,通常情况下只是修改数据字典就可以了,操作时间非常的短,阻塞DML的时间也比较短。mysql数据库对表进行ddl操作跟oracle数据库有很大的不同,它先要把原表拷贝一份到临时表,这期间不阻塞select,阻塞所有的更改操作(upd...
本课主题: 总复习 教学目的: 数据结构综述 教学重点: 数据结构课程的核心 教学难点: 理解概念 授课内容: 一、学习数据结构的意义 设想一下,你决定向一个公司投资,而你对某个公司的了解只限于该公司的一条生产线每分钟可生产2000件产品,你会作出投资的决定吗?假如你是一个公司的治理者,这个公司日常的每笔交易的具体情况对你来...

经验教程

444

收藏

53
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部