Datenbankkonfiguration

Aus NComputing Knowledge Base
Wechseln zu: Navigation, Suche

NoTouch Center speichert seine Daten in einer SQL-Datenbank. Die primäre Datenbank ist MySQL, aber wir unterstützen auch Oracle und Microsoft SQL Server. Die NComputing Virtual Appliance wird mit MySQL ausgeliefert, Sie müssen sich also nicht darum kümmern.

Wenn Sie eine externe Datenbank verwenden möchten, sei es eine andere MySQL, die Sie irgendwo installiert haben, oder eine vorhandene Instanz von Oracle oder Microsoft SQL Server, sind die folgenden Informationen für Sie wichtig. Bitte beachten Sie auch, dass wir Ihre eigene externe Datenbank nicht unterstützen können. Wenn Sie sich beispielsweise für Oracle entschieden haben, müssen Sie über alle erforderlichen Kenntnisse und Zeit verfügen, um mit Oracle zu arbeiten!

Konfigurationseigenschaften

Eine NoTouch Center-Instanz muss wissen, wo sich ihre Datenbank befindet und wie sie sich verbindet. Es ist nur eine Datenbank konfigurierbar.

NoTouch Center wird über Konfigurationseigenschaften konfiguriert. Dies sind die relevanten Eigenschaften in der Datei tcmgr.properties:

  • lmc.dbhost DNS-Hostname oder IP-Adresse des Datenbankservers. Standardwert: localhost
  • lmc.dbname Name der Datenbank, die auf dem Datenbankserver verwendet wird. Standardwert: easyadmin
  • lmc.dbuser Benutzername, der für die Verbindung zur Datenbank verwendet wird. Standardwert: easyadmin
  • lmc.dbpass Passwort des Datenbankbenutzers. Standardwert: easyadmin
  • lmc.dbtype Ein Zeichenfolgenwert, der den Typ der verwendeten Datenbank angibt. Standardwert: mysql
    • mysql für MySQL
    • jtds für Microsoft SQL Server (bevorzugt)
    • sqljdbc ist ein alternativer Treiber für Microsoft SQL Server, der sich auf den SQL-JDBC-Treiber von Microsoft bezieht (NoTouch 4.2.14 und höher)
    • oracle für Oracle
    • derby für Apache Derby (nicht unterstützt)
    • hsqldb für HSQL (nicht unterstützt)
    • hsqldbmem für HSQL In-Memory (nicht unterstützt - "In-Memory" bedeutet, dass alle Inhalte nach dem Neustart verschwunden sind)
  • lmc.dbport eine optionale TCP-Portnummer, wenn sie für den angegebenen Datenbanktyp nicht Standard ist. Standardwert: empty
  • lmc.dbPool bezieht sich auf den #Verbindungspooling-Mechanismus, kann c3p0, dbcp, dbcp2_basic, dbcp2_pooling sein. Standardwert: empty (bedeutet, dass C3P0 verwendet wird)
  • lmc.dbUrlOptions ermöglicht das Hinzufügen von JDBC-Treiber-spezifischen URL-Optionen. Standardwert: empty

Siehe tcmgr.properties für Informationen, wie Sie auf die properties.file zuzugreifen und NoTouch Center-Konfigurationseigenschaften bearbeiten.

Externe Datenbankoperation

Datenbankvorbereitung

NoTouch Center benötigt eine eigene "Datenbank" (manchmal als Tablespace oder Schema bezeichnet) sowie einen Benutzerkontonamen und ein Kennwort mit allen Rechten in dieser Datenbank, einschließlich der Modifizierung von Tabellendefinitionen. Einige Datenbanken nennen dies "DDL-Administration".

Standardmäßig empfehlen wir den Datenbanknamen "easyadmin", den Benutzernamen "easyadmin" und das Passwort "easyadmin".

MySQL

In MySQL lauten die Befehle zum Erstellen und Vorbereiten einer solchen Datenbank:

 create database easyadmin;
 grant all on easyadmin.* to 'easyadmin'@'localhost' identified by 'easyadmin';

