Mysqldump средствами php
Я неоднократно сталкивался с ситуацией, когда нужно стянуть образ большой базы с хостинга, но к движку mysql нету удаленного доступа. PhpMyAdmin может не справиться с этим заданием, если размер базы составляет несколько сотен мегабайт. Как же быть?
Можно получить образ базы средствами php, без shell_exec. Тоесть сам бинарник mysqldump не выполняется.
Все исходники доступны в репозитории на GitHub
Основным файлом является src/Ifsnop/Mysqldump/mysqldump.php
Для упрощения процедуры я собрал моленький архив.
Его нужно скачать и распаковать
wget http://www.tech-notes.net/wp-content/uploads/2015/04/php-mysqldump.zip
unzip php-mysqldump.zip
После этого заливаем папку mysqldump по фтп на сервер в папку сайта и открываем:
http://www.имя_сайта/mysqldump
Индекс файл выводит форму, в которую нужно забить параметры соединения.
- dbname
- dbuser
- password
- dbhost
Так же его можно дернуть с помощью curl, предовставив все параметры соединения:
curl -X POST http://www.имя_сайта/mysqldump/index.php?dbname=database\&dbuser=mysql_user\&password=mysql_password\&dbhost=host_address
После выполнения, образ базы будет лежать в папке files и будет иметь имя database.sql
Этот файл можно скачивать и заворачивать на новом сервере:
wget http://www.имя_сайта/mysqldump/files/database.sql