Mount

如何確定mysql是否使用掛載目錄下的目錄?

  • April 13, 2022

我目前使用 MySQL/home/foo/data/database作為其數據目錄。作為/home/foo/data/database已安裝的 raid 1 陣列。我遇到的問題是,在啟動時,MySQL 每隔一段時間就會在 raid 陣列安裝到之前啟動/home/foo/data/database,因此 MySQL/home/foo/data/database在根驅動器上使用它的 datadir 而不是安裝的 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

您應該能夠編輯 systemd 啟動腳本以包含

After home-foo-data-database.mount

在裡面

$$ Service $$部分。您也可以創建文件

/etc/systemd/system/mysql.service.d/override.conf

在不觸及原始服務文件的情況下添加條件。假設服務被命名mysql

如果您正在編寫自己的啟動腳本,則可以使用其他選項。mountpoint /home/foo/data/database如果文件系統掛載在那裡,將返回 true,否則返回 false。測試掛載點並退出或循環,直到返回 true。

引用自:https://unix.stackexchange.com/questions/699002