MariaDB Tabellen Abgleichen

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.

Re: MariaDB Tabellen Abgleichen

Beitragvon pluto » 24. Okt 2018, 17:46 Re: MariaDB Tabellen Abgleichen

Das mit dem git remote add origin hat jetzt geklappt, die URL war nur falsch. habe das .de vergessen. Ich sehe die Dateien nur noch nicht im Ziel verzeichnis auf dem Internet PC
MFG
Michael Springwald
Aktuelles Projekt: PlutoArduino
pluto
 
Beiträge: 6702
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 18.3 | 
CPU-Target: AMD
Nach oben

Beitragvon mse » 24. Okt 2018, 18:00 Re: MariaDB Tabellen Abgleichen

pluto hat geschrieben:So nun bin ich mir nicht sicher wo ich "git init --bare" ausführen soll?
Soll ich das Zuhause ausführen oder auf dem Internet Server?

Dort wo dein primäres Archiv sein soll -> auf dem Server.
Ich sehe die Dateien nur noch nicht im Ziel verzeichnis auf dem Internet PC

Auf dem Server hast du --bare angegeben -> dort gibt es keine ausgecheckten Dateien, die git Datenbank befindet sich im ".git" Verzeichnis.
mse
 
Beiträge: 2012
Registriert: 16. Okt 2008, 09:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon pluto » 24. Okt 2018, 19:01 Re: MariaDB Tabellen Abgleichen

Vielen Dank für eure Hilfe, es war ein tipp Fehler in der URL. Ich habe das ".de" vergessen.
Nun kann ich Problemlos Daten vom PC auf dem Internet-server schieben und auch wieder Runterholen.

Mir kommt es aber etwas "aufwendig" vor... Die nächste frage wäre natürlich noch, wie man das ganze Automatisieren könnte.

Ich habe jetzt zum Beispiel Änderungen bei den PC-Git gemacht und die sollen nun z.b. mit dem Internet-Server abgeglichen werden.
Beim PC Runterfahren wäre es wohl keine gute Idee, vielleicht per Cron-Job?

Ich werde das Konzept Testen, vielleicht ist es ja das was ich gesucht habe.
MFG
Michael Springwald
Aktuelles Projekt: PlutoArduino
pluto
 
Beiträge: 6702
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 18.3 | 
CPU-Target: AMD
Nach oben

Beitragvon fliegermichl » 24. Okt 2018, 23:12 Re: MariaDB Tabellen Abgleichen

Ja sorry, da habe ich ein paar Scenarien zeitgleich aufgezeigt.

automatisch commiten ist meiner Meinung nach nicht so arg sinnvoll. Woher soll ein Script wissen, wann Du einen Entwicklungsvorgang soweit abgeschlossen hast, daß er es wert wäre wieder hergestellt zu werden.

und auch wenn es sich nur um Notizen handelt, hat man ja doch irgendwo einen "in Vorgang" und einen "speicher und wiederherstellbar wertigen" Status.
fliegermichl
 
Beiträge: 213
Registriert: 9. Jun 2011, 08:42

Beitragvon mse » 25. Okt 2018, 06:27 Re: MariaDB Tabellen Abgleichen

pluto hat geschrieben:Die nächste frage wäre natürlich noch, wie man das ganze Automatisieren könnte.

Eine Komponente zur Überwachung von Verzeichnissen und Dateien ist hier:
https://gitlab.com/mseide-msegui/mseide ... change.pas

Mit MSEgit hat man einen schönen Überblick über die geänderten Dateien vor dem committen und pushen.
mse
 
Beiträge: 2012
Registriert: 16. Okt 2008, 09:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon pluto » 25. Okt 2018, 08:51 Re: MariaDB Tabellen Abgleichen

automatisch commiten ist meiner Meinung nach nicht so arg sinnvoll. Woher soll ein Script wissen, wann Du einen Entwicklungsvorgang soweit abgeschlossen hast, daß er es wert wäre wieder hergestellt zu werden.

und auch wenn es sich nur um Notizen handelt, hat man ja doch irgendwo einen "in Vorgang" und einen "speicher und wiederherstellbar wertigen" Status.

