Die Datei ist eine komprimierte (komprimierte) SQL-Datei, mit ziemlicher Sicherheit eine reine Textdatei mit der Erweiterung .sql. Das erste, was Sie tun müssen, ist die Datei über scp auf Ihren Datenbankserver zu kopieren. Ich denke, PuTTYs ist pscp.exe
C:\> pscp.exe numbers.sql.gz user@serverhostname:/home/user
Dann SSH in Ihren Server und dekomprimieren Sie die Datei mit gunzip
user@serverhostname$ gunzip numbers.sql.gz
user@serverhostname$ ls
numbers.sql
Importieren Sie es schließlich mit dem Eingabeumleitungsoperator in Ihre MySQL-Datenbank <
:
user@serverhostname$ mysql -u mysqluser -p < numbers.sql
Wenn die Datei numbers.sql keine Datenbank erstellt, aber erwartet, dass bereits eine vorhanden ist, müssen Sie die Datenbank ebenfalls in den Befehl aufnehmen:
user@serverhostname$ mysql -u mysqluser -p databasename < numbers.sql
Wenn Sie die Möglichkeit haben, von außerhalb eine direkte Verbindung zu Ihrem MySQL-Server herzustellen, können Sie einen lokalen MySQL-Client verwenden, anstatt kopieren und SSH ausführen zu müssen. In diesem Fall benötigen Sie lediglich ein Dienstprogramm, mit dem Sie .gz-Dateien unter Windows dekomprimieren können. Ich glaube, 7zip tut dies, oder Sie können die gzip / gunzip-Binärdateien für Windows erhalten.
Melden Sie sich mit einem Shell-Programm wie putty bei Ihrem Server an.
Geben Sie den folgenden Befehl in die Befehlszeile ein
wo
DB_File_Name.sql.gz
= vollständiger Pfad der zu importierenden sql.gz-Dateiusername
= Ihr MySQL-BenutzernameTarget_DB_Name
= Datenbankname, in den Sie die Datenbank importieren möchtenWenn Sie in der Befehlszeile die Eingabetaste drücken, werden Sie zur Eingabe des Kennworts aufgefordert. Geben Sie Ihr MySQL-Passwort ein.
Du bist fertig!
quelle
Ohne einen separaten Schritt zum Extrahieren des Archivs:
# import gzipped-mysql dump gunzip < DUMP_FILE.sql.gz | mysql --user=DB_USER --password DB_NAME
Ich verwende das obige Snippet, um mysqldump-Backups erneut zu importieren, und das folgende, um es zu sichern.
# mysqldump and gzip (-9 ≃ highest compression) mysqldump --user=DB_USER --password DB_NAME | gzip -9 > DUMP_FILE.sql.gz
quelle
PASSWORD
Befehl zurückgesetzt. Passwörter sollten nicht direkt in der Kommandozeile angegeben werden, es sei denn, dies ist unbedingt erforderlich. Auf den meisten Systemen werden Shell-Befehle in einer Verlaufsdatei wie gespeichert,.bash_history
und daher werden die direkt im Befehl angegebenen Kennwörter auch in dieser Verlaufsdatei gespeichert. Wenn Sie das Passwort weglassen, fordert MySQL es interaktiv auf. Wenn Sie die Kennwörter wirklich in den Befehl aufnehmen müssen, sollten Sie den Befehl durch ein Leerzeichen einrücken, um zu verhindern, dass der Befehl im Shell-Verlauf protokolliert wird.Für einen Oneliner unter Linux oder Cygwin müssen Sie die Authentifizierung mit öffentlichem Schlüssel auf dem Host durchführen, andernfalls fragt ssh nach dem Kennwort.
gunzip -c numbers.sql.gz | ssh user@host mysql --user=user_name --password=your_password db_name
Oder führen Sie eine Portweiterleitung durch und stellen Sie über eine "lokale" Verbindung eine Verbindung zum Remote-MySQL her:
Stellen Sie dann die MySQL-Verbindung auf Ihrem lokalen Computer zu localhost: some_port her .
Die Portweiterleitung funktioniert auch von Putty mit der ähnlichen Option -L, oder Sie können sie über das Einstellungsfeld irgendwo unten im Baum konfigurieren.
quelle
--defaults-file
anstatt des Passwortes auf der KommandozeileWenn Sie scp haben, dann:
So verschieben Sie Ihre Datei von lokal auf remote:
So verschieben Sie Ihre Datei von remote nach lokal:
So exportieren Sie Ihre MySQL-Datei, ohne sich beim Remote-System anzumelden:
So importieren Sie Ihre MySQL-Datei, ohne sich beim Remote-System anzumelden:
Hinweis: Stellen Sie sicher, dass Sie Netzwerkzugriff auf die IP-Adresse des Remote-Hosts haben
So überprüfen Sie den Netzwerkzugriff:
quelle
Wenn Sie viele Datenbanken haben, die importiert werden und die Dumps groß sind (ich arbeite oft mit Multigigabyte-Gzipped-Dumps).
Hier gibt es eine Möglichkeit, dies in MySQL zu tun.
$ mkdir databases $ cd databases $ scp user@orgin:*.sql.gz . # Here you would just use putty to copy into this dir. $ mkfifo src $ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.5.41-0 Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> create database db1; mysql> \! ( zcat db1.sql.gz > src & ) mysql> source src . . mysql> create database db2; mysql> \! ( zcat db2.sql.gz > src & ) mysql> source src
Der einzige Vorteil, den dies gegenüber hat
ist, dass Sie leicht mehrere machen können, ohne das Passwort oft einzugeben.
quelle
Wenn der MySQL-Speicherauszug eine GZ-Datei war, müssen Sie gunzip verwenden, um die Datei zu dekomprimieren, indem Sie $ gunzip mysqldump.sql.gz eingeben
Dadurch wird die GZ-Datei dekomprimiert und nur mysqldump.sql am selben Speicherort gespeichert.
Geben Sie den folgenden Befehl ein, um eine SQL-Datendatei zu importieren:
$ mysql -u Benutzername -p -h localhost Testdatenbank <mysqldump.sql Passwort: _
quelle
Erstellen einer Dump-Datei SQL.gz auf dem aktuellen Server
$ sudo apt-get install pigz pv $ pv | mysqldump --user=<yourdbuser> --password=<yourdbpassword> <currentexistingdbname> --single-transaction --routines --triggers --events --quick --opt -Q --flush-logs --allow-keywords --hex-blob --order-by-primary --skip-comments --skip-disable-keys --skip-add-locks --extended-insert --log-error=/var/log/mysql/<dbname>_backup.log | pigz > /path/to/folder/<dbname>_`date +\%Y\%m\%d_\%H\%M`.sql.gz
Optional: Befehlsargumente für die Verbindung
--host=127.0.0.1 / localhost / IP Address of the Dump Server --port=3306
Importieren der oben erstellten Dumpfile auf einen anderen Server
$ sudo apt-get install pigz pv $ zcat /path/to/folder/<dbname>_`date +\%Y\%m\%d_\%H\%M`.sql.gz | pv | mysql --user=<yourdbuser> --password=<yourdbpassword> --database=<yournewdatabasename> --compress --reconnect --unbuffered --net_buffer_length=1048576 --max_allowed_packet=1073741824 --connect_timeout=36000 --line-numbers --wait --init-command="SET GLOBAL net_buffer_length=1048576;SET GLOBAL max_allowed_packet=1073741824;SET FOREIGN_KEY_CHECKS=0;SET UNIQUE_CHECKS = 0;SET AUTOCOMMIT = 1;FLUSH NO_WRITE_TO_BINLOG QUERY CACHE, STATUS, SLOW LOGS, GENERAL LOGS, ERROR LOGS, ENGINE LOGS, BINARY LOGS, LOGS;"
Optional: Befehlsargumente für die Verbindung
--host=127.0.0.1 / localhost / IP Address of the Import Server --port=3306
mysql: [Warnung] Die Verwendung eines Kennworts auf der Befehlszeilenschnittstelle kann unsicher sein. 1.0GiB 00:06:51 [8.05MiB / s] [<=>]
Die optionalen Softwarepakete sind hilfreich, um Ihre Datenbank-SQL-Datei schneller zu importieren
zum schnelleren Zippen der Ausgabe
quelle