MySQL 移动数据目录后启动失败问题解决

目录
  • 背景概述
  • 问题复现
    • 1.关闭数据库
    • 2.查看当前数据目录所在位置
    • 3.通过mv移动整个MySQL数据目录到其他目录
    • 4.修改属主属组
    • 5.修改配置文件中数据目录的地址
    • 6.启动数据库
    • 7.问题解决
    • 8.启动数据库
    • 9.作为从节点
    • 10.问题解决
  • 总结
  • GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。
  • GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。
  • 作者: 王权富贵
  • 文章来源:GreatSQL社区投稿

背景概述

由于安装数据库时将MySQL的数据目录放在了根目录下,现在存储空间不足,想通过mv将数据目录移动到其他目录下,但将数据目录移动到其他数据目录后,启动数据库失败。

问题复现

本次测试基于 MySQL 8.0.31

1.关闭数据库

mysql> shutdown;
Query OK, 0 rows affected (0.02 sec)

2.查看当前数据目录所在位置

shell> pwd
/mysql80

3.通过mv移动整个MySQL数据目录到其他目录

shell>  mv /mysql80 /data
shell>  cd /data/mysql80/svr
shell>  ln -s mysql-8.0.31-linux-glibc2.12-x86_64 mysql

4.修改属主属组

shell> chown -R mysql.mysql /data

5.修改配置文件中数据目录的地址

shell> sed -i 's#/mysql80#/data/mysql80#g' my5001.cnf

6.启动数据库

shell> /data/mysql80/svr/mysql/bin/mysqld_safe \
--defaults-file=/data/mysql80/conf/my5001.cnf --user=mysql &

此时启动数据库失败,错误日志报错如下:

mysqld: File '/mysql80/dbdata/data5001/log/binlog.000012' not found (OS errno 2 - No such file or directory)
2023-02-27T10:38:09.240576+08:00 0 [ERROR] [MY-010958] [Server] Could not open log file.
2023-02-27T10:38:09.240657+08:00 0 [ERROR] [MY-010041] [Server] Can't init tc log
2023-02-27T10:38:09.240718+08:00 0 [ERROR] [MY-010119] [Server] Aborting
2023-02-27T10:38:10.548605+08:00 0 [System] [MY-010910] [Server] /data/mysql80/svr/mysql/bin/mysqld: Shutdown complete (mysqld 8.0.31)  MySQL Community Server - GPL.

这里报错显示找不到binlog文件,并且报错显示的binlog的目录还是之前的,但是配置文件中的目录已经修改

shell> grep 'log-bin' my5001.cnf
log-bin=/data/mysql80/dbdata/data5001/log/binlog
log-bin-trust-function-creators

7.问题解决

最后通过查找发现 binlog.index 文件中存放着每个binlog文件的绝对路径地址,这里的路径还是之前路径,内容如下:

shell> cat binlog.index
/mysql80/dbdata/data5001/log/binlog.000001
/mysql80/dbdata/data5001/log/binlog.000002
/mysql80/dbdata/data5001/log/binlog.000003
/mysql80/dbdata/data5001/log/binlog.000004
/mysql80/dbdata/data5001/log/binlog.000005
/mysql80/dbdata/data5001/log/binlog.000006
/mysql80/dbdata/data5001/log/binlog.000007
/mysql80/dbdata/data5001/log/binlog.000008
/mysql80/dbdata/data5001/log/binlog.000009
/mysql80/dbdata/data5001/log/binlog.000010
/mysql80/dbdata/data5001/log/binlog.000011
/mysql80/dbdata/data5001/log/binlog.000012

修改binlog.index文件中binlog的绝对路径:

shell> sed -i 's#/mysql80#/data/mysql80#g' binlog.index
shell> cat binlog.index
/data/mysql80/dbdata/data5001/log/binlog.000001
/data/mysql80/dbdata/data5001/log/binlog.000002
/data/mysql80/dbdata/data5001/log/binlog.000003
/data/mysql80/dbdata/data5001/log/binlog.000004
/data/mysql80/dbdata/data5001/log/binlog.000005
/data/mysql80/dbdata/data5001/log/binlog.000006
/data/mysql80/dbdata/data5001/log/binlog.000007
/data/mysql80/dbdata/data5001/log/binlog.000008
/data/mysql80/dbdata/data5001/log/binlog.000009
/data/mysql80/dbdata/data5001/log/binlog.000010
/data/mysql80/dbdata/data5001/log/binlog.000011
/data/mysql80/dbdata/data5001/log/binlog.000012

8.启动数据库

