Каким будет лучший способ резервного копирования и восстановления дампа mysql с помощью только php?

Я знаю, как вы это делаете с консоли, и знаю, что вы можете выполнять консольные команды с помощью php, но есть ли способ рекурсивно выгружать базу данных в файл, а затем восстанавливать ее из этого файла позже, просто используя php? Я хочу, чтобы он работал на серверах windows и nix.

Я предполагаю, что потребуется перебрать таблицы и строки, но как мне получить их список? Или это вообще можно сделать? Похоже, если бы db был подходящего размера, потребовался бы огромный объем памяти. Мысли?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
0
1 478
5

Ответы 5

mysql_query("SELECT * INTO OUTFILE 'sql/backup.sql' FROM my_table");
mysql_query("LOAD DATA INFILE 'sql/backup.sql' INTO TABLE my_table");

Обратите внимание, что SELECT INTO OUTFILE завершится ошибкой, если файл существует. И процессу базы данных требуется разрешение на запись в целевой каталог.

staticsan 20.01.2009 04:13

Запустите ПОКАЗАТЬ ТАБЛИЦЫ; запрос. Просмотрите результаты и запустите запросы, перечисленные deizel для каждой таблицы.

Удачи!

Вы можете использовать функцию exec() для вызова mysqldump. Это направит вывод mysqldump (экспорт базы данных) обратно в ваш PHP-скрипт, и вы сможете обработать его там, но это необходимо. Это можно использовать для экспорта отдельной таблицы или всей базы данных. Инструмент может быть установлен на клиентском компьютере или сценарий PHP может быть запущен на сервере MySQL.

/path/to/mysqldump --host=[svr] --user=[user] --password=[passwd] [db]

Убедитесь, что пользователь, переданный в MySQL, имеет разрешения SELECT и LOCK TABLE для каждой базы данных, для которой требуется резервное копирование.

Вы можете просто выгрузить его прямо в файл (mysqldump dbname> dump.sql), а затем оттуда сжать его и обработать, а не возвращать в PHP. Это могло вызвать проблемы с памятью в больших базах данных.

nickf 20.01.2009 04:49

Загляните в базу данных mysql.

Почему это было отклонено? Вы можете получить информацию о PK оттуда.

Ian P 20.01.2009 04:53

Я подозреваю, что он был отклонен, потому что ответ слишком расплывчатый, чтобы быть полезным.

Zoredache 20.01.2009 08:29

Этот может помочь с первичными ключами

SHOW CREATE TABLE my_table

Другие вопросы по теме