Microsoft SQL Server

Erstellen Sie zuerst in MS SQL Server Studio einen Benutzer namens "easyadmin". Klicken Sie dann mit der rechten Maustaste auf den Eintrag "Databases" in der Baumansicht und wählen Sie "Create Database". Vergeben Sie einen Namen für Ihre Datenbank (wir empfehlen "easyadmin") und stellen Sie sicher, dass der Benutzer "easyadmin" als Eigentümer der Datenbank ausgewählt ist.

Oracle

Informationen zum Erstellen von Benutzern und Tablespaces finden Sie in der Oracle-Dokumentation. Wenn Sie Oracle XE verwenden, wird der Datenbankname für "XE" fest codiert.

Ersteinrichtung

Wenn NoTouch das erste Mal mit einer leeren Datenbank verbindet, erstellt es alle Datenbanktabellen und füllt die für den Betrieb notwendigen Werte aus. Achten Sie genau auf die Protokollausgabe (center.log oder Console, wenn im Vordergrund gestartet wird). NoTouch Center wird klare und aussagekräftige Fehlermeldungen in das Protokoll schreiben, wenn es keine Verbindung herstellen kann. Es gibt Konfigurations- oder Datenbankfehler.

Deaktivieren des integrierten MySQL

Die NComputing Virtual Appliance wird mit MySQL ausgeliefert. Wenn Sie eine externe Datenbank verwenden, können Sie MySQL deaktivieren.

NComputing Virtual Appliance

  1. Melden Sie sich über Secure Shell bei der Virtual Appliance an und erhalten Sie Root-Rechte wie beschrieben
  2. Stoppen Sie die MySQL-Dienste, indem Sie diesen Befehl ausführen:
    • stop mysql
  3. Stellen Sie sicher, dass MySQL deaktiviert bleibt:
    • echo "manual" >> /etc/init/mysql.override

Datenbankmigration

Manchmal muss eine Datenbank auf einen neuen Server verschoben werden, aus welchen Gründen auch immer. In diesem Fall müssen Sie das NoTouch Center über die Änderung informieren, damit es sich mit seiner Datenbank verbinden und diese nutzen kann.

Wenn Sie Ihre komplette NoTouch Center-Installation (d.h. nicht nur die Datenbank) migrieren möchten, gibt es einfach zu bedienende Migrationspfade:

Beachten Sie, dass sich dieser Abschnitt nur mit der Migration der Datenbank befasst. Bitte verwenden Sie für den Import und Export immer Ihr Datenbankserver-Tool. Wenn Sie beispielsweise die NoTouch Center-Datenbank von einem älteren MS SQL-Server auf eine neuere Version auf einem anderen Server verschieben, exportieren Sie sie mit den Microsoft SQL Server-Tools ordnungsgemäß auf die alte und importieren Sie sie auf die neue. Stellen Sie sicher, dass Benutzerkonto, Passwort und Berechtigungen auch auf dem neuen System intakt sind.

NoTouch Center unterstützt offiziell keine Cross-Migration von einer seiner unterstützten Datenbanken zu einer anderen, obwohl die nicht unterstützten NoTouch Center XML-Tools in vielen Fällen gut funktionieren. Es gibt keine Garantie dafür, dass dies funktioniert, und selbst wenn etwas gut zu funktionieren scheint, können später Probleme auftreten.

Um Ihre Datenbank zu migrieren, gehen Sie wie folgt vor:

  1. Stoppen Sie das NoTouch Center.
  2. Migrieren Sie Ihre Datenbank auf den neuen Server unter Berücksichtigung aller Informationen auf dieser Seite.
  3. Bearbeiten der Datenbank-Konfigurationswerte von tcmgr.properties (siehe oben)
  4. Starten Sie NoTouch Center

MySQL Sicherung und Wiederherstellung

Für jede MySQL-Installation, sei es die, die von der NComputing Virtual Appliance oder einer benutzerdefinierten/dritten Installation erstellt wurde, können Sie problemlos Datenbankinhalte ein- und auslagern.

