Linux MySQL数据库冷迁移采坑记录

当前文件系统已满,需要将MySQL默认路径迁移到新文件系统下。
MySQL数据库文件原位置:/var/lib/mysql 。
要移动至:/mysql/mysql 路径下。

1.停止MySQL服务

MySQL服务进程停止:
#mysqladmin -u root -p shutdown
查看mysql服务是否已经停止
#netstat -an |grep 3306

2.复制物理数据文件

把/var/lib/mysql整个目录移到/home/data
#cp -R /var/lib/mysql /mysql/mysql/
#chown -R mysql:mysql /data/mysql
#chmod -R 755 /data/mysql

把MySQL的数据文件移动到了/mysql/mysql下

3.修改my.cnf配置文件

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

将原路径注释,修改新路径如下:
datadir=/mysql/mysql
socket=/mysql/mysql/mysql.sock

4.启动MySQL报错

启动MySQL服务报错如下:

[root@localhost mysql]# systemctl start mysqld
Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.

查看MySQL服务状态如下:

[root@localhost mysql]# systemctl status mysqld
● mysqld.service - MySQL ServerLoaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)Active: failed (Result: start-limit) since Mon 2021-04-19 00:06:13 PDT; 1s agoDocs: man:mysqld(8)http://dev.mysql.com/doc/refman/en/using-systemd.htmlProcess: 19072 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=1/FAILURE)Process: 19030 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)Main PID: 17159 (code=exited, status=0/SUCCESS)

查看MySQL日志信息如下:

# tail -40 mysqld.log 2021-04-19T07:06:12.605508Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables
2021-04-19T07:06:12.605613Z 0 [ERROR] InnoDB: Operating system error number 13 in a file operation.
2021-04-19T07:06:12.605627Z 0 [ERROR] InnoDB: The error means mysqld does not have the access rights to the directory.
2021-04-19T07:06:12.605633Z 0 [ERROR] InnoDB: Operating system error number 13 in a file operation.
2021-04-19T07:06:12.605637Z 0 [ERROR] InnoDB: The error means mysqld does not have the access rights to the directory.
2021-04-19T07:06:12.605642Z 0 [ERROR] InnoDB: Cannot open datafile './ibtmp1'

ERROR信息,关键错误 :InnoDB: Operating system error number 13 in a file operation.

没有访问权限,不能写入,检查目录授权都正确,很是疑惑???

5.解决InnoDB: Operating system error number 13 in a file operation问题

遍访百度,需要关闭selinux :
先临时关闭,再测试一下:

[root@localhost /]# getenforce
Enforcing
[root@localhost /]# setenforce 0
[root@localhost /]# getenforce
Permissive
[root@localhost /]# systemctl start mysqld

启动MySQL成功!!!

[root@localhost mysql]# netstat -nlp |grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      19759/mysqld
[root@localhost mysql]#

登录数据库,提示如下:

[root@localhost /]# mysql -uroot -p
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

这个问题解决方法就是建立一个软连接:

ln -s /mysql/mysql/mysql.sock /var/lib/mysql/mysql.sock

登录MySQL后,在MySQL数据库中检查数据路径:

mysql> show global variables like "%datadir%";
+---------------+---------------+
| Variable_name | Value         |
+---------------+---------------+
| datadir       | /mysql/mysql/ |
+---------------+---------------+
1 row in set (0.02 sec)

6.永久关闭selinux

SELINUX=disabled

[root@localhost mysql]# cat /etc/selinux/config#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
SELINUX=disabled
#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

7.SELinux 参数说明,来自网络:

  • SELinux 的工作模式

SELinux 提供了 3 种工作模式:Disabled、Permissive 和 Enforcing,而每种模式都为 Linux 系统安全提供了不同的好处。

  • Disable工作模式(关闭模式)

在 Disable 模式中,SELinux 被关闭,默认的 DAC 访问控制方式被使用。对于那些不需要增强安全性的环境来说,该模式是非常有用的。

例如,若从你的角度看正在运行的应用程序工作正常,但是却产生了大量的 SELinux AVC 拒绝消息,最终可能会填满日志文件,从而导致系统无法使用。在这种情况下,最直接的解决方法就是禁用 SELinux,当然,你也可以在应用程序所访问的文件上设置正确的安全上下文。

需要注意的是,在禁用 SELinux 之前,需要考虑一下是否可能会在系统上再次使用 SELinux,如果决定以后将其设置为 Enforcing 或 Permissive,那么当下次重启系统时,系统将会通过一个自动 SELinux 文件重新进程标记。

关闭 SELinux 的方式也很简单,只需编辑配置文件 /etc/selinux/config,并将文本中 SELINUX= 更改为 SELINUX=disabled 即可,重启系统后,SELinux 就被禁用了。

  • Permissive工作模式(宽容模式)

在 Permissive 模式中,SELinux 被启用,但安全策略规则并没有被强制执行。当安全策略规则应该拒绝访问时,访问仍然被允许。然而,此时会向日志文件发送一条消息,表示该访问应该被拒绝。

  • SELinux Permissive 模式主要用于以下几种情况:

审核当前的 SELinux 策略规则;
测试新应用程序,看看将 SELinux 策略规则应用到这些程序时会有什么效果;
解决某一特定服务或应用程序在 SELinux 下不再正常工作的故障。

