Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:tools:dbcopy

Dies ist eine alte Version des Dokuments!


dbcopy - inkrementelle Datenbankkopie

Möchte man die Datenbank sichern oder auf einem zweiten System zur Verfügung haben stößt man bei Verwendung von mysqldump auf Schwierigkeiten die mit dbcopy umgangen werden können.

Dbcopy ist Teil einer VZ-Standardinstallation und unter /var/www/volkszaehler.org/vendor/bin/dbcopy.php zu finden. Es hat aber sein eigenes Repository auf github.

Für das kopieren der Daten ist eine zweite, verfügbare Datenbankapplikation Grundvoraussetzung. Sie muss SQL-Kompatibel sein. Am zuverlässigsten ist daher eine weitere MySQL-Installation die über Netzwerkwerk erreichbar ist, z.B. bei einem Webhoster. Alternativ bieten sich aber auch die DB eines NAS (z.B. Maria-DB auf Synology) oder SQLite an. SQLite ist als Backuplösung besonders interessant weil die Datenbank in einer einzelnen Datei abgelegt wird die einfach kopiert werden kann.

Installation

Sollte dbcopy doch nicht auf dem System verfügbar sein kann das mit

git clone git://github.com/andig/dbcopy

nachgeholt werden. Um Einsatzbereitschaft herzustellen müssen aber noch die Abhängigkeiten aufgelöst werden

cd dbcopy
composer install

MySQL

Bei der MYSQL-Datenbankapplikaion muss eine Datenbank und ein Nutzer mit ausreichenden Rechten angelegt werden. Insbesondere ist darauf zu achten das der User Schreibrechte hat und auch von außerhalb zugreifen darf. Manche Webhoster lassen allerdings nur localhost-Zugriffe auf MySQL zu.

SQLite

Kann auch als zweite Datenbankapplikation auf dem selben System installiert werden.

sudo apt-get install sqlite3 php5-sqlite

Konfiguration

Es empfiehlt sich nicht die Konfigurationsdatei /var/www/volkszaehler.org/vendor/andig/dbcopy/dbcopy.json direkt zu ändern. Das kann bei späteren Updates der Middleware zu Problemen führen. Daher:

sudo cp /var/www/volkszaehler.org/vendor/andig/dbcopy/dbcopy.json /etc/dbcopy.json

Und

sudo nano /etc/dbcopy.json
Wenn nicht explizit angegeben verwendet dbcopy die Konfiguration aus dem eigenen oder aktuellen Verzeichnis!

Die Tabelle aggregate ist in der Standard-Konfig ausgeblendet („skip“). Für ein Backup sind diese Daten nicht interessant weil redundant. Im Falle eines rückgespielten Backups ohne Datensätze in aggreagte wird die Tabelle einfach aus data frisch befüllt.

Auf einer zweite Middleware sind die Daten aber durchaus von Interesse. Ist auf dem primären System vzcompress im Einsatz und auf dem sekundären System ebenfalls gewünscht, müsste dies lokal wiederholt werden.

Zieldatenbank erstellen

/var/www/volkszaehler.org/vendor/bin/dbcopy.php create -c /etc/dbcopy.json
Das erzeugen von SQLite-Datenbanken schlägt derzeit noch fehl. Als Workaround ist eine fertige DB-Datei (Struktur, ohne Daten) unter http://www.jahp.de/picsextern/volkszaehler/vz.db verfügbar.

Daten kopieren

/var/www/volkszaehler.org/vendor/bin/dbcopy.php backup -c /etc/dbcopy.json

Erfolgreiche Kopie:

entities: copying 9 rows (overwrite)
 [============================] 100%    1 sec/1 sec    9 rows

properties: copying 66 rows (overwrite)
 [============================] 100%    1 sec/1 sec    66 rows

entities_in_aggregator: copying 7 rows (overwrite)
 [============================] 100%    1 sec/1 sec    7 rows

data: copying 2258 rows (partial copy)
 [============================] 100%  40 secs/40 secs  2261 rows

aggregate: skipping

Cronjob

Wenn die manuelle Kopie erfolgreich war kann ein cronjob eingerichtet werden. Z.B. täglich:

0 2 * * * /usr/bin/php /var/www/volkszaehler.org/vendor/bin/dbcopy.php backup -c /etc/dbcopy.json > /dev/null
software/tools/dbcopy.1456998368.txt.gz · Zuletzt geändert: 2016/03/03 10:46 von jau