如何更改 MariaDB 的数据目录?

如何更改 MariaDB 的数据目录?

我已经安装了 MariaDB,并将 datadir 更改为 /tank/mysql,并且一切正常。

之后我必须重新安装 MariaDB,并且我正在使用:

apt -y remove --purge mariadb-server
apt -y install mariadb-server

一切顺利。

现在的问题是 datadir 没有改变。

我更改的文件与之前相同:/etc/mysql/mariadb.conf.d/60-mariadb.cnf

代码:

[mysqld]
datadir=/tank/mysql

MariaDB 指向 /var/lib/mysql

我知道最好的解决方案是重新安装整个 ubuntu 服务器,但现在这不是一个选择。

如果我可以写其他内容来改进我的问题,请提出建议。

/etc/mysql 文件夹中没有包含“/var/lib/mysql”的文件。

我在其他服务器上重新安装后也遇到了这个问题,并且无法解决,所以最后我重新安装了整个服务器。

信息:

操作系统:Ubuntu 服务器 16.04

MariaDB 版本:10.2.15

答案1

在 Debian 9 上,我通过运行以下命令解决了这个问题:

mysql_install_db --datadir=YOURDATADIR

然后改变datadir选项

/etc/mysql/mariadb.conf.d/50-server.cnf

(或任何包含datadir选项的文件)根据上面的 YOURDATADIR 并重新启动mariadb.service

答案2

恭喜@CroisOS!

对于那些遇到类似问题的人,以下是我所做的。值得检查一下,因为这可能是你所处的情况。

首先,您应该查找是否有其他文件包含该datadir指令(这只是一个示例)。运行grep -R datadir /etc/mysql/

我也曾经遇到过这样的问题,因为systemctl stop|restart mysqld.service无法工作(服务根本没有停止或重新启动)。解决方案是mysqladmin shutdown。确保服务不再运行(ps faux | grep mysqld)。然后使用重新启动服务systemctl

在 mariadb 控制台检查该指令对应的全局变量,以确保更改生效。

答案3

最后我终于解决了。

注意:这是仅适用于重新安装 MariaDB 后更改 datadir 的解决方案,如果最初安装了 MariaDB,则应该通过在 cnf 文件中正常更改 datadir 来实现。

# that failed
apt -y remove --purge mariadb-server

apt -y remove --purge mariadb-server-10.2
apt -y autoremove
rm -fr /etc/mysql/
rm -fr /var/lib/mysql
rm /usr/bin/mysql
reboot

# in this moment datadir is /var/lib/mysql
apt -y install mariadb-server

/etc/init.d/mysql stop
cp -R /var/lib/mysql/ /tank/mysql/
cd /tank/mysql/
rm ibdata1
rm ib_*

答案4

/etc/mysql 文件夹中没有包含“/var/lib/mysql”的文件。

/var/lib/mysql 很可能是在 datadir 未另行定义的情况下默认编译使用的。

您应该调查.cnf 文件的级联,并确保 /etc/mysql/mariadb.conf.d/60-mariadb.cnf 文件确实包含在内。

运行命令mysql --help并查找类似以下行

默认选项按给定顺序从以下文件读取:/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf

查找每个文件并检查是否存在,然后包含 /etc/mysql/mariadb.conf.d/*.cnf或类似内容。如果缺少,则应添加它。

相关内容