Datenbank-Migration / Referenzen etc

Gibt es Leitfäden / Best practices bzgl. der Migration / dem Umgang mit OXID Datenbanken?
Server zu Server / Stage zu Dev etc.

So Dinge die u.U. nützlich sein können wie z.B.

  • –ignore-table “oxconfig/oxshops”
  • –hex-blob
  • –no-tablespaces
  • –skip-definer
  • oder nur Base Tabellen exportieren / Keine Views

Und eine Übersicht über alle Referenzen? z.B. alle Tabellen mit Referenzen zu oxarticles, oder alle Tabellen mit Referenzen zu oxuser etc.?

Referenzen gibt’s über einen ordentlichen Artikelimport: Artikel Export aus alter Version + Import in eine neue Version - #4 by vanilla_thunder

Für oxuser gibt’s etwas ähnliches, finde ich aber gerade nicht. Erweitert gibt’s das ganze als PIM-Schnittstelle. Link kann ich bei Interesse zusenden.

Das kommt sehr stark auf deinen Usecase und dein Setup an. (Und deine OXID-Version)
Aus der Richtung “Stage zu Dev” schließe ich mal, dass es dir nicht um die üblichen Migrationen zwischen Versionen geht, sondern darum, Testdaten aus remote-Systemen zu importieren.

Hier gibt es einige Dinge zu bedenken:

  • Privacy: Du solltest keine Echtdaten importieren, wenn es um personenbezogene Daten geht. Hier musst du dir ein Script schreiben, das die Daten entsprechend umformen kann, bevor die Daten den Server verlassen.
  • Die Unterschiede der Server hängen stark davon ab, wie und wo ihr den Server betreibt. Bei einigen Installationen reicht es, einfach ein normales MySQL-Backup zu kopieren, bei anderen ist es sinnvoller, nur einzelne Tabellen oder sogar nur einzelne Datensätze zu spiegeln.
  • Nur die Tabellen zu exportieren und die Views im Zielsystem neu zu erzeugen kann sinnvoll sein. Das hängt aber auch davon ab, wieviele Subshops und Sprachen ihr habt. In einigen Installationen dauert das Erzeugen der Views sehr lange. Aber du sparst dir natürlich z.B. Definer-Probleme.

Die OXID-Datenbank hat aber insgesamt keine extrem hohe Komplexität. Insbesondere gibt es keine Fremdschlüssel in der DB selbst und es gibt auch keine Trigger oder dergleichen. Ein Standard-MySQL-Backup sollte also eigentlich für solche Transfers ausreichen.

Am allerbesten ist es natürlich immer, wenn die Daten einfach vom Dev-ERP importiert werden :wink:

Im Moment haben wir kein offizielles Dokument dazu, wie die Datenbank genau aufgebaut und verknüpft ist. Du kannst versuchen, es dir aus dem Repository (z.B. oxideshop_ce/source/Setup/Sql/database_schema.sql at v7.3.0 · OXID-eSales/oxideshop_ce · GitHub) selbst herzuleiten oder ein Tool dafür zu verwenden.
Allerdings sind die meisten Verknüpfungen auf logischer Ebene im Shop-Code und nicht in der Datenbank selbst hinterlegt (das erleichtert Anpassungen am System, weil sonst auch immer das Datenbankschema mit angepasst werden müsste).