Я знаю, как вы это делаете с консоли, и я знаю, что вы можете выполнять консольные команды с php, но будет ли способ рекурсивно выгрузить базу данных в файл, а затем восстановить ее из этого файла позже, просто используя php? Я хочу, чтобы он работал на windows и nix-серверах.
Я предполагаю, что ему нужно будет прокручивать таблицы и строки, но как бы получить их список? Или это можно сделать? Похоже, что если бы db был хорошего размера, это потребовало бы огромного объема памяти. Мысли?
mysql_query("SELECT * INTO OUTFILE 'sql/backup.sql' FROM my_table"); mysql_query("LOAD DATA INFILE 'sql/backup.sql' INTO TABLE my_table");
Вы можете использовать функцию exec()
для вызова mysqldump. Это приведет к выводу вывода mysqldump (экспорта базы данных) обратно в ваш PHP-скрипт, и вы можете справиться с этим там, тем не менее, необходимо. Это можно использовать для экспорта отдельной таблицы или всей базы данных. Инструмент может быть установлен на клиентской машине, или скрипт PHP может быть запущен на сервере MySQL.
/path/to/mysqldump --host=[svr] --user=[user] --password=[passwd] [db]
Убедитесь, что пользователь, переданный MySQL, имеет разрешения SELECT
и LOCK TABLE
для каждой резервной копии базы данных.
Запустите SHOW TABLES; запрос. Пройдите результаты и запустите запросы, указанные deizel для каждой таблицы.
Удачи!
Это может помочь с первичными ключами
SHOW CREATE TABLE my_table
Посмотрите в базу данных mysql.