mysql数据库有两个重要的路径参数,--basedir 和--datadir。
--basedir :指的是 mysql数据库 默认的安装的路径 。
--datadir:指的是安装好了数据库之后,mysql 数据库的数据文件存放的路径,如库、表、索引相关等文件。
如下图:
cat /etc/init.d/mysql :
通过这个文件知道,数据库启动的时候默认找配置文件的规则。
处于对磁盘空间控制或者路径规划等各种原因,可能会或者需要将数据库路径进行修改。
这个时候,可以在my.cnf文件里[mysqld]的标签里指定datadir,当然,指定这个文件之后,必须要把数据库相关的数据文件都搬到指定路径的,否则数据库无法启动。
1、还是要先关闭selinux,减少排障干扰。
service iptables stop
chkconfig iptables off
2、创建目标目录
mkdir -p /var/local/mysql-cluster/data
递归修改属组和属主;
chown -R mysql:mysql /var/local/mysql-cluster
3、修改配置文件
添加指定路径
4、迁移数据
(移动数据之前做好备份)
mv /var/lib/mysql/var/lib/mysql_bak
mv /var/lib/mysql /var/local/mysql-cluster/data
第二种方法:
mysql官网提供的方式:perl脚本;文件名:mysql_install_db。
使用这个脚本来初始化数据库,生成最开始安装mysql的时候默认路径会生成的那些库、表等相关的文件。
(其原理与把默认路径的源数据搬到指定路径差不多,只不过不是搬过去,是直接在指定的新路径生成一系列数据。)
1.创建你需要的数据存放路径
mkdir -p /var/local/mysql-cluster/data
递归修改属组和属主;
chown -R mysql:mysql /var/local/mysql-cluster
2.原来的数据可以换个名字备份起来
mv /var/lib/mysql /var/lib/mysql_bak
3.修改/etc/my.cnf配置文件
如:
[client]
character-set-server = utf8
port = 3308
socket = /tmp/mysql_3308.sock
[mysqld]
user = mysql
port = 3308
socket = /tmp/mysql_3308.sock
basedir = /usr/local/mysql
datadir = /var/local/mysql-cluster/data
log-error = //var/local/mysql-cluster/mysql_error.log
4. 确保配置文件无误
运行下面命令进行数据库的初始化:
#/usr/local/mysql/bin/mysql_install_db --defaults-file=/etc/my.cnf --datadir= /var/local/mysql-cluster/data
如果有报错,则按照报错的提示查看报错日志,一般情况下都是my.cnf配置文件的问题。
5.启动新mysql
mysql服务
#/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf
检查是否启动
#ps aux|grep mysql
如果有3308字样说明已经启动成功
可将启动命令加入/etc/rc.local随服务器启动。