Centos7 修改mysql数据文件存储路径方案

Centos7 修改mysql数据文件存储路径方案

从/var/lib/mysql 转存到/var/lib/data/mysql/mysql(这里只是为了演示,正常情况下肯定是从一个逻辑分区转存到另一个逻辑分区)

首先看下整体的分区使用状况:

[root@localhost ~]# df -h
文件系统             容量  已用  可用 已用% 挂载点
/dev/mapper/cl-root   37G   21G   17G   57% /
devtmpfs             1.9G     0  1.9G    0% /dev
tmpfs                1.9G     0  1.9G    0% /dev/shm
tmpfs                1.9G  9.0M  1.9G    1% /run
tmpfs                1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1           1014M  239M  776M   24% /boot
tmpfs                378M  4.0K  378M    1% /run/user/42
tmpfs                378M   44K  378M    1% /run/user/0

找到一个分区比较大的逻辑分区,同时也能看到数据库数据目录存储在哪个分区,已经占用了多少等等数据。
这里对于新手可能不知道数据储存目录属于哪个逻辑分区,可以使用df -h 文件路径 查看

[root@localhost ~]# df -h /var/lib/mysql/
文件系统             容量  已用  可用 已用% 挂载点
/dev/mapper/cl-root   37G   21G   17G   57% /

这样我们就知道了/var/lib/mysql/所在分区的使用情况了

进入 cd /var/lib/mysql/ 数据目录,查看文件大小 查看文件大小1查看文件大小2

[root@localhost mysql]# du -h --max-depth=1 /var/lib/mysql/ 
14M /var/lib/mysql/mysql
......
118M    /var/lib/mysql/logstatistics
5.3G    /var/lib/mysql/

中间省略掉了,可以看到每个文件大小以及总的大小5.3G ,不想看详细的可以 du -sh

[root@localhost mysql]# du -sh
5.3G    

直接查看总的大小。

迁徙步骤

这里参考了两位大神的博客CentOS Linux更改MySQL数据库目录位置CentOS下mysql数据库data目录迁移,感谢他们的分享。

1、现在我们创建新的目录(如果错误没有哪个文件夹就一步一步创建下去)

[root@localhost mysql]# mkdir /var/lib/data/mysql/

2、mv或cp原始数据库数据目录文件

这里我用的是cp,为了安全考虑,直接复制一份,如果失败原始数据不会影响,可以快速回滚到之前的目录启动数据库

 [root@localhost mysql]# cp -a /var/lib/mysql  /var/lib/data/mysql/

-a:此参数的效果和同时指定”-dpR”参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
可以cp命令参考CP说明。另说明mv命令能保留文件的所有属性和权限,尤其是selinux属性,但是不能快速回滚,这个自己权衡吧,看哪个合适。

3、修改配置文件my.cnf

备份my.cnf

 [root@localhost mysql]#cp /etc/my.cnf /etc/my.cnfbak

编辑配置文件

 [root@localhost mysql]#vim /etc/my.cnf

修改如下几项( #为了安全起见,你可以把原来的注释掉,然后重新加入一行,改成现在的目录,也会为了快速回滚。)

[client]
port= 3308
socket= /var/lib/data/mysql/mysql/mysql.sock   -----路径改到新的存储目录下/var/lib/data/mysql/mysql

[mysqld]
socket= /var/lib/data/mysql/mysql/mysql.sock   -----路径改到新的存储目录下/var/lib/data/mysql/mysql
datadir= /var/lib/data/mysql/mysql             -----路径改到新的存储目录下/var/lib/data/mysql/mysql

[mysqld_safe]
socket=/var/lib/data/mysql/mysql/mysql.sock    -----路径改到新的存储目录下/var/lib/data/mysql/mysql

[mysql.server]
socket=/var/lib/data/mysql/mysql/mysql.sock    -----路径改到新的存储目录下/var/lib/data/mysql/mysql

这里说明下:

[mysqld_safe]
socket=/var/lib/data/mysql/mysql/mysql.sock    -----路径改到新的存储目录下/var/lib/data/mysql/mysql

[mysql.server]
socket=/var/lib/data/mysql/mysql/mysql.sock    -----路径改到新的存储目录下/var/lib/data/mysql/mysql

这两项可能有的人没有可以不写也可以加上没关系。

4、重启mysql

 [root@localhost mysql]#service mysqld stop
  [root@localhost mysql]#service mysqld start

这里看到一位同仁在处理过程中遇到启动的时候无限等待的情况启用SELinux的CentOS7修改MySQL的Datadir路径发现是SELinux导致,这里如果有遇到这种状况的可以关闭它

1、快速关闭SElinux,使用如下命令就可以:

 [root@localhost mysql]# /usr/sbin/setenforce 0 --立刻关闭 SELINUX
 [root@localhost mysql]# /usr/sbin/setenforce 1 --立刻启用 SELINUX

2、永久关闭

 [root@localhost mysql]# vim /etc/selinux/config

将SELINUX=enforcing改为SELINUX=disabled,保存后退出

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

此时获取当前selinux防火墙的安全策略仍为Enforcing,配置文件并未生效。

[root@localhost ~]# getenforce
Enforcing

重启机器

[root@localhost ~]# reboot

验证

[root@localhost ~]# /usr/sbin/sestatus
SELinux status:                 disabled
[root@localhost ~]# getenforce
Disabled

关闭后在启动mysql就没问题了,希望会帮助到大家。

猜你喜欢

转载自blog.csdn.net/u014180504/article/details/79220607