[vz-users] Datenbankportierung und neue Struktur

Michael Hartmann hartmann-micha at web.de
Di Dez 27 16:16:03 CET 2022


Da Backups via dbcopy (insbesondere inkrementelle) aufgrund der neuen DB-Struktur wohl  nicht mehr möglich sind, wäre ich an Plan B interessiert:

Wie bekomme ich die DB einer neuen Middleware-Installation auf die alte Struktur mit automatisch generierten, fortlaufenden IDs zurück?

Grüße

Micha

-----Ursprüngliche Nachricht-----
Von: volkszaehler-users [mailto:volkszaehler-users-bounces at demo.volkszaehler.org] Im Auftrag von Michael Hartmann
Gesendet: Montag, 26. Dezember 2022 11:55
An: 'volkszaehler.org - users'
Betreff: Re: [vz-users] Datenbankportierung und neue Struktur

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