Zurücksichern aller Datenbanken nach Manipulation mit vi

Alles, was MySQL betrifft, kann hier besprochen werden.

Zurücksichern aller Datenbanken nach Manipulation mit vi

Postby glaskugel » 19. September 2009 00:00

Ich sichere so:
Code: Select all
mysqldump -u root -p$MYSQLPWVPS --opt --all-databases > "$MYSQLDUMPBACKUP"


und einezelne DBs so:
Code: Select all
mysqldump -u root -p$MYSQLPWVPS --opt einzelnedb > "$MYSQLDUMPBACKUPEINZELNEDB"


Zurückgesichert wird so:
Code: Select all
mysql -uroot -p$MYSQLPWVPS einzelnedb < "$MYSQLDUMPBACKUPEINZELNEDB"


So weit ist alles klar.

Nun muss ich in mehren DB einen Text ersetzen, das ich mit vi in Backup mit _allen_ DBs machen will.

Bevor ich nun einen Blödsinn beim Editieren und Zurücksichern aller DB mache, frage ich, ob das die richtige Syntax ist, ob da etwas fehlt bzw. ob ich beim Ersetzen auf etwas speziel aufpassen muss. Es wird eine Domain durch eine andere ersetzt.

alle Datenbanken zurücksichern
Code: Select all
mysql -uroot -p$MYSQLPWVPS < "$MYSQLDUMPBACKUP"

(Ich habe root-Rechte am Webserver)

Kann man eigentlich einen Dump im gz-Format direkt importieren?
glaskugel
 
Posts: 21
Joined: 26. October 2008 00:23

Re: Zurücksichern aller Datenbanken nach Manipulation mit vi

Postby Nobbie » 19. September 2009 09:52

glaskugel wrote:Nun muss ich in mehren DB einen Text ersetzen, das ich mit vi in Backup mit _allen_ DBs machen will.


Dafür ist vi nicht das geeignete Werkzeug. Wenn die Datenbank sehr gross ist, wird vi Probleme haben. Viel besser geht das beispielsweise mit dem Kommando "sed" (stream edit). Um in einer Datei beispielsweise alle Domainnamen von http://www.alt.de auf http://www.neu.de zu ersetzen, kann man dieses Kommando benutzen:

Code: Select all
sed 's/www\.alt\.de/www.neu.de/g'  <mysqlbackup-alt.sql >mysqlbackup-neu.sql


Dabei wird auch das Originalbackup nicht angerührt, sondern es wird eine neue Datei geschrieben. Ich habe die "alte" Version mysqlbackup-alt.sql genannt und die neue mysqlbackup-neu.sql, Du mußt natürlich da eigene Namen wählen. Insofern ist das zunächst ungefährlich.

glaskugel wrote:alle Datenbanken zurücksichern
Code: Select all
mysql -uroot -p$MYSQLPWVPS < "$MYSQLDUMPBACKUP"

(Ich habe root-Rechte am Webserver)


Im Prinzip ist das zwar alles richtig, ABER (nur ein Hinweis): "root" und "root" ist nicht das gleiche! Im einen Fall ist das ein User aus der MySQL Datenbank, im anderen Fall ist es ein User aus dem Betriebssystem. Der Name ist zufällig der gleiche, ob das Passwort identisch ist, bezweifle ich (oder Du hast es explizit so eingerichtet), aber Du mußt Dir im klaren sein, wann welcher User root gemeint ist. So brauchst Du nämlich beispielsweise für diese Aktion keine root-Rechte (auf Betriebssystemebene), wenn Du die Daten des MySQL-root-Users in den MySQL-Kommandos benutzt. Denn meistens ist auch auf MySQL "root" mit allen Rechten ausgestattet. Aber die Kommandos selbst (also den mysqldump usw.), die braucht man nicht als "root" selbst auszuführen, die Angabe des Users root via "-u root" bedeutet, dass innerhalb von MySQL der MySQL-User root die Dateien exportieren und importieren soll.

Es ist etwas verwirrend, dass auch bei MySQL der vorinstallierte Administrator den Namen "root" bekommen hat. Vergleiche das mit Deinem Forum, auch dort gibt es einen Administrator (auf Forenebene - der Kontext ist eben entscheident), den hättest auch "root" nennen können (hast Du wahrscheinlich nicht), das wäre dann schon der dritte User "root" in einem anderen Kontext.

glaskugel wrote:Kann man eigentlich einen Dump im gz-Format direkt importieren?


a) was meinst Du damit?
b) Du hast doch gar keine gz-Formate als Sicherungen!?
Nobbie
 
Posts: 6583
Joined: 09. March 2008 13:04

Re: Zurücksichern aller Datenbanken nach Manipulation mit vi

Postby glaskugel » 19. September 2009 11:04

Der Unterschied von root (Linux) und root (MySQL) ist mir schon klar. Ich habe beide Rechte und das nur zur Info erwähnt.

Danke für den Hinweis mit vi. Das Backup hat ca. 60MB.

phpMyAdmin kann sql.gz (gzip) importieren. Geht das auch mit einer Option oder braucht man dafür eine Pipe?
glaskugel
 
Posts: 21
Joined: 26. October 2008 00:23

Re: Zurücksichern aller Datenbanken nach Manipulation mit vi

Postby Nobbie » 19. September 2009 12:26

glaskugel wrote:phpMyAdmin kann sql.gz (gzip) importieren. Geht das auch mit einer Option oder braucht man dafür eine Pipe?


Geht "was" auch mit einer Option? Du kannst wirklich schlecht Fragen formulieren. Ich versuche es mal für Dich:

Frage:
Kennt das Shell-Tool "mysql" (das meinst Du doch wahrscheinlich?) eine Kommandozeilen-Option, so dass man die via stdin eingelesenen Daten auch gepackt (gzip) einlesen kann?

Anwort:
"man mysql" wird es sicherlich wissen, oder auch die Schnellabfrage "mysql --help" könnte es beantworten. Ich würde vermuten, dass es nicht geht, da es (wie Du selbst andeutest), mit einer Pipe sehr einfach geht, weswegen eine Option keine wesentliche Erleichterung geben würde. Das zusätzliche Problem ist ja, dass es verschiedene Packalgorithmen gibt (zip, gzip, bzip, pack usw.), die jede eine andere Option bräuchte (bei "tar" gibt es solche Optionen, "z" für gzip und "j" für "bzip").
Nobbie
 
Posts: 6583
Joined: 09. March 2008 13:04


Return to MySQL

Who is online

Users browsing this forum: No registered users and 3 guests