shell> /data/mysql80/svr/mysql/bin/mysqld_safe
--defaults-file=/data/mysql80/conf/my5001.cnf --user=mysql &

数据库启动成功。

9.作为从节点

需要注意的是,如果该实例还作为其他实例的从节点,还需要设置 relaylog.index 文件中relay log的绝对路径,否则会报如下错误: 错误日志报错:

2023-02-27T15:56:55.224372+08:00 0 [ERROR] [MY-010599] [Repl] log /mysql80/dbdata/data5002/log/relaylog.000002 listed in the index, but failed to stat.
2023-02-27T15:56:55.224422+08:00 0 [ERROR] [MY-011059] [Repl] Error counting relay log space.
2023-02-27T15:56:55.226571+08:00 0 [ERROR] [MY-010426] [Repl] Slave: Failed to initialize the master info structure for channel ''; its record may still be present in 'mysql.slave_master_info' table, consider deleting it.
2023-02-27T15:56:55.226622+08:00 0 [ERROR] [MY-010529] [Repl] Failed to create or recover replication info repositories.

执行 start replica 时也会报错:

# 客户端报错
mysql> start replica;
ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
# error log报错
2023-02-27T15:57:53.858798+08:00 8 [ERROR] [MY-013124] [Repl] Slave SQL for channel '': Slave failed to initialize relay log info structure from the repository, Error_code: MY-013124

10.问题解决

修改 relaylog.index 文件中relay log的绝对路径

sed -i 's#/mysql80#/data/mysql80#g' relaylog.index

重新启动数据库,并启动主从复制

# 重启实例
mysql> restart;
# 启动主从复制
mysql> start replica;

此时主从复制恢复正常。

总结

1.搭建数据库前应提前规划并确定存储位置及磁盘大小,以及之后数据量增长情况,避免磁盘空间不足时导致数据库不能正常使用。

2.当我们手动进行数据目录的移动时,不仅需要修改配置文件中数据目录的路径,还需要修改 binlog.index relaylog.index 文件中binlogrelaylog的绝地路径,否则启动时可能出报错,并且不能正常建立主从关系。

