Multi-DB System

Sollen zwei separate Systeme innerhalb einer Xentral-Instanz verwendet werden, kann man eine zweite Datenbank in xentral betreiben. Hierzu gibt es die Möglichkeit, zwei Datenbanken für die selbe xentral Installation zu verwenden. In der Login-Maske kann man dann auszuwählen, welche Datenbank angesteuert werden soll. Wichtig: Die beiden Datenbanken einer Xentral-Instanz hängen nicht zusammen. Das heißt, alle Einstellungen, die Sie im Live-System tätigen, müssten Sie auch in der Testdatenbank nachtragen oder alternativ die Datenbank des Live-Systems kopieren und neu als Test-Datenbank hinterlegen. Die Testdatenbank eignet sich nicht für die dauerhafte Verwendung im Livebetrieb. Es gilt darauf zu achten, dass Dateien im userdata-Verzeichnis sowie die Datenbank-Backups der Live-Datenbank nicht überschrieben werden. Der Heartbeat-Cronjob und die Prozessstarter müssen in der Testdatenbank dauerhaft deaktiviert sein. Hinweis: Ein Multi-DB System eignet sich nicht als Testsystem. Für Testzwecke wird unbedingt zu einer eigenen Staging-Instanz geraten.

Datenbank des Live-Systems kopieren

Nach der Installation von Xentral können Sie die Datenbank kopieren. Im Folgenden wird der Kopier-Vorgang über PHPMyAdmin erklärt, wobei Sie auch andere Programme / die Kommandozeile dafür verwenden können. 1. Rufen Sie PHPMyAdmin auf PHPMyAdmin ist meistens vorinstalliert und kann über die Xentral URL + "/phpmyadmin" aufgerufen.
Also z.B. xentral.meinwebsite.com/phpmyadmin.
Dort loggen Sie sich dann mit dem Datenbank-Benutzer und Datenbank-Passwort ein. 2. Datenbank auswählen Klicken Sie die Datenbank in der Sidebar an, die kopiert werden soll. 3. Datenbank kopieren Gehen Sie oben auf "Operationen" und tragen Sie den Datenbanknamen so ein, wie die kopierte Datenbank heißen soll. :entwickler:multidb_phpmyadmin.png Mit einem Klick auf den "OK" Button wird die Datenbank kopiert. Das kann manchmal einige Minuten dauern.

Regelmäßig die Datenbank des Live-Systems kopieren

Wie kann ich regelmäßig und automatisch die Live-Datenbank in die Testdatenbank kopieren? Wenn Sie immer mit "aktuellen" Daten in der Testdatenbank "arbeiten" möchten, bietet es sich an - die Daten 1:1 von der Live-Datenbank in die Testdatenbank zu kopieren. Bitte beachten Sie, dass auf keinen Fall der Prozessstarter in der Testdatenbank aktiviert wird. Dieser wird automatisch deaktiviert nach dem Kopiervorgang der Datenbank, denn sonst könnte es sein das Shop-Aufträge, Emails, etc. in die Testdatenbank eingespielt werden. Die einzelnen Prozessstarter in einer zweiten Datenbank sollten erstmal vorsichtig, nach und nach selektiv aktiviert werden. Für das kopieren der Datenbank wird am besten ein Cronjob eingerichtet, der z.B. einmal Nachts kopiert. Wie Sie so ein Skript erstellen müssten, erfragen Sie am besten bei Ihrem IT Experten bzw. Serveradministrator.

Conf Datei bearbeiten

Ändern des Inhalts der Datei

Anschließend müssen Sie die Datei des "conf" Ordners (zu finden im Hauptordner der Xentral Installation) abändern. :entwickler:multidb_ordner.png Beim Öffnen der Datei geben Sie für die beiden Datenbanken die entsprechende Syntax an - nachfolgend an einem Beispiel erklärt: :entwickler:multi_db_conf_code_neu_2.png?nolink
<?php
  return [
     ['description'=>'Test DB','dbname'=>'xentral_test','cronjob'=>0,'dbhost'=>'xentral.ihrhosterserver.com','dbuser'=>'ihrdubser','dbpass'=>'ihrdbpasswort'],['description'=>'Xentral Produktiv','dbname'=>'xentral_produktiv']
  ];
Wichtig ist hier die mittlere Zeile, die mit Ihren Daten angepasst werden muss.
Der Inhalt zwischen den eckigen Klammern dort steht jeweils für eine Datenbank - die eckigen Klammern werden getrennt von einem Komma.
Bei der Testdatenbank ist es wichtig auch noch die Datenbankverbindung (DB-User, DB-Passwort, DB-Host) sowie 'cronjob'=>0 anzugeben, damit der Cronjob in der Testdatenbank nicht läuft. Bei dem Eintrag für die Produktiv-Datenbank wird dies nicht benötigt - hier reicht description und dbname. Hintergrund weshalb bei der Testdatenbank der Cronjob deaktivert werden sollte ist, da sonst bestimmte Prozesse doppelt ausgeführt/ übertragen werden könnten. Bspw. Emails, Shop-Aufträge abholen/übertragen, Fulfillment Übertragung, Mahnwesen, usw. Daher ist es wichtig, den Prozessstarter für die Testdatenbank global zu deaktivieren.
Code Beschreibung
description Beschreibung für das Dropdown in der Login Maske
dbname Name der jeweiligen Datenbank
cronjob 0 für deaktiviert. Nur wichtig bei der Testdatenbank
dbhost Datenbank-Server (Name oder Adresse)
dbuser Datenbank-Benutzer für die Test-Datenbank
dbpass Datenbank-Passwort für die Test-Datenbank
Hinweis: Es können zusätzlich alle Daten, die Sie auch in der user.inc.php Datei finden, hinterlegt werden. Hinweis zu dbhost: Den dbhost kann man aus der Adresszeile im PHPMyAdmin entnehmen.Beispiel: Aus der Adresszeile [[https://datenbank.meinewebsite.de/phpmyadmin/db_structure.php%%**]] folgt **'dbhost' => 'datenbank.meinewebsite.de'**. Wenn die Datenbank und Xentral auf dem selben physischen Server laufen, kann auch **'dbhost'=>'localhost'** verwendet werden.

Ändern des Namens der Datei

Sobald der Inhalt angepasst wurde und gespeichert, können Sie die Datei von multidb.conf.php.tpl in multidb.conf.php unbenennen (also das .tpl am Schluss weglassen). :entwickler:multidb_file_umbenennen.png

Login Maske

Wenn alles richtig eingestellt ist, bekommen Sie bei der Login Maske ein weiteres Feld um die Datenbank auszuwählen. :entwickler:multidb_login.png

Drucker Anbindung bei mehreren Systemen

Wenn man mit mehreren Datenbanken arbeitet muss man für die Drucker mit CUPS arbeiten, einmal bei den Belegdruckern aber auch bei den Etikettendruckern. Man kann dann den Drucker per Kommandozeilenbefehl auswählen. Etiketten kann man auch auf diese Art und Weise drucken. ​ Bitte beachten Sie, dass die Drucker-Anbidnung mit dem Xentral Spooler bei mehreren Datenbanken/Mandanten nicht zum empfehlen ist. Es müsste dann pro Mandant ein eigener Xentral Spooler laufen, was das System sehr verzögern würde. Mit CUPS hat man hier eine professionelle Lösung, die speziell dafür gemacht ist auch mit vielen Druckaufträgen sehr gut zurechtzukommen. ​

FAQs

War der Artikel hilfreich?
Vielen Dank für Ihr Feedback!