自定义Mysql的data目录

论坛再次进行迁移,第一次从window迁移到linux,具体可参照Discuz!X3 window迁移到linux。时隔一年,虚拟主机的性能各方面都不如意,加上现在云主机价格的优势,果断选择了云主机。当时考虑了阿里云的腾讯云两个产品,当前网站使用的是阿里云主机,所以也想体验一下腾讯云主机,加上优惠政策选了一台腾讯云香港主机。

流程基本一致,打包文件传到新机器上面,新机器做好环境配置。从控制台比较腾讯云比阿里云还是有一定的差距,如果有兴趣你可以自己注册一个账号两家对比一下。在打包过程中犯了一次二。打包了db。以为都是centos,db文件拷贝过去应该可以用吧。但是结果是根本不能用。所以回归到最靠谱的操作,导出.sql文件然后再导入。这个过程中还碰到了一个问题,后面会有介绍。

为了操作方便一些,web和db都做了自定义路径。扯了这么多,回到正题自定义Mysql的data目录。

1、在根目录下建立data目录
cd /
mkdir data
mkdir /data/data
mkdir /data/www

2、停止mysql进程
mysql -u root -p shutdown

3、把/var/lib/mysql整个目录移到/data/data
mv /var/lib/mysql /data/data/
这样MySQL的数据文件就移动到了/data/data/mysql下

4、找到my.cnf配置文件
如果/etc/目录下没有my.cnf配置文件,请到/usr/share/mysql/找到my-medium*.cnf文件,拷贝到/etc/并改名为my.cnf
命令如下:
[root@test1 mysql]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

5、编辑/etc/my.cnf
为保证MySQL能够正常工作,需要指明mysql.sock文件的产生位置。修改socket=/var/lib/mysql/mysql.sock
socket=/data/data/mysql/mysql.sock
操作如下:
vi   my.cnf
# The MySQL server[mysqld]
port = 3306
#socket  = /var/lib/mysql/mysql.sock(原内容,为了更稳妥用“#”注释此行)
socket  = /data/data/mysql/mysql.sock (加上此行)

6、修改MySQL启动脚本/etc/init.d/mysql
把其中datadir=/var/lib/mysql一行中修改成现在的实际存放路径:data/data/mysql
[root@test1 etc]# vi /etc/init.d/mysql
#datadir=/var/lib/mysql(注释此行)
datadir=/data/data/mysql (加上此行)
最后做一个mysql.sock 链接:
ln -s /data/data/mysql/mysql.sock /var/lib/mysql/mysql.sock(需要从/data/data/mysql下复制一份过来)

7、重新启动MySQL服务
/etc/init.d/mysqld start
或用reboot命令重启Linux
如果工作正常移动就成功了,否则对照前面的7步再检查一下。

8、最后修改下数据库的权限
[root@localhost ~]# chown -R mysql:mysql /data/data/mysql/  ← 改变数据库的归属为mysql

[root@localhost ~]# chmod 700 /data/data/mysql/test/  ← 改变数据库目录属性为700

[root@localhost ~]# chmod 660 /data/data/mysql/test/*  ← 改变数据库中数据的属性为660

9 如果启动不成功,查看/var/log/mysql.log,如果是出现错误:
110222 11:15:07 [Warning] Can’t create test file /data/mysql/localhost.lower-test
/usr/libexec/mysqld: Can’t find file: ‘./mysql/plugin.frm’ (errno: 13)
110222 11:15:07 [ERROR] Can’t open the mysql.plugin table. Please run mysql_upgrade to create it.
110222 11:15:07 InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to

#在终端中先输入下面这一行

chown -R mysql:mysql /data/data/mysql

#在输入下面的一行就OK了

chcon -R -t mysqld_db_t /data/data/mysql

#重启下MYSQL试试~

/etc/init.d/mysqld restart

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据