Как создать резервную копию исполняемого файла MySQL? - PullRequest
0 голосов
/ 13 января 2010

Я использую php, mysql, и мой сервер - Windows Server 2003 с IIS6.

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

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

Ответы [ 6 ]

2 голосов
/ 13 января 2010

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

mysqldump --single-transaction --hex-blob --opt -e --quick --quote-names -r put-your-backup-filename-here put-your-database-name-here
1 голос
/ 13 января 2010

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

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

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

C.

0 голосов
/ 13 января 2010

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

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

#! /bin/bash

NOW=`date +"%Y-%m-%d"`
MAIL_TO="email@example.com";
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 голосов
/ 13 января 2010

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

0 голосов
/ 13 января 2010

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

0 голосов
/ 13 января 2010

Windows имеет встроенный планировщик задач , который вы можете использовать для резервного копирования.

...