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