Резервное копирование базы данных в файл с CakePHP или обычным PHP - PullRequest
0 голосов
/ 20 января 2011

Я написал сценарий для выгрузки своей базы данных в файл, но он включал в себя запрос базы данных, сохранение результатов в массиве и последующее использование fopen и fwrite для записи файла.

Так как моя база данных очень велика, она пытается выделить слишком много памяти и терпит неудачу.

Кто-нибудь знает простой способ сделать резервную копию моей базы данных в файл SQL так же, как это сделал бы экспорт MySQL, который не будет использовать слишком много памяти?

Ответы [ 5 ]

3 голосов
/ 20 января 2011

Если вы можете запускать внешние программы на сервере, вы можете попробовать mysqldump - он создает дамп указанной базы данных в виде текстового файла.

Пример:

mysqldump -u someuser -p somepassword yourdatabase > /some/path/dump.sql
1 голос
/ 20 января 2011

Да, используйте команду mysqldump, в PHP вы можете назвать ее так:

shell_exec("mysqldump dbname > /some/path/dump.sql");
0 голосов
/ 25 января 2013

Я написал консольное приложение для CakePHP, которое вы можете использовать для резервного копирования вашей базы данных, используя задание cron или, конечно, вручную. https://bitbucket.org/mmahgoub/cakephp-backupme/

Просто введите команду cake backup

Вы можете указать строки, возвращаемые за итерацию, чтобы ограничить использование памяти

cakephp backup default 1000

но это займет больше времени, конечно.

0 голосов
/ 20 января 2011

Зачем изобретать велосипед?mysqldump отлично работает.

0 голосов
/ 20 января 2011

Идеальным решением было бы использование инструмента командной строки mysqldump , так как это очень мало памяти (особенно если вы вызываете его через system / exec и т. Д.) И значительно более эффективен, чем любое решение "в сценарии".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...