[vz-users] Datenbankportierung und neue Struktur

Michael Hartmann hartmann-micha at web.de
Mo Dez 26 11:55:22 CET 2022


Hallo Jakob,

der Unterschied zwichen pk und copy ist klar. Nur das copy wie von mir und Sven zuvor beschrieben lediglich die ersten 1000 Datensätze ins Backup transferiert. Der "Fehler" geschieht bereits beim Sichern, wie aus der Größe der Sicherungsdatei ersichtlich.

Msqldump kann man sicherlich machen um einmalig irgendwie Daten zu transferieren. Nur:

Deinem Quote aus dem Code folgend, braucht es eine Anpassung von dbcopy?

Damit wäre ich nach Umstellung auf die neue DB-Struktur der Möglichkeit eines täglichen, inkrementellen Backups beraubt. Davon fahre ich zwei. In eine SQlite DB auf einem Share und in eine parallele SQL-DB die auf meinem NAS liegt.

Irgendwie ist das ziemlich unglücklich mit der neuen DB-Struktur ohne fortlaufende ID.

Grüße

Micha
-----Ursprüngliche Nachricht-----
Von: volkszaehler-users [mailto:volkszaehler-users-bounces at demo.volkszaehler.org] Im Auftrag von Jakob Hirsch
Gesendet: Montag, 26. Dezember 2022 01:32
An: volkszaehler-users at demo.volkszaehler.org
Betreff: Re: [vz-users] Datenbankportierung und neue Struktur

On 2022-12-24 12:56, Michael Hartmann wrote:
> In CopyCommand.php line 40:
> 
> Table data doesn't have a simple primary key

hm...

if (1 !== sizeof($columns)) {

naja, ein zusammengesetzter Key ist halt kein "simple primary key". also 
"technically correct" (the best kind of correct!).

dbcopy kennt neben "pk" auch "copy" als Modus, damit wird der pk nicht 
benutzt, sondern einfach der komplette Inhalt von A nach B kopiert (und 
B vorher gelöscht). pk ist eigentlich nur nützlich, wenn man zwei 
Datenbanken synchronisieren möchte, für einen reinen export reicht copy 
(ist evt. sogar schneller). Das ist übrigens auch der default, wenn man 
keine Sektion "tables" in der dbcopy.json hat...

Einfacher (und wahrscheinlich schneller) dürfte es aber sein, einfach 
die Datenbank mit mysqldump in eine Datei zu schreiben und diese auf dem 
Zielsystem wieder einzuspielen.

Also so etwa: (ungetestet)

mysqldump --opt --databases vz > vz.sql

Und dann auf dem Zielrechner:

mysql < vz.sql




Mehr Informationen über die Mailingliste volkszaehler-users