Meine Datenbank Anwendung wüsste es... Gut, ich könnte mir ein kleines Script schreiben um den Vorgang zu vereinfachen....

Ich werde es mir ein paar Wochen ansehen, ich glaube aber, dass ist nichts für mich...

Eine Komponente zur Überwachung von Verzeichnissen und Dateien ist hier:
https://gitlab.com/mseide-msegui/mseide ... change.pas

Ich habe mir den Soruce-Code angeschaut: Nutzt du hier eine Kernel-Schnittstelle für das Überwachen?
MFG
Michael Springwald
Aktuelles Projekt: PlutoArduino
pluto
 
Beiträge: 6702
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 18.3 | 
CPU-Target: AMD
Nach oben

Beitragvon mse » 25. Okt 2018, 09:29 Re: MariaDB Tabellen Abgleichen

pluto hat geschrieben:Ich habe mir den Soruce-Code angeschaut: Nutzt du hier eine Kernel-Schnittstelle für das Überwachen?

Ja.
mse
 
Beiträge: 2012
Registriert: 16. Okt 2008, 09:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon pluto » 25. Okt 2018, 09:35 Re: MariaDB Tabellen Abgleichen

Ja.

Interessant. Muss ich mir dann wohl noch mal genauer ansehen.

Erst mal vielen dank für eure Hilfe. Das ist zwar nicht das was ich gesucht habe, damit bleibt die Urspungsfrage leider ungeklärt.

Ich werde wohl hier wohl was eigenes anfangen. Da es hier offenbar nichts Fertiges gibt um die angelegte Histroy-Table zu exportieren und wieder zu Importieren.
Das mag zwar nicht unbedingt der Normale weg einer DB sein, ich finde ihn aber sehr Kreativ. In der WebOberfläche müsste ich dann nur noch ein Button einbauen: "DB Uploaden" oder so ähnlich.

Fazit: Nun kenne ich GIT ganz grob.... ich denke, für einen Soruce-Code ist das nicht schlecht, aber für Notizen ich weiß nicht. Gibt es eigentlich in GIT eine Funktion um ganz alte Dateien komplett zu Entfernen?
MFG
Michael Springwald
Aktuelles Projekt: PlutoArduino
pluto
 
Beiträge: 6702
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 18.3 | 
CPU-Target: AMD
Nach oben

Beitragvon mse » 25. Okt 2018, 10:06 Re: MariaDB Tabellen Abgleichen

pluto hat geschrieben:Das mag zwar nicht unbedingt der Normale weg einer DB sein, ich finde ihn aber sehr Kreativ.

Wie gesagt, das nennt sich Replikation.
Fazit: Nun kenne ich GIT ganz grob.... ich denke, für einen Soruce-Code ist das nicht schlecht, aber für Notizen ich weiß nicht.

Ich befürchte, dass du mit deinem Vorhaben auf dem Holzweg bist.
Gibt es eigentlich in GIT eine Funktion um ganz alte Dateien komplett zu Entfernen?

Nicht einzelne Dateien, aber die History kann begrenzt werden:
https://git-scm.com/docs/git-clone
Stichwort "shallow".
mse
 
Beiträge: 2012
Registriert: 16. Okt 2008, 09:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon pluto » 25. Okt 2018, 10:09 Re: MariaDB Tabellen Abgleichen

Wie gesagt, das nennt sich Replikation.

Es ist eine Form davon.....
Weil ich möchte ja es so machen, dass der Laptop nicht an sein muss....

Ich befürchte, dass du mit deinem Vorhaben auf dem Holzweg bist.

Was genau meinst du? GIT zu verwenden oder die Datenbank Anwendung?

Nicht einzelne Dateien, aber die History kann begrenzt werden:

Aha.... das ist schon mal nicht schlecht.....
MFG
Michael Springwald
Aktuelles Projekt: PlutoArduino
pluto
 
Beiträge: 6702
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 18.3 | 
CPU-Target: AMD
Nach oben

Beitragvon mse » 25. Okt 2018, 10:24 Re: MariaDB Tabellen Abgleichen

pluto hat geschrieben:Was genau meinst du? GIT zu verwenden oder die Datenbank Anwendung?

