How do I create & restore a mysql database dump with Chef?

2639
zabumba

Environment

Objective

I am trying to replicate/clone my production Wordpress server.

I'd to be able to create a dump of the remote database

mysqldump --databases my_database > dump.sql 

and restore

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

I have tried this without success:

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 

and this

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

Which worked even less?

Any suggestions?

0
На самом деле последний должен работать. «работает еще меньше» - очень плохое описание ошибки. Что за сообщение об ошибке выдает шеф-повар? Или нет сообщения об ошибке, но ваш журнал пуст? Пожалуйста, вставьте свой вывод журнала в сомнения. StephenKing 9 лет назад 1
Эй, СтивенКинг, Вы правы, что просите логи, но не будьте придирчивы к английскому. zabumba 9 лет назад 0
О, я не хотел жаловаться на англичан. Извините, если это звучит так. Только то, что заявления типа «не работает» не помогают нам читателям, помогая вам. StephenKing 9 лет назад 0
попробуйте добавить ** - c ** в mysqldump Я забыл почему, но у меня это работает. cybernard 9 лет назад 0

1 ответ на вопрос

0
JoeyG

I was frustrated by this for some time, but finally found a solution.

In my situation the problem was with "DELIMITER", which is a command only used by the mysql command line client. It's not part of the API, which is what the mysql gem is using.

SOURCE: https://github.com/opscode-cookbooks/database/issues/75

To restore from the dump I use this function in the recipe:

execute 'restore-databases' do command "mysql -u root -p# -D databaseName < /path/to_dump.sql" end 

Похожие вопросы