Datenbank auf MySQL umstellen und im Netzwerk verfügbar machen.

  • Vorteil: Performancegewinn, nur noch eine Datenbank für alle XBMCs im Netzwerk.
    Voraussetzungen: SVN Version r28117, shell Zugriff.
    WICHTIG: Ab XBMC 11 Eden legt XBMC die Datenbank unter MySQL selbst an. Wenn diese bereits manuell angelegt wurde führt dies zu Fehlern.

    1. Installation des MySQL-Servers (und eines Texteditors):

    Code
    $ sudo aptitude update
    $ sudo aptitude install mysql-server nano


    2. Einrichten der MySQL-Datenbank über das MySQL-Frontend in der shell:
    Erstellen der Datenbank (xbmc_video) und des Benutzers (USER) mit Passwort (PASSWORD).
    Starten des MySQL-Frontends:

    Code
    $ mysql -u root -p


    (Das MySQL-root Passwort wurde zuvor bei der Installation festgelegt.)

    SQL
    mysql> CREATE DATABASE xbmc_video;
    mysql> GRANT ALL on xbmc_video.* TO 'USER'@'localhost' IDENTIFIED BY 'PASSWORD';
    mysql> GRANT ALL on xbmc_video.* TO 'USER'@'%' IDENTIFIED BY 'PASSWORD';
    mysql> FLUSH PRIVILEGES;
    mysql> exit;


    Die 3. Zeile im MySQL-Frontend erlaubt den Netzwerkzugriff (benötigt auch die erste Zeile), dieser kann statt vom gesamten Netzwerk '%', auch auf eine IP (-Range) eingeschränkt werden.
    (Die 3. Zeile kann ganz weggelassen werden, wenn kein Netzwerkzugriff benötigt wird.)

    3. Anpassung der XBMC Konfiguration in der .xbmc/userdata/[definition='2','1']advancedsettings[/definition].xml: http://wiki.xbmc.org/index.php?titl…ideodatabase.3E mit:

    Code
    $ nano ~/.xbmc/userdata/[definition='2','1']advancedsettings[/definition].xml

    Soll ein XBMC über das Netzwerk auf die Datenbank zugreifen, muss IP/Name des MySQL-Server-Rechners, z.B.

    XML
    <host>192.168.2.3</host>

    eingetragen und der MySQL-Server konfiguriert werden (siehe 4.)
    Damit Thumbnails usw. auch auf dem Client xbmc richtig dargestellt werden, muss der Thumbnail Ordner aus dem Userdata synchronisiert werden:
    (oder der Ordner per Netzwerkdateisystem eingebunden werden)

    Code
    $ rsync 192.168.2.3:.xbmc/userdata/Thumbnails/ ~/.xbmc/userdata/. -rav

    4. Anpassung der MySQL-Server Konfiguration in der Datei /etc/mysql/my.cnf:

    Code
    $ sudo nano /etc/mysql/my.cnf


    Um Netzwerkzugriff zu ermöglichen muss in der Zeile:

    Code
    bind-address   127.0.0.1


    die IP des MySQL-Server-Rechners eintragen werden, z.B:

    Code
    bind-address   192.168.2.3


    Zur Performancesteigerung kann zusätzlich die Option 'skip-name-resolve' in der Sektion [mysqld] hinzugefügt werden. (dann aber nur noch mit IP-Adressen arbeiten!)

    4.2 Aktivieren des MySQL-Querycache.
    Einen echten Geschwindigkeitszuwachs bringt die Aktivierung des "MySQL-Anfragen-Cache", dort werden Anfragen und deren Ergebnisse zwischengespeichert. Bei wiederkehrenden Abfragen, was beim browsen durch die DB ja vorkommt, ist der Zuwachs enorm.
    Aktiviert wird er wiefolgt:

    SQL
    mysql> set global query_cache_size = 10000000;

    5. Tipps:
    5.1. Testen des Netzwerkzugriffs auf die MySQL-DB:

    Code
    $ mysql -h 192.168.2.3 -u root -p

    (access denied)

    Code
    $ mysql -h 192.168.2.3 -u xbmc -p

    (sollte klappen)

    5.2 .Tägliches backup der Datenbank:
    Eine neue Textdatei 'xbmc_db' in /etc/cron.daily/ anlegen:

    Code
    $ sudo nano /etc/cron.daily/xbmc_db


    mit dem Inhalt:

    Bash
    #!/bin/sh
    /usr/bin/mysqldump --opt -u USER --password=PASSWORD xbmc_video > /home/xbmc/backup/xbmc_video_db_`date +%F`.sql


    danach die Datei noch ausführbar machen:

    Code
    $ sudo chmod +x /etc/cron.daily/xbmc_db


    Backup wieder einspielen:

    Code
    $ mysql -u USER -p --database=xbmc_video < xbmc_video_db....sql
  • Bei mehreren XBMCs im Netzwerk, die alle auf eine DB zugreifen, bestand bisher das Problem, dass es zu inkonsistenten Pfaden kommen konnte, wenn Daten mal lokal, mal im Netzwerk vorliegen.
    Man kann das entweder über das System lösen, in dem man die Freigaben auf Systemebene einbindet und auf jedem System identisch einrichtet oder man kann über die [definition='2','1']advancedsettings[/definition].xml eine pathsubstitution festlegen:
    (manchen evtl. noch aus xbox Zeiten bekannt)

    XML
    <pathsubstitution>
        <substitute>
            <from>/Volumes/DRIVE1</from>
            <to>smb://192.168.1.4/DRIVE1</to>
        </substitute>
        <substitute>
            <from>/Volumes/DRIVE2</from>
            <to>smb://192.168.1.4/DRIVE2</to>
        </substitute>
      </pathsubstitution>


    [quelle] Ticket #11101 ([PATCH] use existing <pathsubstitution> in [definition='2','1']advancedsettings[/definition].xml to ...) closed [/quelle]

    Fragen / Meinungen / Kritik zum HowTo im entsprechenden Diskussionsthema

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!