Wie erstelle ich einen MySQL-Datenbankdump mit Chef?

2703
zabumba

Umgebung

Zielsetzung

Ich versuche, meinen Produktions-Wordpress-Server zu replizieren / zu klonen.

Ich würde in der Lage sein, einen Speicherauszug der entfernten Datenbank zu erstellen

mysqldump --databases my_database > dump.sql 

und wiederherstellen

mysql -u my_user -p -D my_database < dump.sql 

Ich habe das ohne Erfolg versucht:

mysql_anybots_connection_info = { :host => 'localhost', :username => 'my_user', :password => "my_password" }  mysql_database "my_database" do connection mysql_connection_info sql "source /path/dump.sql;" end 

und das

mysql_database "my_database" do connection mysql_connection_info sql { ::File.open("/pul/dump.sql").read } action :query end 

Was hat noch weniger funktioniert?

Irgendwelche Vorschläge?

0
Eigentlich sollte das letztere funktionieren. "funktioniert noch weniger" ist eine sehr schlechte Fehlerbeschreibung. Welche Fehlermeldung gibt der Chef aus? Oder gibt es keine Fehlermeldung, aber Ihr Protokoll ist leer? Bitte fügen Sie Ihre Protokollausgabe in Zweifelsfällen ein. StephenKing vor 10 Jahren 1
Hey StephenKing, Sie haben Recht, nach den Protokollen zu fragen, aber seien Sie auf Englisch nicht wählerisch. zabumba vor 10 Jahren 0
Oh, ich wollte mich nicht über das Englisch beschweren. Sorry, wenn es sich so anhört. Es ist nur so, dass Stilaussagen "nicht funktionieren" uns Lesern nicht helfen, während sie Ihnen helfen. StephenKing vor 10 Jahren 0
versuche, ** - c ** zu mysqldump hinzuzufügen Ich habe vergessen, warum, aber es funktioniert für mich. cybernard vor 10 Jahren 0

1 Antwort auf die Frage

0
JoeyG

Ich war einige Zeit frustriert, fand aber schließlich eine Lösung.

In meiner Situation lag das Problem bei "DELIMITER", einem Befehl, der nur vom Befehlszeilenclient mysql verwendet wird. Es ist nicht Teil der API, was der mysql gem verwendet.

QUELLE: https://github.com/opscode-cookbooks/database/issues/75

Um aus dem Dump wiederherzustellen, verwende ich diese Funktion im Rezept:

execute 'restore-databases' do command "mysql -u root -p# -D databaseName < /path/to_dump.sql" end