2010-05-31 3 views
2

Что такое командная строка, которую я могу использовать для резервного копирования базы данных MySql каждую неделю в имя файла с датой (чтобы он не сталкивался с предыдущими резервными копиями)?Как запланировать задание cron для резервного копирования базы данных MySql каждую неделю?

Кроме того, разве это разумная стратегия резервного копирования? Моя база данных относительно небольшая (сейчас полный экспорт составляет всего 3,2 мегабайта). Отрицательная ставка относительно низкая. Мне нужно иметь возможность вернуть полный DB, если что-то пойдет не так. И было бы здорово, если бы я мог видеть изменения, которые происходят через промежуток времени.

ответ

1

еженедельное резервное копирование с хрон и туздЫшпр:

Заслуга @timdev ответ (+1) для обеспечения командной строки.

Синтаксис хрон выглядит следующим образом:

* * * * * = [minute] [hour] [day of month] [month] [day of week] 

Однако, так как вы хотели Еженедельное резервное копирование, вы можете указать дни, на которых можно выполнять резервное копирование в третий старт выше (день месяца), в имитировать недельный интервал.

0 4 1,8,15,21,28 * * DATE=`date +%y-%m-%d`; mysqldump -u <dbuser> -p<dbpasswd> <dbname> | gzip > dbname-$DATE.sql.gz 

Это будет запустить его в 4:00 утра 1-го, 8-го, 15-го, 21-го и 28-го числа каждого месяца.

+0

+1 для исправления моего ответа. Не знаю, почему я думал, что он просил ежемесячно, когда «еженедельно» находится в вопросе ... – timdev

+2

Похоже, 0 0 * * 0 - лучший синтаксис, чтобы это было действительно еженедельно. – KevinM

+0

да, 0 для дня недели означает, что оно будет подкреплено каждое воскресенье в полночь, используя эту линию cron – yincrash

0

Вы можете попробовать MySQL Replication

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

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

+1

Репликация! = Резервная копия –

+0

Меня сейчас не интересует сама база данных. Я обеспокоен потерей данных или непреднамеренным редактированием пользователями. – KevinM

+0

Полностью согласен. Это был мой задумчивый выстрел в «Мне нужно иметь возможность вернуть полный DB, если что-то пойдет не так». Я думаю, что репликация делает это и быстро. – bakkal

2

Вы могли бы попробовать что-то вроде этого:

0 4 1 * * DATE=`date +%y-%m-%d`; mysqldump -u <dbuser> -p<dbpasswd> <dbname> | gzip > dbname-$DATE.sql.gz 

Какой будет дамп базы данных (и GZIP его) на первое число каждого месяца в 4:00 утра.