专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » mysql数据库:MySQL重定位数据库目录的内容 »正文

mysql数据库:MySQL重定位数据库目录的内容

来源: 发布时间:星期二, 2009年1月6日 浏览:2次 评论:0
="t18">所有数据库和状态文件都包含在其中但是在确定数据目录内容布局中管理员有某些职责本文讨论为什么要移动数据目录各个部分(甚至是字典本身)、可以移动什么以及怎样进行这些移动


◆MySQL 允许您重定位其中数据目录或元素这样做有几个原因:

◆可以用比缺省定位文件系统更大容量在文件系统中放置数据目录

◆如果数据目录在繁忙磁盘上可以将其放置到较少使用驱动器上以平衡物理设备的间磁盘活动为了类似原因可以将数据库和日志文件放在区别驱动器上或在驱动器的间对数据库进行再分布

◆您可以运行多个服务器并且每个服务器都有属于自己数据目录这是种解决总进程文件描述符限制问题思路方法尤其是当不能重新配置系统核心以得到更高限制值时

◆某些系统将 PID 文件保存在诸如 /var/run 目录中为了系统运作致性您可以将 MySQL PID 文件也放在那里

重定位思路方法


有两种对数据目录重定位思路方法:


◆可以在命令行或在个选项文件 [mysqld] 组上在服务器启动时间指定个选项


◆可以移动要重定位内容然后在原始位置中做个指向新位置 symlink (symbolic link符号链接)


两种思路方法任何种都不能为您进行全部重定位工作表5-3 综合了可重定位内容以及可用于重定位思路方法


如果您使用个选项文件可以指定在全局选项文件 /etc/my.cnf(Windows 中 c:\my.cnf)中选项当前 Windows 版本还访问系统目录(c:\windows 或 c:\WINNT)


您还可以使用缺省数据目录选项文件 my.cnf(该目录编译在服务器中)笔者不建议使用此文件如果要重定位数据目录本身必须保持缺省数据目录完整性以便在数据目录中放置个选项文件该文件将介绍说明服务器应该在哪里找到“真正”数据目录!真乱如果想要用个选项文件来指定服务器选项则最好使用 /etc/my.cnf


重定位数据目录


现在介绍说明重定位数据库目录思路方法和步骤


1、关闭服务器例如:


$ mysqladmin –u root -p shutdown


2、将数据库目录移动到新位置


3、然后删除原来数据库


4、如果用symlink思路方法(Unix平台上)例如:


$ ln –s NEWDIR DATADIR


DATADIR是标准数据库目录位置也是原来数据库目录路径

如果用起动选项思路方法可以这样启动:


$safe_mysqld --basedir=/path/to/dir/ & (Unix)
$mysqld --basedir=x:\datadir\ (Windows)


如果用选项文件思路方法:


在/etc/my.cnf(Unix)或者c:\my.cnf(Windows)中加入:


[mysqld]
datadir=/path/to/dir/


5、重新启动数据库

重定位数据库


重定位数据库只能通过symlink思路方法因此windows平台无法重定位数据库为了重定位数据库应关闭数据库移动数据库目录删除原来数据库目录用指向新位置symlink来代替她然后启动服务器


下面用个实际例子――备份bigdb――介绍说明这个过程:


$mysqladmin –u root –p
$cd DATADIR
$tar cf bigdb|(cd /var/db;tar xf)
$mv bigdb bigdb.old
$ln –s var/db/bigdb .
$safe_mysqld &


应该以数据库目录所有者身份执行这些命令服务器工作正常的后可以删除备份目录bigdb.old:

$rm –rf bigdb.old

重定位数据库表

对单个数据库表重新定位并不是特别有用有时反而会造成很大麻烦可以通过将表文件移动到另个位置不再该书据库目录中创建指向这些文件symlink来进行思路方法类似于重定位数据库思路方法

但是如果曾经发布过 ALTER TABLE或OPTIMIZE TABLE语句则所做这些重定位工作将被取消其原因就不介绍了

重定位状态文件

状态文件中PID文件、常规日志褐更新日志可以用起动选项或者选项文件思路方法重新定位日志由safe_mysqld创建且不能够重新定位除非编辑safe_mysqld脚本

为了在另个位置写状态文件因关闭服务器然后用制定新状态文件位置恰当选项启动他

启动选项:

--pid-file=pidfile PID文件
--log=logfile 常规日志
--log-update=updatefile 更新日志

选项文件

[mysqld]
pid-file=pidfile
log=logfile
log-update=updatefile

状态文件命名规则:

1、如果以绝对路径指定个状态文件名称则用该路径创建改文件
例如你指定—pid-file=/var/run/mysqld.pid,则该PID文件就是/var/run/mysqld.pid

2、如果你只给出文件名则文件在数据库目录下创建

例如你指定—pid-file=mysqld.pid则该PID文件为DATADIR/mysqld.pid

3、如果没有给出文件则状态文件使用缺省名字
这样做将告诉服务器启用状态文件这对PID文件没有意义服务器总是使用它例如:

$safe_mysqld --log --log-update &

或者使用选项文件:

[mysqld]
log
log-update

对于常规日志将生成DATADIR/hostname.log文件hostname是运行服务器主机名对于更新日志生成DATADIR/hostname.nnn顺序文件

4、对于更新日志如果指定个没有扩展名更新日志则MySQL在打开该更新日志是将生成数据名字这些名字用.nnn扩展名创建这里.nnn是违背已有更新日志文件使用过个号码(如hostname.001、hostname.002等等)可以通过指定明确扩展名来忽略顺序名字生成然后服务器将仅使用您指定名字

整理总结

在本节中你将学到如何重新定位数据库目录以及状态文件等你可能需要重定位内容有:

1、数据库目录
2、数据库
3、状态文件包括常规日志更新日志等

重定位思路方法有:

1、符号链接
2、指定命令行参数
3、使用选项文件

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: