Umfeld
- Ubuntu 12.04 Precise64
- Enterprise Chef
- opscode-kochbücher/mysql
- opscode-cookbooks/datenbank
- WordPress 3.9
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