Eine Datenbank mit Replikation als Notizenspeicher zu verwenden. Den Aufwand um eine zuverlässige Replikation vor allem im Multiuser-Umfeld zu programmieren darf man auch nicht unterschätzen, siehe fliegermichls Kommentar dazu.
mse
 
Beiträge: 2012
Registriert: 16. Okt 2008, 09:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon pluto » 25. Okt 2018, 10:37 Re: MariaDB Tabellen Abgleichen

MariaDB [NoteManager_28813391]> select id,Action, NoteID, title, CreateDateTime from ContentList_Histroy;
+----+--------+--------+----------------------------------------------------------+---------------------+
| id | Action | NoteID | title | CreateDateTime |
+----+--------+--------+----------------------------------------------------------+---------------------+
| 1 | INSERT | NULL | Gemüse | 2018-10-22 21:51:33 |
| 2 | INSERT | 2 | Vermarktung | 2018-10-22 21:51:33 |
| 3 | INSERT | 3 | Einteilung | 2018-10-22 21:51:33 |
| 4 | INSERT | 4 | Vermarktungs- und Qualitätsnormen | 2018-10-22 21:51:33 |
| 5 | INSERT | 5 | Kohl | 2018-10-22 21:51:33 |
| 6 | INSERT | 6 | Namensgebung | 2018-10-22 21:51:33 |
| 7 | INSERT | 7 | Systematik und Verbreitung | 2018-10-22 21:51:33 |
| 8 | INSERT | 8 | Gartensalat | 2018-10-22 21:51:33 |
| 9 | INSERT | 9 | Kultur | 2018-10-22 21:51:33 |
| 10 | INSERT | 10 | Geschichte | 2018-10-22 21:51:33 |
| 11 | INSERT | 11 | Sonstiges | 2018-10-22 21:51:33 |
| 12 | INSERT | 12 | Gartensalat | 2018-10-22 21:51:33 |
| 13 | INSERT | 13 | Beschreibung | 2018-10-22 21:51:33 |
| 14 | INSERT | 14 | Inhaltsstoffe | 2018-10-22 21:51:33 |
| 15 | INSERT | 15 | Kulturformen | 2018-10-22 21:51:33 |
| 16 | INSERT | 16 | STM32 | 2018-10-22 21:51:33 |
| 17 | INSERT | 17 | 2_Eintrag | 2018-10-22 21:51:33 |
| 18 | INSERT | 18 | 3_Eintrag | 2018-10-22 21:51:33 |
| 19 | INSERT | 19 | 1_Eintrag | 2018-10-22 21:51:33 |
| 20 | INSERT | 20 | BallonFahrt | 2018-10-22 21:51:33 |
| 21 | INSERT | 21 | 18650_battery_shild_v3 | 2018-10-22 21:51:33 |
| 22 | INSERT | 22 | Amazon-Wenger-Schweizer-Offiziersmesser-Messer-Schatulle | 2018-10-22 21:51:33 |
| 23 | INSERT | 23 | DA GEHT NOCH WAS | 2018-10-22 21:51:33 |
| 24 | INSERT | 24 | Schweizer Ingenieur im Wenger gefunden | 2018-10-22 21:51:33 |
| 25 | INSERT | 25 | Praktisch für unterwegs | 2018-10-22 21:51:33 |
| 26 | INSERT | 26 | Jeden Tag eine neue Welt | 2018-10-22 21:51:33 |
| 27 | INSERT | 27 | SternenPerfekt in allen Lebenslagen | 2018-10-22 21:51:33 |
| 28 | INSERT | 28 | Zahnstocher fehlt | 2018-10-22 21:51:33 |
| 29 | INSERT | 29 | zwischenablage | 2018-10-22 21:51:33 |
| 30 | INSERT | 30 | Begriffe_Arduino | 2018-10-22 21:51:33 |
| 31 | INSERT | 31 | Entwickler Boards | 2018-10-22 21:51:33 |
| 32 | INSERT | 32 | Stromversorgung | 2018-10-22 21:51:33 |
| 33 | INSERT | 33 | Sound | 2018-10-22 21:51:33 |
| 34 | INSERT | 34 | LED | 2018-10-22 21:51:33 |
| 35 | INSERT | 35 | Sonstiges | 2018-10-22 21:51:33 |
| 36 | INSERT | 36 | RTC | 2018-10-22 21:51:33 |
| 37 | INSERT | 37 | Drahtlos_Wireless | 2018-10-22 21:51:33 |
| 38 | INSERT | 38 | LCD | 2018-10-22 21:51:33 |
| 39 | INSERT | 39 | MCU | 2018-10-22 21:51:33 |
| 40 | INSERT | 40 | Sensoren | 2018-10-22 21:51:33 |
| 41 | INSERT | 41 | Zwischenablage_Arduino | 2018-10-22 21:51:33 |
| 42 | INSERT | 42 | KTT | 2018-10-22 21:51:33 |
| 43 | INSERT | 43 | 2_Eintrag | 2018-10-22 21:51:33 |
| 44 | INSERT | 44 | 6_Eintrag | 2018-10-22 21:51:33 |
| 45 | INSERT | 45 | 4_Eintrag | 2018-10-22 21:51:33 |
| 46 | INSERT | 46 | 3_Eintrag | 2018-10-22 21:51:33 |
| 47 | INSERT | 47 | 8_Eintrag | 2018-10-22 21:51:33 |
| 48 | INSERT | 48 | 7_Eintrag | 2018-10-22 21:51:33 |
| 49 | INSERT | 49 | 5_Eintrag | 2018-10-22 21:51:33 |
| 50 | INSERT | 50 | 1_Eintrag | 2018-10-22 21:51:33 |
| 51 | INSERT | 51 | Rübsen | 2018-10-22 21:51:33 |
| 52 | INSERT | 52 | Verbreitung | 2018-10-22 21:51:33 |
| 53 | INSERT | 53 | Merkmale | 2018-10-22 21:51:33 |
| 54 | INSERT | 54 | Rübsen | 2018-10-22 21:51:33 |
| 55 | INSERT | 55 | Systematik | 2018-10-22 21:51:33 |
| 56 | UPDATE | 42 | KTT | 2018-10-22 21:51:33 |
| 57 | UPDATE | 42 | KTT | 2018-10-22 21:51:33 |
| 58 | UPDATE | 42 | KTT | 2018-10-22 21:51:33 |
| 59 | UPDATE | 47 | 8_Eintrag | 2018-10-22 21:51:33 |
| 60 | UPDATE | 45 | 4_Eintrag | 2018-10-22 21:51:33 |
| 61 | UPDATE | 44 | 6_Eintrag | 2018-10-22 21:51:33 |
| 62 | UPDATE | 43 | 2_Eintrag | 2018-10-22 21:51:33 |
+----+--------+--------+----------------------------------------------------------+---------------------+
62 rows in set (0.00 sec)
[/quote]
So sieht die Table Histroy bisher aus... Mein nächster Schritt wäre jetzt: Diese Tabelle komplett zu Exportieren in einer "Austausch" Datei. Der nächste wäre dann, diese Datei einzulesen. Später soll es im Ziel Verzeichnis noch eine Info Datei geben, wann der letzte Export statt fand.... damit nicht immer alles exportiert werden muss.

