как запустить mariaDB при загрузке после подключения внешнего диска - PullRequest
0 голосов
/ 27 марта 2020

Я использую raspberry pi 3 с OSM C в качестве операционной системы вместе с Debian Stretch и nginx и установил вручную mariaDB 10.2, следуя некоторым инструкциям, которые я нашел некоторое время назад.

I изменили datadir для mariadb на / media / USBHDD2 / shared / mysql

Когда я загружаюсь или перезагружаюсь, pi, mariaDB не запускается. Раньше, когда у меня был datadir по умолчанию = / var / lib / mysql, все было хорошо. Если я верну его обратно, это нормально.

Однако, если я войду в консоль, я смогу успешно запустить его с помощью

service mysql start

Обратите внимание, что я использую «сервис», а не « systemctl '- последний не работает. Файлы mariadb.service и mysql .service нигде не существуют.

В /etc/init.d я нахожу два файла: mysql и myswql, которые кажутся идентичными. Если я удалю myswql из каталога, mariadb вообще не запустится. Я попытался отредактировать их, поставив, например, сон 15 в начале, но безрезультатно. Я прочитал всевозможные решения о попытке проверить, смонтирован ли USBHDD2, например, используя

while ! test -f /media/USBHDD2/shared/test.txt
do
  sleep 1
done

, который я пробовал в файлах /etc/init.d/mysql и myswql, а также в r c .local перед вызовом начала mysql. Но это тоже не работает.

Я также переименовал ссылки в r c ?. d на S99 mysql, поэтому он запускается после всего остального, все еще без радости.

I потратил два полных дня на это безрезультатно. Что мне нужно сделать, чтобы заставить это работать так, чтобы mysql запускался при загрузке?

Файловая система имеет формат ntfs

, вывод из ls -la //media/USBHDD2/shared/mysql выглядит следующим образом:

total 176481
drwxrwxrwx 1 root root     4096 Mar 27 11:41 .
drwxrwxrwx 1 root root     4096 Mar 27 13:06 ..
-rwxrwxrwx 1 root root    16384 Mar 27 11:41 aria_log.00000001
-rwxrwxrwx 1 root root       52 Mar 27 11:41 aria_log_control
-rwxrwxrwx 1 root root        0 Nov  3  2016 debian-10.1.flag
-rwxrwxrwx 1 root root    12697 Mar 27 11:41 ib_buffer_pool
-rwxrwxrwx 1 root root 50331648 Mar 27 11:41 ib_logfile0
-rwxrwxrwx 1 root root 50331648 Mar 26 22:02 ib_logfile1
-rwxrwxrwx 1 root root 79691776 Mar 27 11:41 ibdata1
drwxrwxrwx 1 root root    32768 Mar 25 18:37 montegov_admin
-rwxrwxrwx 1 root root        0 Nov  3  2016 multi-master.info
drwxrwxrwx 1 root root    20480 Sep  3  2019 mysql
drwxrwxrwx 1 root root        0 Sep  3  2019 performance_schema
drwxrwxrwx 1 root root    86016 Mar 25 20:06 rentmaxpro_wp187
drwxrwxrwx 1 root root        0 Sep  3  2019 test
drwxrwxrwx 1 root root    32768 Nov  3  2016 trustedhomerenta_admin
drwxrwxrwx 1 root root    32768 Nov  3  2016 trustedhomerenta_demo
drwxrwxrwx 1 root root    40960 Mar 25 21:05 trustedhomerenta_meta
drwxrwxrwx 1 root root    36864 Mar 25 21:25 trustedhomerenta_montego
drwxrwxrwx 1 root root    36864 Mar 26 20:37 trustedhomerenta_testmontego

1 Ответ

0 голосов
/ 28 марта 2020

Проблема в том, что внешний диск настроен как ntfs.

Mysql требует, чтобы файлы и каталог принадлежали mysql: mysql, но поскольку ntfs не имеет той же системы владельцев и групп, что и linux, процесс монтирования linux назначает своего владельца и группу для файловой структуры при монтировании диска. По умолчанию это root: root, поэтому mysql не может их использовать.

ntfs не позволяет CHOWN работать, поэтому нет возможности изменить владельца с root.

Одним из решений является резервное копирование всех файлов, перераспределение как EXT4, а затем восстановление всех файлов.

В конечном итоге я решил указать mysql в качестве владельца и группы на время, когда диск монтируется. Таким образом, мой файл / etc / fstab был изменен на:

ID=C2CA68D9CA68CB6D /media/USBHDD2 ntfs users,exec,uid=mysql,gid=mysql 0 2

и теперь mysql правильно запускается при загрузке.

phew; -)

Спасибо @danblack за заставляет меня думать в правильном направлении

...