Chef を使用して MySQL データベース ダンプを作成および復元するにはどうすればよいですか?

Chef を使用して MySQL データベース ダンプを作成および復元するにはどうすればよいですか?

環境

客観的

本番環境のWordpressサーバーを複製/複製しようとしています。

リモートデータベースのダンプを作成できるようにしたい

mysqldump --databases my_database > dump.sql

復元する

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

私はこれを試しましたが、成功しませんでした:

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

この

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

どれがさらに効果が低かったでしょうか?

助言がありますか?

答え1

私はしばらくの間これに悩まされていましたが、ついに解決策を見つけました。

私の場合、問題は「DELIMITER」にありました。これは、mysql コマンドライン クライアントでのみ使用されるコマンドです。これは、mysql gem が使用する API の一部ではありません。

ソース:https://github.com/opscode-cookbooks/database/issues/75

ダンプから復元するには、レシピで次の関数を使用します。

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

関連情報