通过更新 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 页面上的说明,我正在尝试执行以下操作:
- 停止 mysql.
sudo systemctl stop mysql
- 在
/etc/mysql/mysql.conf.d/mysqld.cnf
中添加行innodb_log_group_home_dir = "/media/newdisk/iblogs"
- 开始mysql。
sudo systemctl start mysql
然而,这似乎并没有奏效。第 3 步中的启动失败。
我尝试了以下方法,但其中 none 有帮助。
- 一个。重新启动 apparmor:
sudo systemctl restart apparmor
- b。
/media/newdisk
是我有外部磁盘的地方。我创造了
iblogs
目录并为其分配 RWX(777) 权限。
- c。
sudo chown -R mysql:mysql /media/newdisk
- d。我考虑过移动
ib_logfile0
和 ib_logfile1
目前在 /var/lib/mysql
(默认
datadir) 到 /media/newdisk/iblogs
我是否也应该考虑在 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
这就是我解决问题并成功更新日志目录的方法
- 停止 mySQL.
- 停止 Apparmor。
- 在mysqld.cnf
中添加需要的目录
- 在 usr.sbin.mysqld(mysql 配置文件)
中授予所需目录的权限
- 开始装备。
- 开始mySQL;
我正在做一个 POC,试图更改 MySQL 8.0 中的事务日志文件。根据我的发现,我认为 ib_logfile0 和 ib_logfile1 是我应该关注的文件(还有其他我应该考虑的文件吗?)。为此,根据 this 页面上的说明,我正在尝试执行以下操作:
- 停止 mysql.
sudo systemctl stop mysql
- 在
/etc/mysql/mysql.conf.d/mysqld.cnf
中添加行 - 开始mysql。
sudo systemctl start mysql
innodb_log_group_home_dir = "/media/newdisk/iblogs"
然而,这似乎并没有奏效。第 3 步中的启动失败。 我尝试了以下方法,但其中 none 有帮助。
- 一个。重新启动 apparmor:
sudo systemctl restart apparmor
- b。
/media/newdisk
是我有外部磁盘的地方。我创造了iblogs
目录并为其分配 RWX(777) 权限。 - c。
sudo chown -R mysql:mysql /media/newdisk
- d。我考虑过移动
ib_logfile0
和ib_logfile1
目前在/var/lib/mysql
(默认 datadir) 到/media/newdisk/iblogs
我是否也应该考虑在 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
这就是我解决问题并成功更新日志目录的方法
- 停止 mySQL.
- 停止 Apparmor。
- 在mysqld.cnf 中添加需要的目录
- 在 usr.sbin.mysqld(mysql 配置文件) 中授予所需目录的权限
- 开始装备。
- 开始mySQL;