如何使用 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

相關內容