moodle db sichern und update

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
OdoSimi
Beiträge: 135
Registriert: 10.02.2022 22:17:16

moodle db sichern und update

Beitrag von OdoSimi » 19.11.2022 00:48:05

Hallo community,

ich habe einen moodle-server laufen. Er ist zwar noch ziemlich roh, aber ich kann aus (m)einem Netzwerk darauf zugreifen. Nun gibt es eine neuere Version und ich möchte updaten. Zum einen scheinen mir die moodle-dokus hier etwas veraltet und zum anderen möchte ich nicht einfach blind loslegen. Ich möchte schon verstehen was da abläuft. Also eins nach dem anderen.

Nach der Sicherungsdoku finde ich in der config.php von moodle die Pfade zu den entsprechenden Daten. Das Ganze sollte so aussehen:

Code: Alles auswählen

    $CFG->dbname speichert den Namen der Datenbank,
    $CFG->prefix speichert das Präfix im Namen der Datenbank-Tabellen,
    $CFG->dataroot verweist auf das Moodle-Datenverzeichnis,
    $CFG->dirroot verweist auf das Moodle-Verzeichnis.
In meiner config sieht es aber so aus:

Code: Alles auswählen

   
  unset($CFG);
global $CFG;
$CFG = new stdClass();

$CFG->dbtype    = 'mariadb';
$CFG->dblibrary = 'native';
$CFG->dbhost    = 'localhost';
$CFG->dbname    = 'moodledb';
$CFG->dbuser    = 'moodle_user';
$CFG->dbpass    = 'Moodle_Passw0rd!';
$CFG->prefix    = 'mdl_';
$CFG->dboptions = array (
  'dbpersist' => 0,
  'dbport' => 3306,
  'dbsocket' => '/var/run/mysqld/mysqld.sock',
  'dbcollation' => 'utf8mb4_general_ci',
);

$CFG->wwwroot   = 'http://moodle';
$CFG->dataroot  = '/var/www/html/moodledata';
$CFG->admin     = 'admin';

$CFG->directorypermissions = 0777;

require_once(__DIR__ . '/lib/setup.php');

// There is no php closing tag in this file,
// it is intentional because it prevents trailing whitespace problems!
Ich habe also schon mal nicht $CFG->dirroot. Hier mal gleich die erste allgemeine Frage, die Sicherung beschränkt sich auf das kopieren der Verzeichnisse aus den entsprechenden Pfaden, richtig?

Dann gleich weiter im Programm:
Für eine Aktualisierung führen offenbar viele Wege nach Rom... Die "Einfachste" soll wohl die Git-Variante sein (habe ich nach etwas Recherche im Netz so raus lesen können, ich lass mich aber auch gerne belehren). Da die nächste Frage, in der Doku wird explizit auf den branch moodle_22_stable verwiesen, hier müsste ich doch aber eigentlich die aktuellste Version wählen, oder? Der von git erstelle Ordner moodle ist dann aber nur da, um auf den branch zu zeigen den ich ausgewählt habe, habe ich das richtig verstanden? Nun das abschließende Problem mit

Code: Alles auswählen

cd /path/to/your/moodle/
Welcher Pfad muss den angeben werden? Ich habe diese hier zur Auswahl:

Code: Alles auswählen

/var/www/html/moodle
und

Code: Alles auswählen

/var/www/moodle
Vielen Dank schonmal...

Gruß Martin

Benutzeravatar
cosinus
Beiträge: 3410
Registriert: 08.02.2016 13:44:11
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Bremen

Re: moodle db sichern und update

Beitrag von cosinus » 19.11.2022 01:09:10

Den DB-Dump kannst du doch mit der Datenbank selbst machen --> mysqldump
Wohin moodle installiert wurde kannst du ja selber sehen in /var/www - sichere doch einfach das ganze Verzeichnis. Oder ist das irgendwie ein Problem?

uname
Beiträge: 12045
Registriert: 03.06.2008 09:33:02

Re: moodle db sichern und update