某些情况下,可使用 audit2allow 命令来读取 SELinux 审核日志并生成新的 SELinux 规则,从而有选择性地允许被拒绝的行为,而这也是一种在不禁用 SELinux 的情况下,让应用程序在 Linux 系统上工作的快速方法。

Enforcing工作模式(强制模式)
从此模式的名称就可以看出,在 Enforcing 模式中, SELinux 被启动,并强制执行所有的安全策略规则。

Linux MySQL数据库冷迁移采坑记录相关推荐

  1. linux下安装nginx的采坑记录

    一.linux安装 nginx最好是直接在linux上下载nginx的包和相关命令的资源,不然不会有sbin文件夹这些,具体的安装步骤可以自行百度哈: 二.nginx的配置 进入conf文件夹,修改n ...

  2. centos7恢复mysql数据库_MySQL数据库升级迁移填坑记

    原库:*.*.101.73/74 系统环境: Suse 12.4 MySQL: 5.7.29 新库:*.*.110.46/47 系统环境:CentOS7.7 64位 MySQL版本: 5.7.30 [ ...

  3. mysql 触发器采坑记录(mysql 触发器采坑记录 由于不了解mysql创建触发器要记录创建者IP,导致更改创建者IP后,触发器不可执行。 当创建触发器(视图、存储过程、函数)时,如果没有)

    mysql 触发器采坑记录(语序有点凌乱,回头再整理) 由于不了解mysql创建触发器要记录创建者IP,导致更改创建者IP后,触发器不可执行. 当创建触发器(视图.存储过程.函数)时,如果没有指定创建 ...

  4. mysql8.0.19.0_分享MySql8.0.19 安装采坑记录

    上篇文章给大家介绍了MySql8.0.19 安装过程,需要的朋友可以点击查看.https://www.jb51.net/article/178988.htm 1.ERROR 1820 (HY000): ...

  5. mysql8.0依赖_分享MySql8.0.19 安装采坑记录

    上篇文章给大家介绍了MySql8.0.19 安装过程,需要的朋友可以点击查看.https://www.jb51.net/article/178988.htm 1.ERROR 1820 (HY000): ...

  6. Linux MYSQL 数据库

    Linux MYSQL  数据库 1.1.概述: DBMS datebase management system  数据库管理系统 DML:date manapulate lanaguage  数据操 ...

  7. Linux Mysql 数据库基础

    目录 Linux Mysql 数据库基础 一.数据库 数据库简介 数据库的分类 数据库的发展史 数据库系统发展阶段 DBMS 数据库管理系统 数据库管理系统的优点 数据库管理系统的基本功能 数据库系统 ...

  8. Linux MySQL数据库的备份

                  Linux MySQL数据库的全库和单库备份 MySQL数据库的备份重要性不用多说,备份方式也很多,但常用的是MySQL自带的备份程序MySQLdump,该程序一键备份,一 ...

  9. Centos7.9上利用cephadm安装Ceph Octopus 15.2的采坑记录,附带K8S挂载方法

    Centos7.9上利用cephadm安装Ceph Octopus 15.2的采坑记录,附带K8S挂载方法 0.亮点 1 准备 1.1 修改历史记录 1.2 升级系统内核 1.3 配置免密登录 问题1 ...

最新文章

  1. Android学习----自适应国际化语言
  2. 人工智能取代医生AI画出鼻咽癌放疗靶区,准确性与医生相当
  3. 2019日历全年一张_带上这份2019全年活动日历,旅行打卡不迷路
  4. Android 数据解析——Gson与json
  5. IPFS的相关操作命令
  6. 400错误是什么原因_499错误是什么?499错误的原因及解决方法
  7. switch语句的基本使用
  8. python 字符串 string模块导入及用法
  9. 汉化pycharm,中文
  10. 数据结构课程设计 电梯模拟
  11. 商户如何接入微信支付
  12. Android App 安全登录认证解决方案
  13. 地铁WIFI值28亿?运营商终于不用背锅了
  14. mysql的tps和qps_关于MySQL的TPS和QPS
  15. 前端学习-HTML5
  16. 免费临时网页邮箱(可丢弃式邮箱)
  17. 华为交换机导入配置_将一个华为交换机的配置导入另一个已有配置的交换机中...
  18. 三极管:潜伏3个月的彩蛋是来自火星的么
  19. C语言实现简单的图书馆小程序(练习指针和结构体的基本使用)
  20. matlab 斜坡信号响应,matlab斜坡输入响应

热门文章

  1. 安装mysql最后一步未响应(解决方法)
  2. Node课程(3,2,1,8,3)
  3. @2022-02-22:每日一语
  4. 滴滴收购优步谈判过程_大流行之后,优步正在为绿色业务做准备
  5. 超经典的 25 道 MyBatis 面试题!
  6. 裁判文书数据-大数据分析用例
  7. HTML5七夕情人节表白网页制作——蓝色梦幻海洋3D相册—— HTML+CSS+JavaScript
  8. nonebot2调用文本API发送随机文本
  9. 方舟编译器的下载与安装配置及小组分工
  10. 川崎机器人总线通信_川崎机器人:PLC有那些功能?能实现机器人哪些通讯?