我目前使用 MySQL/home/foo/data/database
作为其数据目录。作为/home/foo/data/database
已安装的 raid 1 阵列。我遇到的问题是,每次启动时,MySQL 都会在 raid 阵列安装到之前启动/home/foo/data/database
,因此 MySQL/home/foo/data/database
在根驱动器上使用其数据目录,而不是安装的 raid 阵列。这导致了问题,因为当我查看 raid 阵列状态、已安装的分区和 MySQL 时,一切似乎都很好。除了我的 MySQL 数据库是空的,因为所有数据都在 raid 阵列上。
有没有办法确定 MySQL 是否使用根驱动器路径而不是 raid 阵列?这样我至少知道这个问题是否发生,这样我就可以重新启动 MySQL 来解决问题。
foo@foo:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 110.6M 1 loop /snap/core/12834
loop1 7:1 0 27.8M 1 loop /snap/wifi-ap/355
sda 8:0 0 465.8G 0 disk
└─md0 9:0 0 465.7G 0 raid1 /home/foo/data/database
sdb 8:16 0 465.8G 0 disk
└─md0 9:0 0 465.7G 0 raid1 /home/foo/data/database
sdc 8:32 0 59.6G 0 disk
└─sdc3 8:35 0 59.6G 0 part
├─foo_vg-root 253:0 0 16.2G 0 lvm /
├─foo_vg-data 253:1 0 42.5G 0 lvm /home/foo/data
└─foo_vg-swap 253:2 0 1G 0 lvm [SWAP]
foo@foo:~$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/mapper/foo-root / ext4 errors=remount-ro 0 1
/dev/mapper/foo_vg-data /home/foo/data ext4 defaults 0 0
/dev/mapper/foo_vg-swap none swap sw 0 0
/dev/md0 /home/foo/data/database ext4 defaults,nofail,discard 0 0
答案1
您应该能够编辑 systemd 启动脚本以包含
After home-foo-data-database.mount
在[服务]部分。您还可以创建文件
/etc/systemd/system/mysql.service.d/override.conf
添加条件而不触及原始服务文件。假设该服务被命名为mysql
如果您正在编写自己的启动脚本,则可以使用其他选项。mountpoint /home/foo/data/database
如果安装了文件系统,则返回 true,否则返回 false。测试安装点并退出或循环,直到返回 true。