У меня довольно большой db в MySql, и мне нужно делать резервные копии этого каждый день или около того.
Мне нужно иметь возможность делать резервные копии с любого компьютера, поэтому я подумал о том, чтобы сделать php-скрипт для этого и поместить этот PHP-скрипт в онлайн (без учета защиты паролем и авторизации и т. Д., Чтобы я мог получить к нему доступ).
Интересно, однако, как это делается правильно?
Какие команды следует использовать, и можно ли изменить настройки резервной копии (например, Add AUTO_INCREMENT value = true
)?
Я был бы признателен за примеры …
Кроме того, если это плохой метод (небезопасный или, возможно, дает плохие резервные копии с плохими файлами sql), какой другой метод будет предпочтительнее? У меня есть доступ к оболочке, и у меня есть VPS (сервер ubuntu).
Моя версия Mysql – 5.1
благодаря
В резервную копию базы данных нет необходимости включать PHP. Вам просто нужен сценарий, который использует mysqldump для резервного копирования базы данных, и задание CRON для периодического выполнения скрипта:
mysqldump db_name > backup-file.sql
… создаст резервную копию вашей базы данных в файл, перенаправив вывод из mysqldump на указанное имя файла.
Питер поднял хороший момент, что команда даст вам только один день архивирования – любой архив в течение двух дней будет перезаписан. Это позволит вам иметь скользящий журнал, возвращающийся семь дней:
CURRENT_DAY_OF_WEEK=`date '+%u'` FILENAME="mysqlbackup_"$CURRENT_DAY_OF_WEEK".sql" mysqldump db_name > $FILENAME
Также имейте в виду, что применяются права доступа к файлам – невозможно записать файл, если пользователь, выполняющий скрипт, не имеет прав доступа к папке.
Я согласен с OMG Ponies mysqldump + script – путь.
Единственным другим вариантом, который я использую, является настройка подчиненного сервера. Это обеспечивает почти мгновенную резервную копию аппаратного сбоя и может находиться в другом здании на вашем основном сервере. Если у вас нет большого количества записей в базе данных, вам не обязательно нужен очень мощный сервер, поскольку он не обрабатывает запросы, а только обновления баз.