So werden z.b. die Trigger aus meiner Anwendung heraus erstellt:
Code: Alles auswählen
 
procedure TPLNoteManager.CreateTrigger();
var
  s:String;
begin
  {    ' DECLARE myRandomNumber INT;' + LineEnding +
      ' DECLARE TempNoteID INT;' + LineEnding +
      ' SET myRandomNumber=CAST(rand()*40000 as UNSIGNED);' + LineEnding +
      ' SET TempNoteID=new.id+myRandomNumber;' + LineEnding +}

 
  s:='CREATE TRIGGER `ContentList_BEFORE_INSERT` BEFORE INSERT ON ContentList FOR EACH ROW' +LineEnding+
  ' BEGIN ' + LineEnding +
      ' DECLARE TempNoteID INT;' + LineEnding +
      ' SELECT IFNULL(MAX(id),0)' + LineEnding +
      '   FROM ContentList' + LineEnding +
      '   INTO TempNoteID;' + LineEnding +
      ' set new.NoteID=TempNoteID+1; ' + LineEnding+
  ' END';
  MariaDB2.AConnection.ExecuteDirect(s);
 
 
  s:='CREATE TRIGGER `ContentList_AFTER_INSERT` AFTER INSERT ON ContentList FOR EACH ROW' +LineEnding+
  ' BEGIN ' + LineEnding +
    ' INSERT INTO ContentList_Histroy(Action, NoteID, ParentID, CreateDateTime, LastReadDataTime, LastWriteDataTime, CountRead, CountWrite, Title, Text) values ( ''INSERT'', new.NoteID, new.ParentID, new.CreateDateTime, new.LastReadDataTime, new.LastWriteDataTime, new.CountRead, new.CountWrite, new.Title, new.Text); ' + LineEnding +
  ' END';
  MariaDB2.AConnection.ExecuteDirect(s);
 
  s:='CREATE TRIGGER ContentList_AFTER_UPDATE AFTER UPDATE ON ContentList FOR EACH ROW '+
     'INSERT INTO ContentList_His[code=laz][/code]troy(Action, NoteID, ParentID, CreateDateTime, LastReadDataTime, LastWriteDataTime, CountRead, CountWrite, Title, Text) values ( ''UPDATE'', new.NoteID, new.ParentID, new.CreateDateTime, new.LastReadDataTime, new.LastWriteDataTime, new.CountRead, new.CountWrite, new.Title, new.Text);'+LineEnding;
  MariaDB2.AConnection.ExecuteDirect(s);
 
  s:='CREATE TRIGGER ContentList_AFTER_DELETE AFTER DELETE ON ContentList FOR EACH ROW '+
     'INSERT INTO ContentList_Histroy(Action, NoteID, ParentID, CreateDateTime, LastReadDataTime, LastWriteDataTime, CountRead, CountWrite, Title, Text) values ( ''DELETE'', old.NoteID, old.ParentID, old.CreateDateTime, old.LastReadDataTime, old.LastWriteDataTime, old.CountRead, old.CountWrite, old.Title, old.Text);' +LineEnding;
  MariaDB2.AConnection.ExecuteDirect(s);
