MYSQL5.7 切换datadir数据目录

众所周知,centos7操作系统mysql5.7采用安装方式部署的情况下,他的数据目录默认是在/var/lib/mysql,而其占用的是根路径对应的磁盘空间,一般服务器都是会额外外挂一个磁盘空间,理论上应该把数据目录放外挂的磁盘空间。否则就会导致我们的根路径磁盘空间马上就不够用了。所以后知后觉的人们就会需要下面的操作,对已有的数据库数据目录进行转移。

开始之前,请你做好数据备份工作,备份好你的数据库
上面的备份事项弄清楚了,再往下看!

1. 停止mysql服务

在迁移数据文件之前,首先需要停止MySQL服务,以确保数据文件不会在迁移过程中发生变化。

sudo systemctl stop mysqld

或者,如果您使用的是init系统:

bash sudo service mysql stop

2. 复制数据文件到新位置

使用rsynccp命令将/var/lib/mysql目录下的所有文件复制到新的位置。例如,如果您想将数据文件迁移到/new/location/mysql,可以使用以下命令:

sudo cp -Rp /var/lib/mysql /new/location/

当你以为只是简单的复制就ok那就想简单了。因为centos7使用了SELinux,系统会控制应用能访问的目录,所以如果不更改相关配置,则会导致启动数据库失败,提示没有权限。

#使用此命令看你新目录的mysql文件夹
ll -Z
#正确的应该是下面这样
drwxr-x--x. mysql mysql unconfined_u:object_r:mysqld_db_t:s0 mysql

如果不是则按如下操作。

sudo semanage fcontext -a -t mysqld_db_t "/new/location/mysql(/.*)?"
sudo restorecon -R /new/location/mysql

确保在复制过程中保留文件的权限和所有权,这对于MySQL的正常运行至关重要。

SELinux(Security-Enhanced
Linux)是一个安全模块,集成在Linux内核中,它提供了一种强制访问控制(MAC)机制,用于增强操作系统的安全性。SELinux由美国国家安全局(NSA)开发,并在2000年12月发布,随后被合并到Linux内核的主线版本中。

如需判断系统是否开启了SELinux,使用以下语句

sestatus
如果出现下面的结果,就是开启了。

SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 31

3.修改mysql 配置文件

编辑MySQL的配置文件my.cnf(通常位于/etc/mysql/my.cnf/etc/my.cnf),更新datadir参数以指向新的数据文件位置。

vi /etc/my.cnf

在配置文件中找到以下行:

datadir = /var/lib/mysql

将其修改为:

datadir = /new/location/mysql

保存 esc :wq 关闭文件。

4. 启动mysql数据库

现在可以启动MySQL服务,并检查是否一切正常。

复制

sudo systemctl start mysqld

或者,如果您使用的是init系统:

复制

bash sudo service mysql start

5.其他事项

正常情况下,上面的步骤是一切顺利的,至此已经完成迁移工作。

但你不能删了原来的mysql文件夹,针对性的删除一些大数据,除非你确保你的my.cnf配置已经完全把所有路径更改了。因为还有sock等。

如果启动失败了,那么已经超出此篇博文的内容了。需要看一下具体失败原因再进行解决。实在不行,就切回去从长计议。切回去只要更改配置文件my.cnf datadir改为原来的路径即可。

#查看当前数据库服务的状态
systemctl status mysqld

默认的mysqld的日志在

#排查数据库启动失败的原因
tail -f /var/log/mysqld.log
  • 20
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值