Hi an Alle,
wer hat denn schon mal mit einem SQL-Befehl aus LabVIEW raus ein Backup (BACKUP, MYSQLHOTCOPY etc. etc.) einer MySQL Tabelle erledigt. Ich habe Tabellen, die schon mal ca. 1GB gross sind (Daten von 8 Stunden) und meine aktuelle Version ist viel zu langsam BACKUP und RESTORE betreffend.
Die Tabelle ist zur Zeit noch INNODB, kann aber umstellen auf MYISAM.
Danke für Tipps
Marco
Wieso machst Du das in LabVIEW und nicht auf Datenbankebene?
Bei PostgreSQL gibt's Funktionen, die es, soweit ich weiß, bei mySQL jetzt auch gibt (da heißen sie glaub' "Stored Procedures").
Dann hast Du das ganze DB-Zeug auf Datenbankebene und schickst nur noch Funktionsaufrufe mit evtl. zu übergebenden Parametern oder Abfragen.
In so einer Funktion könnte dann neben anderen Befehlen z.B. auch der Backup-Befehl stehen.
Oder habe ich da was misverstanden?
Gruß Markus
' schrieb:Hi an Alle,
wer hat denn schon mal mit einem SQL-Befehl aus LabVIEW raus ein Backup (BACKUP, MYSQLHOTCOPY etc. etc.) einer MySQL Tabelle erledigt. Ich habe Tabellen, die schon mal ca. 1GB gross sind (Daten von 8 Stunden) und meine aktuelle Version ist viel zu langsam BACKUP und RESTORE betreffend.
Die Tabelle ist zur Zeit noch INNODB, kann aber umstellen auf MYISAM.
Danke für Tipps
Marco
Schon richtig,
auf Datenbankebene wäre es besser, ich muss aber sicherstellen, das zu diesem Zeitpunkt keine Messwertaufnahme stattfindet, deshalb ist das mit z.B. festgelegten Uhrzeiten aus MySQL nicht so einfach.
Deshalb wollte ich das Ganze aus LabVIEW machen, um bestimmte Randbedingungen einhalten zu können.
Bei meiner jetzigen Lösung benötigt das Programm zum Zurückspielen einer Tabelle (1GB) ca. 20 Minuten. Das kann (denke ich) nicht so ganz OK sein...
Deshalb suche ich andere Backupbefehle oder Tools, die ich aus LabVIEW ansteuern kann.
Gruß Marco
Wenn ich dich recht verstehe:
- arbeitest du mit einer LV-Anwendung als DB-Client
- einer MYSQL Datenbank
- und willst von LV aus die DB so steuern, dass sie ein Backup anlegt?
Mein Lösungsweg wäre:
- entweder ein entsprechendes SQL Commando vom Client auf die DB abfeuern - den Rest macht die DB
- oder so wie Y-P es vorschlägt in der DB eine StoredProcedure (oder Function) anlegen und diese vom Client mit einem SQL-Commando aufrufen - den Rest macht die DB.
Dein Problem ist nicht LV, von dort aus sollte wirklich nur den Befehl "Datenbank erstelle Backup" abgefeuert werden. Wie lange die Datenbank dann dazu braucht, darauf hat LV keinen Einfluss. Daten erst aus der DB zu ziehen um dann mit LV ein Backup zu erstellen ist nicht im Sinne des Erfinders, weil viel zu Kostenintensiv sprich ineffizient.
Viele Grüße
t4b-1re-2
Danke für die schnellen Atnworten,
dann schaue ich mir mal die Stored Procedures an!
Viele Grüße
Marco
' schrieb:Danke für die schnellen Atnworten,
dann schaue ich mir mal die Stored Procedures an!
Viele Grüße
Marco
MySQL kommt wahrscheinlich auch mit einem Commandline tool (Unix roots lassen grüssen) mit dem Du das von LabVIEW aus auch über SystemExec machen können solltest.
Rolf Kalbermatter
' schrieb:MySQL kommt wahrscheinlich auch mit einem Commandline tool (Unix roots lassen grüssen) mit dem Du das von LabVIEW aus auch über SystemExec machen können solltest.
Rolf Kalbermatter
stimmt !!! mySQL bringt dafür ein eigenes kleines Tool mit. >>> mysqldump<<<< hier wird genau darauf geachtet, das eventuelle Zugriffe nicht zum crash führen. Der Befehl sollte ungefähr so aussehen:
mysqldump --user=[username] --password=[passwort] [Datenbankname] > c:...
Vielleicht einfach mal die Eingabeaufforderung öffnen und die Befehlsfolge so eingeben. Achtung vorher in den Ordner ...mysqlbin wechseln. Probleme könnte es auch geben, wenn kein Password vergeben wurde.
zurückgespielt wird das ganze dann in 2 Schritten. Erstmal wird die Verbindung zur Datenbank aufgebaut. Das geschieht mit folgender Eingabe :
mysql --user=[username] --password=[passwort] [Datenbankname] Jetzt müßte anfang der Zeile in der Eingabeaufforderung "mysql>" stehen.
Mit
source [sicherungsdateiname] sollte der Dump zurückgeschrieben werden.
Wie gesagt erstmal in der Eingabeauffordereung testen und anschließend in LV realisieren.
Viel Erfolg
Der Vollständigkeit halber......
Sowas gibt es auch bei PostgreSQL und da heißt es "pg_dump".
Gruß Markus
' schrieb:stimmt !!! mySQL bringt dafür ein eigenes kleines Tool mit. >>> mysqldump<<<< hier wird genau darauf geachtet, das eventuelle Zugriffe nicht zum crash führen. Der Befehl sollte ungefähr so aussehen: mysqldump --user=[username] --password=[passwort] [Datenbankname] > c:...
Vielleicht einfach mal die Eingabeaufforderung öffnen und die Befehlsfolge so eingeben. Achtung vorher in den Ordner ...mysqlbin wechseln. Probleme könnte es auch geben, wenn kein Password vergeben wurde.
zurückgespielt wird das ganze dann in 2 Schritten. Erstmal wird die Verbindung zur Datenbank aufgebaut. Das geschieht mit folgender Eingabe :
mysql --user=[username] --password=[passwort] [Datenbankname] Jetzt müßte anfang der Zeile in der Eingabeaufforderung "mysql>" stehen.
Mit source [sicherungsdateiname] sollte der Dump zurückgeschrieben werden.
Wie gesagt erstmal in der Eingabeauffordereung testen und anschließend in LV realisieren.
Viel Erfolg