Beitrag von uname » 19.11.2022 06:05:41

Für den Mysqldump kannst du dir hier das Beispiel (ist aber für Nextcloud) anschauen.

Benutzeravatar
debilian
Beiträge: 1162
Registriert: 21.05.2004 14:03:04
Wohnort: 192.168.43.7
Kontaktdaten:

Re: moodle db sichern und update

Beitrag von debilian » 19.11.2022 07:42:35

oder du nutzt phpmyadmin für eine Datenbanksicherung...
-- nichts bewegt Sie wie ein GNU --

schwedenmann
Beiträge: 5525
Registriert: 30.12.2004 15:31:07
Wohnort: Wegberg

Re: moodle db sichern und update

Beitrag von schwedenmann » 19.11.2022 10:13:06

Hallo


da ja kein mariadb upgrade machst (also einen major-Versionssprung durchführst), würde ich anstatt mysqldump mariadbbackup nehmen. Ist schneller,vor allem beim Zurückspielen, als mysqldump.

mfg
schwedenmann

OdoSimi
Beiträge: 135
Registriert: 10.02.2022 22:17:16

Re: moodle db sichern und update

Beitrag von OdoSimi » 24.11.2022 23:25:32

Leider bin ich heute erst wieder dazu gekommen mich weiter damit zu beschäftigen. Ich habe mich jetzt für mariadb-backup entschieden und bin nach dieser Doku vorgegangen. Ich bekomm jetzt folgende Ausgabe:

Code: Alles auswählen

[00] 2022-11-24 23:21:56 Connecting to MySQL server host: localhost, user: moodle_user, password: set, port: not set, socket: /run/mysqld/mysqld.sock
[00] 2022-11-24 23:21:56 Using server version 10.5.15-MariaDB-0+deb11u1
[00] 2022-11-24 23:21:56 Error: missing required privilege RELOAD on *.*
[00] 2022-11-24 23:21:56 Error: missing required privilege PROCESS on *.*
[00] 2022-11-24 23:21:56 Current privileges, as reported by 'SHOW GRANTS': 
[00] 2022-11-24 23:21:56   1.GRANT USAGE ON *.* TO `moodle_user`@`localhost` IDENTIFIED BY PASSWORD '*07E326FA20241879DE8C9A5F41859C9D4067CE9A'
[00] 2022-11-24 23:21:56   2.GRANT ALL PRIVILEGES ON `moodledb`.* TO `moodle_user`@`localhost`
Offensichtlich gibt es hier Probleme mit den Zugriffsrechten? Könnt ihr mir hier weiterhelfen?

schwedenmann
Beiträge: 5525
Registriert: 30.12.2004 15:31:07
Wohnort: Wegberg

Re: moodle db sichern und update

Beitrag von schwedenmann » 25.11.2022 08:31:35

Hallo

Offensichtlich gibt es hier Probleme mit den Zugriffsrechten? Könnt ihr mir hier weiterhelfen?

1. dem user moodle zum superuser amchen, also
GRANT ALL PRIVILEGES ON *.* TO 'moodle'@'localhost WITH GRANT OPTION;

2. einen neuen user anlegen und dem Superuserrechte geben und dann mariabackup mit diesem superuser ausführen.

bei mir klappt mariadb mit einem user als superuser und außerdem rufe ich mariadbbackup nach su - auf, also root werden im Terminal und dann mariadbbackup mit dem superuser starten. .~my.cnf funktioniert mit mariadbbackup nicht! Du mußt also user + PW in der Aufrufzeile von mariabackup haben.

mfg
schwedenmann

OdoSimi
Beiträge: 135
Registriert: 10.02.2022 22:17:16

Re: moodle db sichern und update

Beitrag von OdoSimi » 03.12.2022 19:07:54

schwedenmann hat geschrieben: ↑ zum Beitrag ↑
25.11.2022 08:31:35
Hallo

Offensichtlich gibt es hier Probleme mit den Zugriffsrechten? Könnt ihr mir hier weiterhelfen?

