Резервная база данных с использованием запроса без использования mysqldump

Я хотел бы сбросить мои базы данных в файл.

Некоторые веб-узлы не разрешают удаленный доступ или доступ к командной строке, поэтому я должен сделать это, используя ряд запросов.

Все связанные вопросы говорят "use mysqldump", что является отличным инструментом, но у меня нет доступа к командной строке для этой базы данных.

Мне бы хотелось, чтобы команды CREATE и INSERT создавались одновременно - в основном, такая же производительность, как mysqldump. Является ли SELECT INTO OUTFILE правильной дорогой, чтобы путешествовать, или есть что-то еще, что я пропускаю - или, возможно, это невозможно?

Ответ 1

Использовать mysqldump-php решение с чистым PHP для репликации функции исполняемого файла mysqldump для основных случаев использования в сложных случаях - я понимаю, что у вас может не быть удаленного доступа к CLI и/или mysql, но пока вы может выполняться через HTTP-запрос на httpd на хосте, это будет работать:

Таким образом, вы должны просто запустить следующий чисто PHP script прямо из защищенного каталога в/www/и иметь там файл вывода и захватить его с помощью wget.

mysqldump-php - Чистый PHP mysqldump на GitHub

Пример PHP:

<?php
require('database_connection.php');
require('mysql-dump.php')
$dumpSettings = array(
    'include-tables' => array('table1', 'table2'),
    'exclude-tables' => array('table3', 'table4'),
    'compress' => CompressMethod::GZIP, /* CompressMethod::[GZIP, BZIP2, NONE] */
    'no-data' => false,            
    'add-drop-table' => false,      
    'single-transaction' => true,   
    'lock-tables' => false,        
    'add-locks' => true,            
    'extended-insert' => true      
);

$dump = new MySQLDump('database','database_user','database_pass','localhost', $dumpSettings);
$dump->start('forum_dump.sql.gz');
    ?>

Ответ 2

Используйте/Установите PhpMySQLAdmin на свой веб-сервер и нажмите "Экспорт". Многие веб-хосты уже предлагают вам это как предварительно настроенную службу, и ее легко установить, если у вас ее еще нет (чистый php): http://www.phpmyadmin.net/

Это позволяет вам экспортировать ваши базы данных, а также выполнять другие, в то же время, утомительные операции с базой данных очень быстро и легко - и это работает для более старых версий PHP < 5.3 (в отличие от Mysqldump.php, предлагаемый здесь как другой ответ).

Мне известно, что в этом вопросе говорится, что "используется запрос", но я считаю, что в данном случае необходимо найти любые необходимые средства, если доступ к оболочке недоступен - вот как я приземлился на этой странице, и PhpMyAdmin спас меня!

Ответ 3

С руками, связанными с вашим хозяином, вам может потребоваться довольно экстремальный подход. Используя любую возможность сценариев, которую предоставляет ваш хост, вы можете добиться этого лишь с небольшими трудностями. Вы можете создать безопасную веб-страницу или ссылку на проливную текстовую дампу, известную только вам и достаточно обеспеченную для предотвращения несанкционированного доступа. script для создания содержимого страницы/текста можно записать, чтобы выполнить следующие действия:

Для каждой базы данных, которую вы хотите создать резервную копию:

  • Шаг 1: Запустите SHOW TABLES.

  • Шаг 2: для каждого имени таблицы, возвращаемого вышеуказанным запросом, запустите SHOW CREATE TABLE, чтобы получить выражение о создании, которое вы могли бы запустить на другом сервере для воссоздания таблицы и вывода результатов на веб-страницу. Возможно, вам придется добавить "DROP TABLE X IF EXISTS"; перед каждой операцией create, сгенерированной результатами этих запросов (! не в вашем запросе!).

  • Шаг 3: Для каждого имени таблицы, возвращенного с шага 1, запустите запрос SELECT * и запишите полные результаты. Вам нужно будет применить массовое преобразование к этому результату запроса перед выводом на экран, чтобы преобразовать каждую строку в оператор INSERT INTO tblX и вывести окончательные преобразованные результаты в загрузку веб-страницы/текстового файла.

Окончательная загрузка веб-страницы/текста будет иметь вывод всех операторов создания с защитой "drop table if exists" и вставкой операторов. Сохраните вывод на свой компьютер как файл ".sql" и выполните на любом резервном хосте по мере необходимости.

Мне жаль, что вам нужно пройти через это. Обратите внимание, что сохранение учетных записей пользователей mysql, в которых вы нуждаетесь, - это совсем другое.