MariaDB Daten-Ver­zeich­nis ändern

Ich benut­ze auf einem Rech­ner par­al­lel meh­re­re Linux-Sys­te­me mit gemein­sa­men Nut­zer­da­ten. Die Daten­bank-Datei­en der MariaDB will ich daher nicht auf der Sys­tem-Par­ti­ti­on able­gen, son­dern auf einem von allen Sys­te­men erreich­ba­ren Ort, z.B. auf einem Ver­zeich­nis der /home-Par­ti­ti­on.

Das geht so:

  1. Den alten DB-Ser­ver her­un­ter­fah­ren und Sta­tus prü­fen:
    $ sudo sys­temctl stop mariadb
    $ sudo sys­temctl sta­tus mariadb
  2. Daten­ver­zeich­nis kopie­ren und altes Ver­zeich­nis umbe­nen­nen:
    $ sudo rsync -av /var/lib/mysql /home
    $ sudo mv /var/lib/mysql /var/lib/mysql.bak
  3. In der MariaDB-Kon­fi­gu­ra­ti­ons­da­tei /etc/mysql/mariadb.conf.d/50-server.cnf das Daten­ver­zeich­nis ändern:
    data­dir = /home/mysql
  4. Ser­vice-Kon­fi­gu­ra­ti­on für mariadb-Ser­vice in /usr/lib/systemd/system/mariadb.service ändern, um Daten auf der /home Par­ti­ti­on zu erlau­ben:
    ProtectHome=false
    und sys­temd neu laden:
    $ sudo sys­temctl daemon-reload
  5. DB-Ser­ver wie­der star­ten und prü­fen:
    $ sudo sys­temctl start mariadb
    $ sudo sys­temctl sta­tus mariadb

Schritt 3 bis 5 muss dann auf allen ande­ren betei­lig­ten Sys­te­men wie­der­holt werden.

Wenn Ser­ver mit den von einem ande­ren Sys­tem kopier­ten Daten wegen Rech­te­pro­ble­men nicht star­tet, kann das an unter­schied­li­chen user- und group-IDs der mys­ql-Nut­zer lie­gen. Sie wer­den wäh­rend der mariadb-Instal­la­ti­on neu ange­legt wer­den und haben kei­ne fes­ten IDs. Dann soll­te man prü­fen, ob user- und group-ID des mys­ql-Users mit denen der Daten übereinstimmen:

$ ls -l /home|grep mys­ql
drwxr-xr-x 6
<user-id> <group-id> 4096 Okt 18 12:45 mysql

Falls nicht, müs­sen die User- und Group-IDs ange­passt wer­den (vor­her prü­fen, sie unbe­nutzt sind):

$ sudo group­mod -g <group-id> mys­ql
$ sudo user­mod -g
<group-id> -u <user-id> mysql

Dann den DB-Ser­ver wie­der starten.

Even­tu­el­le DB-Feh­ler fin­den sich im MariaDB log file /var/log/mysql/error.log.

Lau­fen die DB-Ser­ver auf allen Sei­ten, kann das ursprüng­li­che Daten­ver­zeich­nis (/var/lib/mysql.bak) gelöscht werden.

Die Ver­zeich­nis­se bezie­hen sich auf eine Debi­an 10 Instal­la­ti­on und müs­sen evtl. ange­passt werden.


Nach­trag: Beim Update auf Debi­an 10.2 wur­de unge­fragt die MariaDB-Kon­fi­gu­ra­ti­on in /usr/lib/systemd/system/mariadb.service über­schrie­ben. Dadurch star­te­te der Daten­bank-Ser­vice nicht mehr und mel­de­te fol­gen­de Feh­ler im syslog:

Starting MariaDB 10.3.18 database server…
[Note] /usr/sbin/mysqld (mysqld 10.3.18-MariaDB-0+deb10u1) starting as process 14486 …
[Warning] Can't create test file /home/mysql/mysql.lower-test
#007/usr/sbin/mysqld: Can't change dir to '/home/mysql/' (Errcode: 13 "Permission denied")
[ERROR] Aborting

Das Rech­te-Pro­blem im /home-Ver­zeich­nis deu­tet zwar recht ein­deu­tig auf die Pro­tec­tHome-Ein­stel­lung hin, das kom­men­tar­lo­se Über­schrei­ben der Kon­fi­gu­ra­ti­ons­da­tei ist trotz­dem nicht die fei­ne Art.

Nach dem Ändern von 

ProtectHome=true

in /usr/lib/systemd/system/mariadb.service auf

ProtectHome=false

star­tet der DB-Ser­ver jeden­falls wie­der problemlos.

Veröffentlicht am
Kategorisiert in Linux

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

4 × 3 =