end; // TPLNoteManager.CreateTrigger     
 

Dieser Weg klappt recht gut. Was ich bisher selten bis gar nicht beobachtet habe bei anderen Projekten: Meine Anwendung kann "sogar" eine Datenbank komplett neu Anlegen mit den Nötigen Tabellen und soweiter.... Hier verwende ich ein "Trick".... den ich irgendwo im Internet gefunden habe....

Code: Alles auswählen
 
procedure TPLNoteManager.CreateDB;
var
  str:string;
begin
  MariaDB2.AConnection.DatabaseName:='mysql';
  MariaDB2.AConnection.ExecuteDirect('use mysql');
  MariaDB2.AConnection.Open;
 
  str:='SHOW DATABASES LIKE '''+DBName+''';';
  MariaDB2.Query.SQL.Text:=str;
  MariaDB2.Query.ExecSQL;
  MariaDB2.Query.Open;
 
  if MariaDB2.Query.RecordCount = 0 then begin
    str:='CREATE DATABASE IF NOT EXISTS '+DBName;
    MariaDB2.AConnection.ExecuteDirect(str);
    MariaDB2.AConnection.ExecuteDirect('use ' + DBName);
    MariaDB2.AConnection.DatabaseName:=DBName;
    MariaDB2.ATransaction.Commit;
 
    CreateTable();
    CreateHistroyTable();
    CreateTrigger();
  end;
 
  MariaDB2.AConnection.Close();
  MariaDB2.AConnection.DatabaseName:=DBName;
  MariaDB2.AConnection.Open;
end; // TPLNoteManager.CreateDB                               
 

Vielleicht wird jetzt mein Vorhaben "klarer" und ich konnte zeigen, dass es bereits einen Code gibt.
Im Anhang gibt es noch ein Bild wie die Web Oberfläche derzeit aussieht.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
MFG
Michael Springwald
Aktuelles Projekt: PlutoArduino
pluto
 
Beiträge: 6702
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 18.3 | 
CPU-Target: AMD
Nach oben

• Themenende •
Vorherige

Zurück zu Datenbanken



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried