2010-01-13 3 views
-1

Я использую php, mysql, а мой сервер - Windows Server 2003 с IIS6.Как создать резервный исполняемый файл MySQL?

Я планирую сделать резервную копию моей базы данных на почасовой основе. Я могу сделать cronjob, проверенный по дате записи & время в файл журнала. Он работает отлично.

Теперь я хочу использовать cronjob для резервного копирования моих баз данных. Как мне это сделать? Создайте скрипт php и пусть он запускается каждый час?

ответ

0

Windows имеет встроенный Task Scheduler, который вы можете использовать для выполнения своих резервных копий.

+0

Не могли бы вы подробнее объяснить, как использовать планировщик заданий для резервного копирования баз данных на почасовой основе? – mysqllearner

0

Используйте инструмент mysqldump, чтобы сбрасывать базы данных в файл.

2

mysqldump. Пример (с параметрами, которые я обычно использую):

mysqldump --single-transaction --hex-blob --opt -e --quick --quote-names -r put-your-backup-filename-here put-your-database-name-here 
+0

Нужно ли создавать командный файл и запускать его каждый час? Я новичок в mysqldumb, вы можете подробнее рассказать об этом? – mysqllearner

+0

Да, сделайте это в .bat-файле. Mysqldump запускается из командной строки (например, «DOS»). –

0

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

+0

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

0

Редактировать: Этот скрипт предназначен для Unix (или вариантов).

Я хотел сделать то же самое (включая отправку по электронной почте резервной копии и архивирования моего кода/страниц, а) и написал что-то вроде этого:

#! /bin/bash 

NOW=`date +"%Y-%m-%d"` 
MAIL_TO="[email protected]"; 
MAIL_SUBJECT="Hourly backup" 
MAIL_MESSAGE="mail-message"; 

DB_FILE="backup-database-$NOW.sql.gz" 
SITE_FILE="website-$NOW.tar.gz" 

echo "Database dump:" >> $MAIL_MESSAGE 
mysqldump --defaults-extra-file=.mysql-pwd --add-drop-table -C my_databse 2>> $MAIL_MESSAGE | gzip > $DB_FILE 2>> $MAIL_MESSAGE 

echo "Site dump (www and php-include):" >> $MAIL_MESSAGE 
tar -zcf $SITE_FILE /path/to/www/ /path/to/php-include/ 2>> $MAIL_MESSAGE 

echo >> $MAIL_MESSAGE 
echo >> $MAIL_MESSAGE 
echo "Done" >> $MAIL_MESSAGE 

mutt -s "$MAIL_SUBJECT" -a $DB_FILE -a $SITE_FILE $MAIL_TO < $MAIL_MESSAGE 
+0

Это круто. Может быть, я знаю, могу ли я использовать этот скрипт? Какие-либо проблемы возникли? – mysqllearner

+0

Конечно, вы можете использовать (и изменять для своих целей), поэтому я разместил его. Я запускаю его более полугода (еженедельное резервное копирование), и я по-прежнему получаю электронную почту каждую неделю. – Veger

+0

Это так холодно. Не могли бы вы помочь мне в этом? Как ты это делаешь? Я отредактировал ваш скрипт в текстовой панели, и теперь, какой формат файла я должен сохранить как?И как я могу настроить его ежедневно/еженедельно/ежемесячно? Пожалуйста, помогите – mysqllearner

1

Как уже написано, инструмент туздЫшпра является простейшее решение, однако, если у вас есть большая база данных, даже с настройкой --quick, я бы рекомендовал вам немного экспериментировать. Со старым движком C-ISAM запросы обрабатываются по одному за раз. Хотя это не проблема с InnoDB, я не уверен, что MySQL теперь поддерживает полные параллельные запросы. Ваша резервная копия может повлиять на обработку транзакций.

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

В качестве альтернативы вы можете переключить зеркальное отображение на уровень ОС и выполнить снимок уровня диска - но вам необходимо остановить транзакции в базе данных и очистить его до создания моментального снимка (или разбиения зеркала).

C.

+0

+1 для создания (полной) резервной копии на подчиненном устройстве. Хотел бы я дать еще +1 для упоминания транзакций и/или согласованности данных. – VolkerK

Смежные вопросы