如何使用 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 命令行客户端使用的命令。它不是 API 的一部分,而 API 是 mysql gem 正在使用的。

来源: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

相关内容