1. dem user moodle zum superuser amchen, also
GRANT ALL PRIVILEGES ON *.* TO 'moodle'@'localhost WITH GRANT OPTION;

2. einen neuen user anlegen und dem Superuserrechte geben und dann mariabackup mit diesem superuser ausführen.

bei mir klappt mariadb mit einem user als superuser und außerdem rufe ich mariadbbackup nach su - auf, also root werden im Terminal und dann mariadbbackup mit dem superuser starten. .~my.cnf funktioniert mit mariadbbackup nicht! Du mußt also user + PW in der Aufrufzeile von mariabackup haben.

mfg
schwedenmann
Ich brauche wohl doch etwas mehr Hilfe. Ich wollte die Rechte vergeben wie von dir Beschrieben.
Also zuerst (als root):

Code: Alles auswählen

mysql -u root -p
dann:

Code: Alles auswählen

GRANT ALL PRIVILEGES ON *.* TO 'moodle_user'@'localhost WITH GRANT OPTION;
Dann ändert sich die Anzeige von:

Code: Alles auswählen

MariaDB [(none)]>
zu: Was muss ich dann machen?! Ich hatte diese Doku zu hilfe genommen, hier steht aber auch nichts weiter drin.

Benutzeravatar
debilian
Beiträge: 1162
Registriert: 21.05.2004 14:03:04
Wohnort: 192.168.43.7
Kontaktdaten:

Re: moodle db sichern und update

Beitrag von debilian » 03.12.2022 19:12:38

normal nach dem Grant noch ein

Code: Alles auswählen

flush privileges;
wobei ich mir nicht sicher bin, da du keine DB auswählst
MariaDB [(none)]>
ich würde wahrscheinlich um Benutzerrechte in mysql zu ändern die Datenbank "mysql" wählen, mit

Code: Alles auswählen

use mysql;
allerdings vor dem

Code: Alles auswählen

grant
Befehl

so wie du das machst geht wahrscheinlich auch aber dann hat der moodle Benutzer Rechte auf alles in mysql...
wäre nicht mein Weg...
Zuletzt geändert von debilian am 03.12.2022 19:17:42, insgesamt 2-mal geändert.
-- nichts bewegt Sie wie ein GNU --

OdoSimi
Beiträge: 135
Registriert: 10.02.2022 22:17:16

Re: moodle db sichern und update

Beitrag von OdoSimi » 03.12.2022 19:17:20

Auch wenn ich zuerst die Datenbank wähle ändert sich die Darstellung auf:
Hab ich noch etwas wichtiges vergessen? Also auch nach dem flush bleibt die Darstellung so.

Benutzeravatar
debilian
Beiträge: 1162
Registriert: 21.05.2004 14:03:04
Wohnort: 192.168.43.7
Kontaktdaten:

Re: moodle db sichern und update

Beitrag von debilian » 03.12.2022 19:18:13

Solltest du mal die Rechte deiner Benutzer anzeigen lassen wollen, kannst du diesen Befehl benutzen.

SHOW GRANTS FOR 'benutzer'@'localhost';
guck halt, was moodle darf....
-- nichts bewegt Sie wie ein GNU --

OdoSimi
Beiträge: 135
Registriert: 10.02.2022 22:17:16

Re: moodle db sichern und update

Beitrag von OdoSimi » 03.12.2022 19:25:31

Code: Alles auswählen

| GRANT USAGE ON *.* TO `moodle_user`@`localhost` IDENTIFIED BY PASSWORD '[...]' |
| GRANT ALL PRIVILEGES ON `moodledb`.* TO `moodle_user`@`localhost`
Das sagt mir dann was?

Benutzeravatar
debilian
Beiträge: 1162
Registriert: 21.05.2004 14:03:04
Wohnort: 192.168.43.7
Kontaktdaten:

Re: moodle db sichern und update

Beitrag von debilian » 03.12.2022 19:29:47

sieht doch gut aus...
-- nichts bewegt Sie wie ein GNU --

