My Odroid-based server is up and running. But the reboot-test showed, that mariadb was started at a time when the database was not yet available. If I login as root and run systemctl start mysqld
, mariadb starts without any failure and everything is fine.
The database is stored on the via USB connected harddisk and I think, that’s the problem.
How can I achive that mysqld starts some seconds later?
Spielmops
Tamsy
November 30, 2018, 7:01am
2
It looks like you are running mariadb under systemd.
Find out the mount name of your USB-drive:
From the console as root type: “systemctl list-units --type=mount”
The above command will list all available mounts of your system.
Let us assume your USB is mounted as “mnt-myusb.mount”
Edit the systemd startup-script. With Debian/Ubuntu you will find it under /lib/systemd/system as mariadb.service or mysql.service
Under the container [Unit] you should see something like:
[Unit]
Description=Mariadb Database Server
After=network.target
[Install]
WantedBy=multi-user.target
Append “mnt-myusb.mount” to “After=network.target” like the following:
[Unit]
Description=Mariadb Database Server
After=network.target mnt-myusb.mount
[Install]
WantedBy=multi-user.target
Save the file and restart the server.
From now on mariadb should get started after the OS has mounted the USB-drive.
1 Like
That is not working …
systemctl list-units type mount:
media-Datenbanken.mount loaded active mounted /media/Datenbanken
Edited startscript:
cat /lib/systemd/system/mariadb.service
After=network.target media-Datenbanken.mount
Output of systemctl status mariadb
after reboot:
Process: 1413 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION (code=exited, status=1/FAILURE)
Process: 1052 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-env
Process: 1004 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Process: 943 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
Main PID: 1413 (code=exited, status=1/FAILURE)
Status: "MariaDB server is down"
Nov 30 11:00:09 Wolke7 systemd[1]: Starting MariaDB 10.1.37 database server...
Nov 30 11:00:10 Wolke7 mysqld[1413]: 2018-11-30 11:00:10 3063255040 [Note] /usr/sbin/mysqld (mysqld 10.1.37-MariaDB-0+deb9u1) starting as process 1413 ...
Nov 30 11:00:10 Wolke7 mysqld[1413]: 2018-11-30 11:00:10 3063255040 [Warning] Can't create test file /media/Datenbanken/ncdatabase/Wolke7.lower-test
And systemctl start mariadb
gives nothing unusual, just an ordinary start …
Spielmops
You probably need to run
systemctl daemon-reload
before the changes to the unit file will be picked up. Then it should work as expected on reboot. If not, see if the answers at https://serverfault.com/questions/700862/do-systemd-unit-files-have-to-be-reloaded-when-modified can help.
Does a reboot not reload?
This worked for me. Thanks Tamsy!