Centos7 修改mysql数据文件存储路径方案(转)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u014180504/article/details/79220607
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就没问题了,希望会帮助到大家。