当前位置: 首页 > news >正文

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/mysqlls -lZ

3、设置文件所属人和组

Set permissions if needed:

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

参考:

  • MySQL 8.0.13 systemctl start throws error 13
  • mysql bin-log.index not found
  • How to set selinux permission for non-standard mysql bin log path?
  • SELinux默认安全上下文的查询和修改(semanage命令)
  • chcon 修改对象(文件)的安全上下文
http://www.lryc.cn/news/14736.html

相关文章:

  • uboot / linux添加/去除 版本号LOCALVERSION
  • 2023北京养老展,北京养老展会,北京养老产业展览会
  • 华为OD机试 - 分糖果(Java) | 机试题算法思路 【2023】
  • 带你彻底了解浮点型数据的存储
  • 【牛客刷题专栏】0x0C:JZ4 二维数组中的查找(C语言编程题)
  • 「mysql是怎样运行的」第5章 盛放记录的大盒子---InnoDB数据页结构
  • 模电中的负反馈
  • eclipse中整理左侧项目栏文件
  • IDEA性能优化设置(解决卡顿问题)修改内存
  • Android ABI
  • 决策树算法和CART决策树算法详细介绍及其原理详解
  • ChatGPT风口下的中外“狂飙”,一文看懂微软、谷歌、百度、腾讯、华为、字节跳动们在做什么?
  • 前端的核心技术有哪些?
  • Talk预告 | 悉尼科技大学澳大利亚人工智能研究所讲师方震:广义分布外检测的学习理论
  • 企业微信的聊天机器人来了,免费下载(Python版)
  • DataGear 4.5.0 发布,数据可视化分析平台
  • Java使用Aria2c进行文件下载
  • Dart 表达式以及语法糖汇总
  • 支付宝支付功能使用
  • 数据库必知必会:TiDB(11)TiDB集群安装
  • ubuntu18安装Autoware 标定工具箱
  • 【面试题】ES6 如何将 Set 转化为数组
  • vs2022 实现无线调试安卓(Windows)
  • 手把手教你做插件(2)模块大串联
  • LU Accepted or Rejected过程介绍
  • Teradata退了? 无所谓,GBASE会出手
  • 华为OD机试 - 病菌感染(Python) | 机试题+算法思路+考点+代码解析 【2023】
  • 前置知识-边值问题、打靶法、bvp 系列函数的用法
  • 为什么越来越多的企业选择智能客服系统?
  • 打造一款日志分析工具