Um eine MySQL-Datenbank in eine Datei zu sichern, rufen Sie Folgendes auf:

 mysqldump -u easyadmin -p easyadmin >mydatabase.sql

Um eine MySQL-Datenbankdatei zu lesen und Inhalte in der Datenbank zu speichern, führen Sie Folgendes aus:

 mysql -u easyadmin -p easyadmin <mydatabase.sql

Der letztgenannte Befehl impliziert, dass die Datenbank korrekt vorbereitet wurde und das Benutzerkonto erstellt und Berechtigungen erteilt wurden (siehe oben).

Hinweis: Ihre MySQL-Binärdateien befinden sich möglicherweise nicht im Standard-Pfad, d.h. Ihre Befehlszeile findet ihn möglicherweise nicht. Wenn Sie MySQL verwenden, das vom NoTouch Center Windows Installer installiert wird, müssen Sie manuell den vollständigen Pfad zum Unterverzeichnis mysql\bin\ des Installationsordners verwenden. Das bedeutet, dass der vollständige Pfad der Tools mysqldump.exe und mysql.exe höchstwahrscheinlich so ähnlich ist wie folgt:

 C:\Program Files\NComputing\NoTouch Center\mysql\bin\

NoTouch Center XML-Datenbankdateien

Das NoTouch Center-Datenbank-XML-Dateiformat ist ein proprietäres XML-basiertes Dateiformat, das alle Tabellen, Zeilen und Spalten einer NoTouch Center-Datenbank in XML enthält; mit dem Ziel, aus verschiedenen Datenbanktypen zu exportieren und in diese zu importieren. Eine fehlerfreie Wiederherstellung einer solchen Datei kann nicht garantiert werden, daher sind sie kein Ersatz für Sicherungen der zugrunde liegenden Datenbank!

Die Kommandozeilenwerkzeuge "dbimport" und "dbexport" befinden sich im Installationsverzeichnis von NoTouch Center.

Auf Windows-Systemen ist dies

 C:\Program Files\NComputing\NoTouch Center\lmc

Auf einer NComputing Virtual Appliance ist dies

 /opt/center

Exportieren der Datenbank in eine NoTouch Center XML-Datei

Der Befehl dbexport ist als dbexport.cmd für Windows-Systeme und dbexport.sh für Linux-Systeme verfügbar. Der einfache Aufruf erzeugt eine XML-Datei - überprüfen Sie die Konsolenausgabe auf den Dateinamen oder geben Sie Ihren eigenen gewünschten Dateinamen mit dem Parameter -f an. Standardmäßig liest das Tool die Datenbankinformationen aus der Datei etc/tcmgr.properties aus. Sie können mit dem Schalter -c eine andere Properties-Datei angeben oder Datenbankparameter über die Befehlszeile hinzufügen. Wir empfehlen, das Tool erst nach dem Stoppen von NoTouch Center auszuführen.

Optionen:

     -x | --help       ... diese Hilfe drucken
     -f | --file       ... Datendatei (zip oder xml) für den Export (MANDATORY)
     -c | --config     ... Konfigurationseigenschaften-Datei
     -h | --dbhost     ... Datenbank-Host (überschreibt die Einstellung der Konfigurationsdatei)
     -u | --dbuser     ... Datenbankbenutzer (überschreibt die Einstellung der Konfigurationsdatei)
      p | --dbpassword ... Datenbank-Passwort (überschreibt die Einstellung der Konfigurationsdatei)
     -t | --dbtype     ... Datenbank-Typ wie mysql, oracle, jtds (überschreibt die Einstellung der Konfigurationsdatei)
     -d | --dbname     ... Datenbankname (überschreibt die Einstellung der Konfigurationsdatei)
     -e | --dbport     ... Datenbank TCP/IP Port (überschreibt die Einstellung der Konfigurationsdatei)

Importieren der Datenbank aus einer NoTouch Center XML-Datei

