Удаленное резервное копирование и загрузка данных общего назначения - включая поддержку InnoDb

Мне нужно решение на основе PHP для резервного копирования базы данных (только данных, а не кода) удаленного сервера и загрузки файла. Я знаю, что решения на основе Shell лучше подходят для таких вещей (запуск сценария оболочки в локальной системе и подключение через SSH к удаленной системе), но требуется решение на основе PHP, в котором знание URL-адреса и учетных данных базы данных достаточно для нетехнический специалист по резервному копированию. Сценарий PHP может быть загружен на удаленный сервер и выполнен.

Ниже приведены особенности Я хочу: -

  • Должен быть хотя бы поддержка движка InnoDb - ограничения внешнего ключа должны быть экспортированы. Никакого вреда, если он поддерживает все другие движки.
  • Должен работать на всех серверах, при наличии максимально возможного количества ограничений (я знаю о нескольких ограничениях, таких как safe_mode enabled, exec () , system () функции отключены и т. Д.). Мне нужно решение очень общего назначения, которое гарантированно будет работать где угодно.

  • Процесс должен быть аутентифицирован паролем (запрашивает учетные данные базы данных).

Теперь я разбираю вещи и начинаю с самых основ. Ниже приведены мои предположения относительно вещей и некоторые вопросы : -

  1. Я не уверен, что системные функции, такие как exec , system и т. Д., Могут быть полностью отключены на серверах виртуального хостинга или нет. Если они отключены так, что их нельзя переопределить, то решение на основе mysqldump , данное здесь , не будет работать повсеместно.
    Вопрос - Если, однако, включен только safe_mode , чтобы системные функции могли выполняться с файлами, находящимися внутри safe_mode_exec_dir , будет ли решение работать надежно?

  2. Я задал вопрос относительно рисков безопасности при выполнении этого с использованием PHP и понял, что резервный файл никогда не должен создаваться (я предполагаю, что в случае решения на основе mysqldump резервное копирование перед загрузкой необходимо создать файл) в веб-пространстве. Таким образом, решение не должно создавать файлы резервных копий там (без проблем, если они создаются в других местах).
    Вопрос - Но разрешат ли это провайдеры общего хостинга?

  3. Я проверил различные общие- целевой пользователь внес классы PHP, такие как phpmysqldump и т. д. и не обнаружил использования решения на основе mysqldump с использованием системных команд для резервного копирования. Они делают такие вещи, как SHOW CREATE TABLE и т. Д., Чтобы получить всю информацию о создании таблиц, запросах на вставку данных, а затем загрузить эти вещи без фактического сохранения их в виде файла (так что никакой угрозы безопасности).
    Вопрос - Правильно ли я заключил, что они делают все эти вещи, не выполняя простой mysqldump , как указано в решении в первом пункте, потому что это не может быть универсальным и безопасным решением?
    Вопрос - Кроме того, я читал, что нет хороших, которые бы работали хорошо. Я лично использовал только этот phpmysqldump , и он выдает мне ошибки mysql, когда я пытаюсь восстановить базу данных с созданной резервной копией. Запросы в файле дампа также несколько отличаются от запросов, созданных модулем экспорта PhpMyAdmin. Я также проверил несколько других бесплатных пользовательских классов PHP. Похоже, что большинство из них не поддерживают поддержку InnoDb и поэтому игнорируют ключевые ограничения, если они присутствуют в базе данных, не присутствуют в экспорте.
    Вопрос - Функциональность экспорта самого PhpMyAdmin, если присутствует отдельно, может быть решение для меня, я думаю. Кто-нибудь знает о какой-либо стабильной библиотеке, подобной этой?

11
задан Community 23 May 2017 в 11:56
поделиться