MySQL数据文件迁移(不关闭SELinux)

背景

日常实施中可能会出现在部署MySQL时未更改数据默认存储路径(默认:/var/lib/mysql),然而一般分配服务器的人只会给系统分区分配50G的空间,这导致后续空间不够用的情况,也就出现了需要迁移数据的问题。

当前测试环境

╰─$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
╰─$ mysqladmin --version
mysqladmin  Ver 8.0.32 for Linux on x86_64 (MySQL Community Server - GPL)
╰─$ 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
Max kernel policy version:      31

迁移步骤

mysql默认的数据文件存储目录为/var/lib/mysql。假如要把目录移到/data/app/下需要进行以下几步:

1、创建目录

mkdir -p /data/app

2、停止mysql服务

systemctl stop mysqld.service

3、移动数据默认文件夹到新位置

cp -rf /var/lib/mysql /data/app/

4、修改my.cnf配置文件

编辑/etc/my.cnf文件,如果不存在改配置文件,到/usr/share/mysql/下找到*.cnf文件,拷贝其中一个到/etc/并改名为my.cnf)中后再修改。命令如下:

cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

在/etc/my.cnf文件中找到以下两行并将等号后的/var/lib/路径修改为新路径/data/app/

#socket=/var/lib/mysql/mysql.sock
socket=/data/app/mysql/mysql.sock
#datadir=/var/lib/mysql
datadir=/data/app/mysql/

5、更改新目录的文件属主

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

6、启动mysql服务

systemctl start mysqld.service

问题

mysqld: File './binlog.index' not found (OS errno 13 - Permission denied)

大概是因为SELinux的限制,可以将SELinux关掉。但是Every time you run setenforce 0, you make Dan Walsh weep. Dan is a nice guy and he certainly doesn't deserve that.,Seriously, stop disabling SELinux. Learn how to use it before you shut it off. 😂😂😂

可以尝试了解一下Red Hat Chapter 3. SELinux Contexts

我通过以下步骤,在保证SELinux开启的状态下,解决了这个问题。

1、设置文件安全上下文

To set mysql selinux on a directory you can:

semanage fcontext -a -t mysqld_db_t "/data/app/mysql(/.*)?"

2、修改目录安全上下文

restorecon -Rv /data/app/mysql

ls -lZ

3、设置文件所属人和组

Set permissions if needed:

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

参考:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sajor_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值