Der Befehl dbimport ist als dbimport.cmd für Windows-Systeme und dbimport.sh für Linux-Systeme verfügbar. Der Parameter -f gefolgt von der zu importierenden Datei ist obligatorisch. Standardmäßig liest das Tool die Datenbankinformationen aus der Datei etc/tcmgr.properties aus. Sie können mit dem Schalter -c eine andere Properties-Datei angeben oder Datenbankparameter über die Befehlszeile hinzufügen.

dbimport funktioniert am besten, wenn es in einer neuen Datenbank verwendet wird, ohne dass etwas darin enthalten ist. Lesen Sie die Anweisungen zur Vorbereitung einer Datenbank. Wenn NoTouch Center nur einmal ausgeführt wurde, hat es bereits seine Tabellenstruktur und Datenbankbeschränkungen erstellt. Dies bedeutet, dass NoTouch Center während des Dbimport-Betriebs nicht laufen darf!

     -x | --help       ... diese Hilfe drucken
     -f | --file       ... Datendatei (zip oder xml) für den Import (MANDATORY)
     -c | --config     ... Konfigurationseigenschaften-Datei
          --onlyimportant ... nur Pflichttabellen, ohne peripheren Bestand und Protokoll.
          --nodelete   ... keine Datenbankinhalte vor dem Import löschen.
          --noinstall  ... keine Tabellen installieren 
          --nocleanup  ... nicht bereinigen d.h. Datensätze mit fehlenden Fremdschlüsseln löschen
     -r | --resetpw    ... Administrator-Passwort auf Standard zurücksetzen
     -h | --dbhost     ... Datenbank-Host (überschreibt die Einstellung der Konfigurationsdatei)
     -u | --dbuser     ... Datenbankbenutzer (überschreibt die Einstellung der Konfigurationsdatei)
     -p | --dbpassword ... Datenbank-Passwort (überschreibt die Einstellung der Konfigurationsdatei)
     -t | --dbtype     ... Datenbank-Typ wie mysql, oracle, jtds (überschreibt die Einstellung der Konfigurationsdatei)
     -d | --dbname     ... Datenbankname (überschreibt die Einstellung der Konfigurationsdatei)
     -e | --dbport     ... Datenbank TCP/IP Port (überschreibt die Einstellung der Konfigurationsdatei)
     -m | --Maxrows X  ... importieren von maximal X Zeilen pro Tabelle (Debugging Option)
          --droponly   ... alles in der Datenbank löschen und beenden (kein Import erfolgt) GEFÄHRLICH
          --noautoinstall ... kein autoinstall (d.h. die neuen Parameterdefinitionen)

NoTouch Center XML-Datenbank-Dateiformat für XML-Datenbanken

Es gibt keine vollständige Dokumentation des XML-Dateiformats. Das folgende Beispiel ist gegeben, damit Systemadministratoren den Dateityp überprüfen können.

<?xml version="1.0" encoding="utf-8"?>
<LMCDATA ExportFormat="2">
       <METADATA>
               <About>This is an export of a NComputing database. The content of this file is proprietary and confidential.</About>
               <CreationDate TimeSource="Instance-Server">2015-06-15 01:40:56 +0000</CreationDate>
               <CreatorTablePrefix></CreatorTablePrefix>
               <ProductMetaData>
                       <Product>NoTouch Center</Product>
                       <ProductShortName>NTC</ProductShortName>
                       <Release>4.1.389</Release>
                       <Vendor>NComputing</Vendor>
                    [...]
               </ProductMetaData>
               <DatabaseMetaData>
                       <DatabaseProductName>MySQL</DatabaseProductName>
                       <DatabaseProductVersion>5.5.43-0ubuntu0.14.04.1</DatabaseProductVersion>
                       <DatabaseMajorVersion>5</DatabaseMajorVersion>
                       <DatabaseMinorVersion>5</DatabaseMinorVersion>
                       <URL>jdbc:mysql://localhost:3306/easyadmin</URL>
                    [...]
               </DatabaseMetaData>
              [...]
       </METADATA>
       <TABLES>
            [...]
       </TABLES>
           [...]
</LMCDATA>

Verbindungspooling

