通过更新 innodb_log_group_home_dir 在 MySQL 8.0 中更改 ib_logfile* 目录

Changing ib_logfile* directory in MySQL 8.0 by updating innodb_log_group_home_dir

我正在做一个 POC,试图更改 MySQL 8.0 中的事务日志文件。根据我的发现,我认为 ib_logfile0 和 ib_logfile1 是我应该关注的文件(还有其他我应该考虑的文件吗?)。为此,根据 this 页面上的说明,我正在尝试执行以下操作:

  1. 停止 mysql.sudo systemctl stop mysql
  2. /etc/mysql/mysql.conf.d/mysqld.cnf
  3. 中添加行innodb_log_group_home_dir = "/media/newdisk/iblogs"
  4. 开始mysql。 sudo systemctl start mysql

然而,这似乎并没有奏效。第 3 步中的启动失败。 我尝试了以下方法,但其中 none 有帮助。

我是否也应该考虑在 apparmor cnf 中添加一个别名?如果是的话,我不太明白我的别名应该是什么。我看过的一些示例将整个数据目录指向新位置,因此他们将 /var/lib/mysql 的别名设置为新目录。但我只关心 ib_logile*.

使用 this 解决方案尝试了上述方法,但没有奏效。

Apparmor 通常不允许像 mysqld 这样的服务访问不在指定位置的文件。 mysqld 服务应该有一个配置文件,您需要使用 ib 日志文件的新位置更新它。

症状可能是 MySQL 错误日志中报告无法打开 ib 日志文件,这可能是因为权限问题或文件不存在。这可能令人困惑,因为没有理由认为这些应该是问题,除了 apparmor。

您也可以尝试完全关闭 apparmor 作为测试。如果您可以在关闭 apparmor 的情况下成功启动 MySQL 服务器,则表明 apparmor 正在阻止文件访问。

您可能想阅读有关使用或修改 apparmor 配置文件的信息:https://ubuntu.com/tutorials/beginning-apparmor-profile-development#1-overview

感谢以上@Bill Karwin提供的link。 https://ubuntu.com/tutorials/beginning-apparmor-profile-development#1-overview

这就是我解决问题并成功更新日志目录的方法

  1. 停止 mySQL.
  2. 停止 Apparmor。
  3. 在mysqld.cnf
  4. 中添加需要的目录
  5. 在 usr.sbin.mysqld(mysql 配置文件)
  6. 中授予所需目录的权限
  7. 开始装备。
  8. 开始mySQL;