mysqldump per Cronjob bringt Fehler

  • Nein geht nicht, eventuell kann es daran liegen als ich das Passwort generieren habe lassen als erstes Zeichen ein $ ist

  • Der Backslash vor dem $ funktioniert, Danke. Doch leider habe ich immer noch das Problem mit den Dateinamen. Diese werde zufällig generiert wenn ich "BackupMySQL.sh" ausführe


    Das ist jetzt speziell... habe mal in der Console das Verzeichnis mit ls -l anzeigen lassen.


    Da werden die Dateien richtig angezeigt, aber am Ende des Dateinamens wird noch ein zusätzliches ? angezeigt


    Habe den Grund nun herausgefunden, da ich meine BackupMySQL.sh Datei mit dem Notepad++ editiert habe, wurden die Zeilenenden mit CRLF generiert

    Shell Scripting unwanted '?' character at the end of file name
    I get an unwanted '?' at the end of my file name while doing this: emplid=$(grep -a "Student ID" "$i".txt | sed 's/(Student ID: //g' | sed 's/)Tj//g' )…
    stackoverflow.com


    Um diese zu ersetzten gibt es eine Anleitung unter dem folenden Link.


    Nach ich es korrigiert habe, werden die Dateien nun korrekt erzeugt und auch wie gewünscht im Windows-Explorer korrekt angezeigt.

    2 Mal editiert, zuletzt von gkobler () aus folgendem Grund: Ein Beitrag von gkobler mit diesem Beitrag zusammengefügt.

  • ein einfaches dos2unix reicht in den meisten Fällen :)

    Ich weiß aber nicht, ob das bei QNAP verfügbar ist.

    NBotepad++ macht das übrigens normalerweise richtig, bzw. man kann richtig speichern.

  • Nun ist der Fall eingetreten , dass ich die Datenbank zurück spielen muss. Aber leider scheitere ich schon am 2. Punkt.


    Code
    /mnt/ext/opt/mariadb/bin/mysql -u root -pPASSWORT CREATE DATABASE Nextcloud

    Da ruft es die Hilfe von mysql auf. Ich weiß hier nicht , was falsch läuft.


    Was mache ich falsch?


    Danke BERT

  • Normalerweise schließt man mysql Befehle mit ; ab?


    Gruss


    Moment, Du bist auf der Konsole, nicht im mysql?

    Wie lautet denn die Fehlermeldung?

  • Melde Dich bitte mal an Mysql mit folgendem Befehl an:


    /mnt/ext/opt/mariadb/bin/mysql -u root -pPASSWORT


    Dann mal bitte mit folgendem Befehl die Datenbanken anzeigen lassen:


    SHOW DATABASES;


    Falls die Nextcloud-DB noch da ist, diese mit


    DROP DATABASE nextcloud; löschen.


    Dann mit


    CREATE DATABASE nextcloud;


    neu anlegen.


    Nun mit


    exit


    die mysql-DB beenden.


    Jetzt mit


    /mnt/ext/opt/mariadb/bin/mysql -u root -pPASSWORT nextcloud <nextcloud.sql die Datenbank neu einlesen. Und wichtig: Unbedingt auch die Datenbank "mysql" neu einlesen, damit die Rechte richtig gesetzt werden:


    /mnt/ext/opt/mariadb/bin/mysql -u root -pPASSWORT mysql <mysql.sql


    Danach mysql über die Oberfläche beenden und neu starten, damit die Rechte übernommen werden.

    Einmal editiert, zuletzt von lhsei ()

  • Ich bin jetzt weiter. Mit


    Code
    /mnt/ext/opt/mariadb/bin/mysql --protocol=socket -S /tmp/QMariadDB2.sock -u root -pPASSWORT

    bin ich in

    Code
    MariaDB [(none)]>
    Code
    Jetzt konnte ich die Datenbank erzeugen mit 
    Code
    MariaDB [(none)]> CREATE DATABASE Nextcloud;
    Query OK, 1 row affected (0.02 sec)

    Aber wenn ich dann die SQL zurückspielen will. kommt folgender Fehler:

    Code
    MariaDB [(none)]> Nextcloud < /share/Web/Nextcloud.sql;
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'Nextcloud < /share/Web/Nextcloud.sql' at line 1

    Was kann ich tun?


    Danke

    Bert

  • Lies mal bitte genau, was ich geschrieben habe!


    Du musst erst mit exit aus der Mysql-Anwendung heraus. Erst dann kannst Du den Import der SQL-Datei, wie von mir beschrieben, starten.

  • Mod: Unnötiges Volltext-/Direktzitat entfernt! :handbuch::arrow: Forenregeln beachten und Die Zitat Funktion des Forums richtig nutzen


    Ja ich hatte das schon abgeschickt, bevor ich deins gelesen habe.


    Danke dir. Klappt jetzt


    Letzte Frage, also sollte ich die mysql Datenbank auch täglich sichern? Das hatte ich aktuell nicht auf dem Schirm.


    Wenn ich die mysql aus der gesamtsicherung nur haben will, wie lautet dann der Befehl, dass ich diese nur wiederherstelle?


    Bert

  • Auf jeden Fall solltest Du sie immer dann sichern, wenn Du neue Datenbanken anlegst oder Nutzerrechte änderst. Ich sichere sie in meinem Script täglich mit weg, ist nur sehr klein, aber ungeheuer wichtig!


    Aus der Gesamtsicherung bekommst Du sie nur mit einem Texteditor heraus. Besser ist, die Datenbanken einzeln zu sichern, das macht die Wiederherstellung deutlich einfacher.

    Einmal editiert, zuletzt von lhsei () aus folgendem Grund: Ein Beitrag von lhsei mit diesem Beitrag zusammengefügt.

  • Du musst erst mit exit aus der Mysql-Anwendung heraus.

    Nicht nötig. Man kann auch mit

    Code
    source <Dateiname>;

    den Dump in Mysql direkt laden. (<Dateiname> durch den tatsächlichen Namen ersetzen, und das Semikolon am Ende ist Pflicht.)


    Hinweis:

    Da es sich beim Dump um eine Ascii-Datei mit ausführbaren SQL-Befehlen handelt, ist es auch problemlos möglich, nur Teile zurückzuspielen oder die Daten in eine andere Datenbank einspielen, z. B. mit Copy&Paste oder indem man die Dump-Datei (bzw. besser eine Kopie davon) erst mit einem Texteditor ändert.


    Wenn man so etwas macht, sollte man aber wissen, was man macht. Bei liebevoll selbst erstellten Datenbanken geht das gut. Bei Datenbanken, die von einer nur genutzten Software erstellt werden, würde ich immer die ganze Datenbank zurückspielen.