Centos8修改Mysql默认数据存储路径的方法

Centos8 Mysql数据量过大时,通常会把数据目录转移到用户主目录磁盘上,简单介绍下修改Mysql默认数据存储路径的方法。

Mysql默认数据路径:/var/lib/mysql

自定义新数据路径:/home/new-mysql-data

$ sudo systemctl stop mysqld                          // 停止mysql服务,以免发生意外情况
$ sudo mkdir /home/new-mysql-data                    // 新建数据目录
$ sudo cp -R /var/lib/mysql /home/new-mysql-data     // 备份原有数据。注意先备份,再执行下一步修改权限。
$ sudo chown -R mysql:mysql /home/new-mysql-data     // 赋予新的数据目录权限,非常重要!!
$ sudo vi /etc/my.cnf                                // 修改配置目录(就一行):datadir = /home/new-mysql-data
$ sudo systemctl start mysqld                        // 启动服务
$ sudo systemctl status mysqld                       // 查看状态

配置新数据目录后,启动服务,如果卡住失败,优先查看日志,比较常见的错误有:

2023-10-31 08:15:53 2941 [Warning] Can’t create test file /home/user/nsdata/deploy/nsm/data/0c74ddc8ba9c.lower-test
2023-10-31 08:15:53 2941 [Warning] Can’t create test file /home/user/nsdata/deploy/nsm/data/0c74ddc8ba9c.lower-test
2023-10-31 08:15:53 2941 [Note] Plugin ‘FEDERATED’ is disabled.
^G/usr/sbin/mysqld: Can’t find file: ‘./mysql/plugin.frm’ (errno: 13 – Permission denied)
2023-10-31 08:15:53 2941 [ERROR] Can’t open the mysql.plugin table. Please run mysql_upgrade to create it.
2023-10-31 08:15:53 2941 [Note] InnoDB: Using atomics to ref count buffer pool pages
2023-10-31 08:15:53 2941 [Note] InnoDB: The InnoDB memory heap is disabled
2023-10-31 08:15:53 2941 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins

一般是新目录权限不够,必须赋予Mysql权限。而且更新权限后,最好执行停止(stop)一次服务后,再重新启动。

$ sudo chown -R mysql:mysql /home/new-mysql-data 

参考资料

  1. https://blog.51cto.com/u_16213309/7136138
  2. https://www.yzktw.com.cn/post/731723.html