Wie erstelle und stelle ich mit Chef einen MySQL-Datenbank-Dump wieder her?

Wie erstelle und stelle ich mit Chef einen MySQL-Datenbank-Dump wieder her?

Umfeld

Zielsetzung

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

Ich möchte einen Dump der Remote-Datenbank erstellen können

mysqldump --databases my_database > dump.sql

und wiederherstellen

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

Ich habe dies erfolglos 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?

Antwort1

Das hat mich eine Zeit lang frustriert, aber schließlich habe ich eine Lösung gefunden.

In meinem Fall lag das Problem bei „DELIMITER“, einem Befehl, der nur vom MySQL-Befehlszeilenclient verwendet wird. Er ist nicht Teil der API, die das MySQL-Gem verwendet.

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

Zum Wiederherstellen aus dem Dump verwende ich diese Funktion im Rezept:

execute 'restore-databases' do
  command "mysql -u root -p#{node['mysql']['server_root_password']} -D databaseName < /path/to_dump.sql"
end

verwandte Informationen