Резервная база данных с использованием запроса без использования 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, в которых вы нуждаетесь, - это совсем другое.