到此这篇关于MySQL 移动数据目录后启动失败的文章就介绍到这了,更多相关mysql启动失败内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Windows中Mysql启动失败的完美解决方案

    目录 一.问题描述 1.1.mysql服务启动失败1 1.2.mysql服务启动失败2 二.针对一的解决办法 2.1.问题解析 2.2.解决办法 2.2.1.存在数据的情况 三.数据恢复 3.1.mysql数据恢复 [Mysql问题]Windows中Mysql启动失败与数据恢复 一.问题描述 1.1.mysql服务启动失败1 使用命令启动:net start mysql 结果如下: 在windows计算机管理->服务->MySQL57强制启动,结果如下: 1.2.mysql服务启动失败2 通过

  • mysql5.7.18安装时mysql服务启动失败的解决方法

    MySQL 是一个非常强大的关系型数据库.但有些初学者在安装配置的时候,遇到种种的困难,在此就不说安装过程了,说一下配置过程.在官网下载的mysql时候,有msi格式和zip格式.Msi直接运行安装即可,zip则解压在自己喜欢的目录地址即可.在安装这两种的时候,都需要配置才能用.以下介绍主要是msi格式默认的地址:C:\Program Files\ mysql-5.7.18-win32. 一.在安装或者解压后,需要配置环境变量,过程如下:我的电脑->属性->高级系统设置->高级->

  • MySQL数据库innodb启动失败无法重启的解决方法

    问题介绍 电脑在使用过程中死机,重启后发现mysql没有启动成功,查看错误日志发现是innodb出现问题导致mysql启动失败. 错误日志 $ mysql.server start Starting MySQL . ERROR! The server quit without updating PID file (/usr/local/var/mysql/fdipzonedeMacBook-Air.local.pid). 22:08:37 mysqld_safe Starting mysqld

  • mysql启动失败之mysql服务无法启动(服务没有报告任何错误)的解决方法

    目录 错误提示 尝试以下步骤,最终解决问题: 总结 错误提示 My SQL server8.0 安装后,启动失败,提示信息如下: 尝试以下步骤,最终解决问题: 1 查看host文件(C:\Windows\System32\drivers\etc\hosts),是否修改过本地域名,如果将localhost对应的地址修改过,有可能会导致连接mysql server失败. 解决方法:将localhost映射的地址注释掉 2 如果在mysql的安装路径(C:\Program Files\MySQL\My

  • MySQL常见内存不足启动失败的完美解决方法

    1.启动MySQL时一直不成功,查看错误日志 /var/log/mysql/error.log 2.主要的错误信息有如下几条: [ERROR] InnoDB: mmap(136151040 bytes) failed; errno 12 [ERROR] InnoDB: Cannot allocate memory for the buffer pool [ERROR] InnoDB: Plugin initialization aborted with error Generic error [

  • Windows系统下解决PhPStudy MySQL启动失败问题

    报错 Apache\Nginx服务正常启动了,但是MySQL却一直启动失败. 解决流程 查看端口是否被占用 打开系统自带的资源管理器,查看监听端口3306是不是被占用,下图中3306端口被mysqld.exe占用,mysqld.exe是phpstudy自带的mysql服务,如果非mysqld.exe占用了3306,那么可以跟着下面的步骤去关闭. 打开系统自带的服务 切换本地MySQL服务 发现服务中有两个MySQL服务,一个是MySQL,一个是MySQLa.原因是,我之前在本地就安装过了mysq

  • MySQL 移动数据目录后启动失败问题解决

    目录 背景概述 问题复现 1.关闭数据库 2.查看当前数据目录所在位置 3.通过mv移动整个MySQL数据目录到其他目录 4.修改属主属组 5.修改配置文件中数据目录的地址 6.启动数据库 7.问题解决 8.启动数据库 9.作为从节点 10.问题解决 总结 GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. GreatSQL是MySQL的国产分支版本,使用上与MySQL一致. 作者: 王权富贵 文章来源:GreatSQL社区投稿 背景概述 由于安装数据库时将MySQL的

  • AndroidStudio升级4.1后启动失败Plugin问题解决

    AS升级4.1 后启动失败 Plugin问题 start fail 弹窗如下: Internal error. Please refer to https://code.google.com/p/android/issues java.lang.NoSuchMethodError: com.intellij.ide.plugins.PluginManagerCore.loadDescriptors()[Lcom/intellij/ide/plugins/IdeaPluginDescriptorI

  • Docker Desktop常见的几种启动失败问题解决方法

    目录 报错1,Error:Failed to restart 报错2,Error invoking remote method 'desktop-go-backend':[object Object] 报错3,无错误信息,一直卡在 Docker Desktop starting... 报错4,在Ubuntu for windows 中执行docker命令提示未找到 报错5,LxssManager无法启动,处于停止状态 总结 报错1,Error:Failed to restart 点Quit 然后

  • 完美解决mysql客户端授权后连接失败的问题

    在本地(192.168.1.152)部署好mysql环境,授权远程客户机192.168.1.%连接本机的mysql,在iptables防火墙也已开通3306端口. 如下: mysql> select host,user,password from mysql.user; +--------------+-----------------+---------------------------------------------------------+ | host | user | passw

  • MySQL下常见的启动失败与备份失败问题的解决教程

    启动失败 重启服务器后-->重启应用服务(Confluence)-->报错,数据库连接失败(mysql设置了开机自启动)-->查看mysql数据库状态: [root@fisheye ~]# ps -ef | grep mysql root 25555 21974 0 11:28 pts/0 00:00:00 grep mysql 启动mysql服务器 [root@fisheye data]# service mysql start MySQL server PID file could

  • Mysql/MariaDB启动时处于进度条状态导致启动失败的原因及解决办法

    今天打开网站突然发现网站无法打开,后来通过SSH登陆服务器发现MARIADB数据库没有启动成功,再次启动还是无法成功启动,一直处于启动进度条,进度条结束后提示ERROR.查看日志出现以下错误: InnoDB: Unable to lock ./ibdata1, error: 11 后经调试发现是因为MariaDB数据库所在分区已经满了,造成无法启动. 只有将MariaDB数据库存放数据目录移动到另外一个磁盘份额比较大的分区或者将当前分配删除一些不必要的文件. 移动办法: 1.停掉mysql服务器

  • CentOS 7下MySQL服务启动失败的快速解决方法

    今天,启动MySQL服务器失败,如下所示: [root@spark01 ~]# /etc/init.d/mysqld start Starting mysqld (via systemctl): Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe&qu

  • ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)

    本文为大家详细分享了搭建ThinkPHP框架时遇到的问题,为大家提供了解决方法,具体内容如下 第一部分:框架搭建 我也是刚接触ThinkPHP,所以将目前的心得以及学习步骤按照我认为更容易理解的方式记录下来. 要使用ThinkPHP首先是要把环境搭建好,下面两个大体步骤来介绍: 第一步:下载软件 1.Xmapp(此软件将Apache.MySQL等集成了,使用起来很方便) 2.ThinkPHP3.2.3下载 第二步:搭建框架 1.将xmapp安装好,我们可以看到一个htdocs文件夹,我们可以将下

随机推荐