Ich habe vor Kurzem meinen Staging-Datenbankserver von MySQL 5.0.84 auf 5.1.72 aktualisiert. Ich versuche, den mysqldump nach dem Upgrade wiederherzustellen. Der Datenbankname im Dump ist gss-app
. Aber der Datenbankordnername darunter /var/lib/mysql
lautete gss@022dapp
, aber wenn ich mich mit bei mysql anmelde mysql -u root -p
und eingebe, wird nur show databases;
der Datenbankname aufgeführt gss-app
und ich kann Use Database gss-app
die Tabellen mit dem Befehl auflisten show tables
.
Die Wiederherstellung schlug mit einem Fehler fehl Got a packet bigger than --max_allowed_packet size
. Diesmal wurde die Datenbank teilweise wiederhergestellt und ich nutzte die Gelegenheit, um den gss@022dapp
Ordner umzubenennen gss-app
und mich bei der MySQL-Shell anzumelden.
Der Datenbankname wurde als aufgeführt @mysql@gss-app
und ich konnte nicht auf die Datenbank zugreifen. Jetzt führe ich die Datenbankwiederherstellung noch einmal mit aus --max_allowed_packet_size=1024M
und sehe, dass der gss@022dapp
Ordner in erstellt wurde /var/lib/mysql
.
Muss ich mir über den Ordnernamen Gedanken machen /var/lib/mysql
? Oder kann ich beim Wiederherstellen einen anderen Datenbanknamen verwenden?
Antwort1
Speziell zu Ihrer Frage, ob Sie beim Wiederherstellen einen anderen Namen verwenden möchten: Mit mysqldump können Sie entweder mysqldump databasename
oder verwenden mysqldump --databases databasename
. Bei ersterem wird keine create db
Anweisung eingefügt, bei letzterem schon.
Wenn Sie den Dump mit der vorherigen Anweisung erstellt haben, können Sie einfach manuell eine neue Datenbank erstellen und den Dump mit etwas wie laden mysql newdbname < dump.sql
. Im letzteren Fall können Sie einfach Ihre Dump-Datei öffnen und den Namen ändern.
Eine Randbemerkung: Ich denke übrigens, dass es ein schlechtes Design von MySQL ist, mysqldump
diesen Unterschied zu haben. Wenn Sie ohne die --databases
Anweisung ein Backup erstellen, müssen Sie zuerst eine Datenbank erstellen, bevor Sie sie wiederherstellen können. Und diese Datenbank hat möglicherweise einen anderen Zeichensatz oder eine andere Sortierung als die ursprüngliche Datenbank. Meiner Meinung nach sollte eine Datenbank, die Sie sichern, alle Daten und Metadaten enthalten. Dasselbe gilt für die Angabe von --routines
und --events
. Ich kann mir vorstellen, dass Optionen wie --no-routines
praktisch sein können, aber standardmäßignichtDumping-Routinen? Hmm.