OdoSimi
Beiträge: 135
Registriert: 10.02.2022 22:17:16

Re: moodle db sichern und update

Beitrag von OdoSimi » 03.12.2022 19:33:35

:D

Das ist schön und was genau sieht gut aus? :D

Ich weiß auch immer noch nicht was mir '> sagt. Ich würde gerne verstehen was hier vor sich geht. :D

OdoSimi
Beiträge: 135
Registriert: 10.02.2022 22:17:16

Re: moodle db sichern und update

Beitrag von OdoSimi » 03.12.2022 20:18:05

Für das Backup nach der MariaDB-Doku ist das ganze ja erledigt mit:

Code: Alles auswählen

$ mariabackup --backup \
   --target-dir=/var/mariadb/backup/ \
   --user=mariabackup --password=mypassword
Hier kommt dann also:
2. einen neuen user anlegen und dem Superuserrechte geben und dann mariabackup mit diesem superuser ausführen.
zum tragen, der neue User wäre dann mariabackup, den ich aber erst erstellen muss, richtig?

Und dem muss ich dann, nach dem Vorgehen von oben, wieder alle Rechte geben.

schwedenmann
Beiträge: 5525
Registriert: 30.12.2004 15:31:07
Wohnort: Wegberg

Re: moodle db sichern und update

Beitrag von schwedenmann » 03.12.2022 20:33:46

Hallo

zum tragen, der neue User wäre dann mariabackup, den ich aber erst erstellen muss, richtig?

Und dem muss ich dann, nach dem Vorgehen von oben, wieder alle Rechte geben.
ja, wie dieser user heißt ist egal.

mfg
schwedenmann

wie gesagt,bei mir funktioniert das nur,wenn ich den mariabefeahl mit einem supersuer anch su - ausführe.


so sieht da bei mir aus:
#mariabackup --backup --stream=xbstream --user=joerg --password=geheim | gzip > /datenbank/backup/mariadbbackup/mariadb-backup-3-12-2022.gz

user joerg ist superuser in mariadb.

OdoSimi
Beiträge: 135
Registriert: 10.02.2022 22:17:16

Re: moodle db sichern und update

Beitrag von OdoSimi » 03.12.2022 20:37:31

Okay und was macht die --stream= Option? Die ist in der Doku nicht direkt mit aufgeführt.

schwedenmann
Beiträge: 5525
Registriert: 30.12.2004 15:31:07
Wohnort: Wegberg

Re: moodle db sichern und update

Beitrag von schwedenmann » 03.12.2022 20:54:48


OdoSimi
Beiträge: 135
Registriert: 10.02.2022 22:17:16

Re: moodle db sichern und update

Beitrag von OdoSimi » 03.12.2022 21:23:29

Also irgend wo steckt der Wurm drin... hier nochmal meine komplette Vorgehensweise.

Zuerst habe ich die Datenbank 'mysql' ausgewählt.

Code: Alles auswählen

use mysql;
Den User 'moodle_user' hatte ich während der Einrichtung der Installation von moodle bereits erstellt. Ich habe dann über

Code: Alles auswählen

GRANT ALL PRIVILEGES ON *.* TO 'moodle_user'@'localhost WITH GRANT OPTION;
alle Rechte vergeben. Zumindest habe ich es so versucht. Denn das Ergebnis ist, das die command-line auf switched, alle Eingabe die dann folgen haben scheinbar keine Funktion. Ich kann erst neue Eingaben (mit Effekt) tätigen wenn ich den Vorgang (Strg-C) abbreche.

Dann habe ich den neuen User 'backup_su' erstellt.

Code: Alles auswählen

CREATE USER 'backup_su'@'localhost' IDENTIFIED BY 'passwort';
Er wird dann auch in der Userliste aufgeführt, überprüft habe ich das mit:

Code: Alles auswählen

select Host, User  from mysql.user;
Dann wollte ich diesem User auch alle Rechte geben mit:

