mariadb 无法在原始驱动器文件系统上启动

mariadb 无法在原始驱动器文件系统上启动

我有一台 Debian 10 机器,其大型虚拟驱动器已格式化,没有分区。它在 df 中显示为 /dev/sdb。 mariadb 的实例作为 Debian 10 的标准位于 /var/lib/mysql 中,但由于复制,我经常用 Bin 日志填充根文件系统。我将其移至大型 /dev/sdb 文件系统以缓解此问题。

在将其移动到 /dev/sdb (/usr/www1/) 的安装点时,我创建了一个与权限完全匹配的 mysql 目录,并将文件“rsync -avzh”到这个新的 /usr/www1/mysql 目录并更改mariadb 服务器conf 文件中的datadir。当我尝试启动它时,出现以下记录错误

2021-04-07 15:26:28 0 [ERROR] mysqld: File './mysql-bin.index' not found (Errcode: 30 "Read-only file system")
2021-04-07 15:26:28 0 [ERROR] Aborting

我见过的常见解决方案是为 apparmor 添加别名,但经过仔细检查,apparmor 的 MariaDB 配置文件是空的,并且有注释表明 apparmor 不再跟踪 mariadb 的权限,因为它提供的价值非常小,但给 mariadb 用户带来了太多问题(或类似的问题)。更改没有帮助,但这表明这不是我的问题。

我反复仔细检查了权限,甚至尝试收紧和放松权限,但结果相同。

我现在担心,由于驱动器未使用传统分区进行格式化,因此 mariadb 不会在以这种方式格式化的驱动器上启动并将其视为只读。系统不会将其视为只读,如以下 lsblk 所示:

NAME   MAJ:MIN RM    SIZE RO TYPE MOUNTPOINT
sda      8:0    0     75G  0 disk 
├─sda1   8:1    0    512M  0 part /boot/efi
├─sda2   8:2    0   58.5G  0 part /
├─sda3   8:3    0     16G  0 part [SWAP]
└─sda4   8:4    0 1007.5K  0 part 
sdb      8:16   0      1T  0 disk /usr/www1
sr0     11:0    1   14.1M  0 rom  

mariadb 是否有可能使用不同的方法来检查它将启动的文件系统,并将其误解为只读。我是否需要用分区重建此驱动器才能与 mariadb 一起使用?

编辑以添加请求的信息:

用于挂载的 /etc/fstab 条目:

/dev/sdb /usr/www1 ext3 defaults,errors=remount-ro 0 1

这个文件系统已经为我们的 apache2 工作,今年提供了可怕的页面数量,所以看起来大多数软件并不将其视为只读。它最终以这种方式格式化完全是偶然的。在安装这些服务器之前我没有使用过 Linux,并且遵循了一本肯定是针对 USB 驱动器的食谱。

apparmor 日志有正常条目,但没有 DENIED 消息。它始终以 5 条有关重定向的消息开头,这些消息必须是标准的。它在系统日志中。

答案1

我自己回答这个问题,因此将会有该解决方案变体的记录。事实证明,这个问题的解决方案与网上的所有示例非常相似,人们在将 mariadb 移动到 /home 时无法启动它,但有一点不同。

在 Debian 10 上,systemd 在目录中包含 /usr。按照设计,如果网站使用 mariadb,则无法在 /usr 之外运行网站。要更正它,请使用 sudo:

vi /etc/systemd/system/multi-user.target.wants/mariadb.service
/ProtectSystem=full
s/full/false/
ZZ
systemctl daemon-reload
systemctl start mariadb

我不确定是否需要在每次更新时重复此操作,因此在应用补丁时要保持警惕。

相关内容