NoTouch Center beschäftigt sich nicht direkt mit der Datenbank, sondern verwendet ein Zwischenmodul, das "Connection Pooling" ermöglicht. Der Grund dafür ist, dass das Öffnen von Verbindungen zu einer Datenbank ein relativ teurer Vorgang ist. Auf diese Weise wird ein Pool von bestehenden Verbindungen gebildet, und wann immer eine Transaktion stattfindet, erfolgt dies über eine der bestehenden Verbindungen. NoTouch unterstützt verschiedene Verbindungspooling-Mechanismen, die über die lmc.dbPool-Eigenschaft konfiguriert werden. Weitere Informationen zu diesen Eigenschaften finden Sie oben: #Konfigurationseigenschaften. Die Werte in Klammern sind die Konfigurationseinstellungen von lmc.dbPool:

  • C3P0 (c3p0). C3P0 [1] ist der Standard-Verbindungspooling-Mechanismus, den NoTouch Center verwendet.
  • DBCP (dbcp). Apache DBCP 1 [2] ist veraltet und funktioniert nicht wirklich gut. Wir können dies nicht empfehlen.
  • DBCP2 Basic (dbcp2_basic). Apache DBCP2 [3] ist eine Neuschreibung von DBCP und unterscheidet sich stark von DBCP.
  • DBCP2 Pooling (dbcp2_pooling). Dies ist der eigentliche Pooling-Mechanismus des Apache DBCP2. Verwenden Sie dies, wenn Sie Probleme haben, von denen Sie glauben, dass sie von C3P0 stammen.

C3P0-Konfiguration

Unter tcmgr.properties finden Sie Informationen darüber, wie Sie auf die properties.file zugreifen und die NoTouch Center-Konfigurationseigenschaften bearbeiten können. Die C3P0-Eigenschaften beginnen mit dem Präfix lmc.c3p0 - Sie können jede C3P0-Eigenschaft übergeben, nicht nur die hier genannten!

Verbindungstest

Beim Verbindungstest stellt der Pool sicher, dass die Verbindungen noch aktiv sind, bevor sie an die Anwendung übergeben werden. Warum würden Verbindungen auslaufen? Das liegt außerhalb unserer und möglicherweise Ihrer Kontrolle - Firewalls, Server- und Datenbankeinstellungen können zu einem Verbindungsabbruch führen. Auf der C3P0-Homepage finden Sie weitere Informationen zu Verbindungstests und den hierin verwendeten Kompromissen [4].

  • lmc.c3p0.idleConnectionTestPeriod= Standard: 30
  • lmc.c3p0.testConnectionOnCheckin= Standard: true
  • lmc.c3p0.testConnectionOnCheckout= Standard: false

Nicht zurückgegebene Verbindungen

NoTouch Center wurde sorgfältig entwickelt, um nach Abschluss einer Transaktion Verbindungen zum Pool herzustellen. Aufgrund der Vielzahl von Datenbanktypen können wir jedoch nicht sicher sein, dass z.B. Deadlocks auftreten. Wenn Sie Probleme haben, verwenden Sie bitte diese Optionen, um das Problem wie hier beschrieben zu beheben [5].

  • lmc.c3p0.debugUnretedConnectionStackTraces= Standard: false.
  • lmc.c3p0.unreturnedConnectionTimeout= Standard: 0

In einem Debugging-Szenario würde man debugUnurnedConnectionStackTraces auf true setzen und dem unreturnedConnectionTimeout einen sinnvollen Timeout von 60 Sekunden zuweisen. Weisen Sie KEINEN sehr kurzen Timeout zu (allesunter 30 Sekunden) - dies würde legitime Transaktionen abschneiden und den NoTouch Center-Betrieb lähmen!

Wenn Sie dies verwenden, behalten Sie bitte die Bedienung des NoTouch Centers im Auge, lesen Sie die Protokolldateien regelmäßig (verlassen Sie sich nicht auf die Web-GUI-Protokollansicht) und seien Sie bereit, diese beiden Optionen auf den Standardwert zurückzusetzen.