Code: Alles auswählen

GRANT ALL PRIVILEGES ON *.* TO 'moodle_user'@'localhost WITH GRANT OPTION;
Mit dem Ergebnis..... wenn ich dann (nach der MariaDB-Doku folgendes ausführe:

Code: Alles auswählen

mariabackup --backup    --target-dir=/var/mariadb/backup/    --user=backup_su --password=passwort
Kommt diese Ausgabe:

Code: Alles auswählen

[00] 2022-12-03 20:56:29 Connecting to MySQL server host: localhost, user: backup_su, password: set, port: not set, socket: /run/mysqld/mysqld.sock
[00] 2022-12-03 20:56:29 Using server version 10.5.15-MariaDB-0+deb11u1
[00] 2022-12-03 20:56:29 Error: missing required privilege RELOAD on *.*
[00] 2022-12-03 20:56:29 Error: missing required privilege PROCESS on *.*
[00] 2022-12-03 20:56:29 Current privileges, as reported by 'SHOW GRANTS': 
[00] 2022-12-03 20:56:29   1.GRANT USAGE ON *.* TO `backup_su`@`localhost` IDENTIFIED BY PASSWORD '*E6CDF1D67095BD937DC683579EA065DC007F39AE'
Also hat ja irgend etwas mit der Rechtevergabe nicht funktioniert.

Was übersehe ich denn hier? Und welche Rechte würden denn dem 'moodle_user' ausreichen? Weil ja die Anmerkung kam:
so wie du das machst geht wahrscheinlich auch aber dann hat der moodle Benutzer Rechte auf alles in mysql...
wäre nicht mein Weg...
Edit:

Code: Alles auswählen

FLUSH PRIVILEGES;
Habe ich auch ausgeführt.

Benutzeravatar
debilian
Beiträge: 1162
Registriert: 21.05.2004 14:03:04
Wohnort: 192.168.43.7
Kontaktdaten:

Re: moodle db sichern und update

Beitrag von debilian » 03.12.2022 23:03:12

falsch:

Code: Alles auswählen

GRANT ALL PRIVILEGES ON *.* TO 'moodle_user'@'localhost WITH GRANT OPTION;
richtig:

Code: Alles auswählen

GRANT ALL PRIVILEGES ON *.* TO 'moodle_user'@'localhost' WITH GRANT OPTION;
hinter dem localhost fehlt ein '
darum der Hinweis von mysql:
-- nichts bewegt Sie wie ein GNU --

OdoSimi
Beiträge: 135
Registriert: 10.02.2022 22:17:16

Re: moodle db sichern und update

Beitrag von OdoSimi » 03.12.2022 23:43:59

Oh je... das war es tatsächlich...

Jetzt hab ich zumindest einen neuen Fehler.

Code: Alles auswählen

[00] 2022-12-03 23:33:46 uses posix_fadvise().
[00] 2022-12-03 23:33:46 cd to /var/lib/mysql/
[00] 2022-12-03 23:33:46 open files limit requested 0, set to 1024
[00] 2022-12-03 23:33:46 mariabackup: using the following InnoDB configuration:
[00] 2022-12-03 23:33:46 innodb_data_home_dir = 
[00] 2022-12-03 23:33:46 innodb_data_file_path = ibdata1:12M:autoextend
[00] 2022-12-03 23:33:46 innodb_log_group_home_dir = ./
[00] 2022-12-03 23:33:46 InnoDB: Using Linux native AIO
2022-12-03 23:33:46 0 [Note] InnoDB: Number of pools: 1
[00] 2022-12-03 23:33:46 Error: cannot mkdir 2: /var/mariadb/backup/
Laut Doku, muss das Verzeichnis leer sein oder noch nicht vorhanden. Da es noch nicht vorhanden ist, nehme ich an, MariaDB hat nicht die Rechte ein Verzeichnis zu erstellen. Wie würde denn das command hierfür aussehen?

Benutzeravatar
cosinus
Beiträge: 3410
Registriert: 08.02.2016 13:44:11
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Bremen

Re: moodle db sichern und update

Beitrag von cosinus » 04.12.2022 01:18:15

Man sichert ja auch keine DB-Dateien während diese exklusiv geöffnet sind. Das kannst du aber tun, wenn man den DB-Dienst vorher runterfährt zB mit systemctl. Oder man benutzt mysqldump.

Benutzeravatar
heisenberg
Beiträge: 3473
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: moodle db sichern und update

Beitrag von heisenberg » 04.12.2022 06:13:02

cosinus hat geschrieben: ↑ zum Beitrag ↑
04.12.2022 01:18:15
Man sichert ja auch keine DB-Dateien während diese exklusiv geöffnet sind. Das kannst du aber tun, wenn man den DB-Dienst vorher runterfährt zB mit systemctl. Oder man benutzt mysqldump.
Das ist nicht richtig. maria-backup ist ein physisches online-db backup. Das kann man ausführen während mariadb läuft. Das ist ja gerade der Sinn von maria-backup. Nur für einen restore von einem physischen Backup muss mariadb heruntergefahren sein.
[00] 2022-12-03 23:33:46 Error: cannot mkdir 2: /var/mariadb/backup/
Der ausführende System-Benutzer darf das Verzeichnis nicht erstellen, weil er in dem übergeordneten Verzeichnis keine Rechte hat. Dann gib sie dem Benutzer halt. Siehe chmod, chown und ggf. setfacl
schwedenmann hat geschrieben: ↑ zum Beitrag ↑
19.11.2022 10:13:06
da ja kein mariadb upgrade machst (also einen major-Versionssprung durchführst), würde ich anstatt mysqldump mariadbbackup nehmen. Ist schneller,vor allem beim Zurückspielen, als mysqldump.
Ich selbst bevorzuge mysqldump grundsätzlich wegen der Kompatibilität und maria-backup nur in Ausnahmefällen. Das kann man überall einspielen wegen der höheren Kompatibilität. Das Geschwindigkeitsargument zieht für mich imho nur bei eher großen DBs. Da haben physische hot-backups klar Ihre Berechtigung.
... unterhält sich hier gelegentlich mangels wunschgemäßer Gesprächspartner mal mit sich selbst.

Benutzeravatar
cosinus
Beiträge: 3410
Registriert: 08.02.2016 13:44:11
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Bremen

Re: moodle db sichern und update

Beitrag von cosinus » 04.12.2022 16:43:16

heisenberg hat geschrieben: ↑ zum Beitrag ↑
04.12.2022 06:13:02
Das ist nicht richtig. maria-backup ist ein physisches online-db backup. Das kann man ausführen während mariadb läuft. Das ist ja gerade der Sinn von maria-backup. Nur für einen restore von einem physischen Backup muss mariadb heruntergefahren sein.
Ja, aber man sichert doch nicht direkt die Dateien während die DB läuft. Dafür gibt es doch grade sowas wie einen Dump, der einen Export macht.

schwedenmann
Beiträge: 5525
Registriert: 30.12.2004 15:31:07
Wohnort: Wegberg

Re: moodle db sichern und update

Beitrag von schwedenmann » 04.12.2022 16:53:24

Hallo

@Cosinus
aber man sichert doch nicht direkt die Dateien während die DB läuft. Dafür gibt es doch grade sowas wie einen Dump, der einen Export macht.
das macht bei einem privaten dbms ev. Sinn, aber

1. für kommerzielle Systeme (Versicherungen, etc, pp) wäre der restore per dump viel zu lange
2. Ein Stop der DB bei solchen Firmen wie Versicherungen etc. ist keine Option, die könnten während desd dumps des Laden dichtmachen.

Mariabackup, oder für postgreesql pgbackrest sind da die besseren Optionen,als ein dump. Da zumindest bei pgbackrest die wal gespeichert werden,ist die Db auch nicht inkonsistent,obwohl sie weiterläuft.

mfg
schwedenmann

Antworten