2010-08-29 8 views
4

У меня довольно большой db в MySql, и мне нужно делать резервные копии этого каждый день или около того.Резервное копирование базы данных MySql с PHP

Мне нужно иметь возможность делать резервные копии с любого компьютера, поэтому я подумал о том, чтобы сделать php-скрипт для этого и поместить этот скрипт в PHP (отключение с защитой паролем и авторизацией и т. Д., Чтобы я мог получить к нему доступ) ,

Интересно, как это делается правильно?

Какие команды следует использовать, и можно ли изменить настройки резервной копии (например, Add AUTO_INCREMENT value = true)?

Я был бы признателен за примеры ...

Кроме того, если это плохой метод (небезопасно, или, возможно, дает плохие копии с плохим SQL файлов), какой другой способ будет предпочтительнее? У меня есть доступ к оболочке, и у меня есть VPS (сервер ubuntu).

Моей Mysql версия 5.1

Благодаря

ответ

8

Там нет необходимости включать PHP в резервной копии базы данных. Вам просто нужен сценарий, который использует mysqldump для резервного копирования базы данных и setup a CRON job периодически выполнять скрипт:

mysqldump db_name > backup-file.sql 

... резервная копия будет базы данных в файл, перенаправив вывод из туздЫшпр в указанный файл имя.

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

CURRENT_DAY_OF_WEEK=`date '+%u'` 
FILENAME="mysqlbackup_"$CURRENT_DAY_OF_WEEK".sql" 

mysqldump db_name > $FILENAME 

быть также известно, что будет применять права доступа к файлам - не может записать файл, если пользователь выполняет сценарий не имеет права доступа к папке.

+2

Конечно, вы, вероятно, не должны писать один и тот же файл каждый день. Может быть, на текущей дате будет указано имя файла или некоторые такие ... –

+1

@Peter Ajtai: точка Goood, обновлена. –

+0

Не отправляйте PHP для работы cron mans – Xeoncross

0

Я согласен с OMG Ponies mysqldump + script - путь.

Единственным другим вариантом, который я использую, является создание подчиненного сервера. Это обеспечивает почти мгновенную резервную копию аппаратного сбоя и может находиться в другом здании на вашем основном сервере. Если у вас нет большого количества записей в базе данных, вам не обязательно нужен очень мощный сервер, поскольку он не обрабатывает запросы, а только обновления баз.