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

이 때문에 한동안 답답했지만 마침내 해결책을 찾았습니다.

내 상황에서는 mysql 명령줄 클라이언트에서만 사용되는 명령인 "DELIMITER"에 문제가 있었습니다. 이는 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

관련 정보