|
|
|
Как запустить бекап базы из Крона
|
|||
|---|---|---|---|
|
#18+
CentOS 6.5 Стоит база Postgres помогите правильно написать строку в /etc/crontab чтобы раз в 15 минут делался бекап всей базы в папку /buckup вот что сам пока смог составить */15**** /usr/bin/pg_dump --host 127.0.0.1 --port 5432 --username "postgres" --no-password --format tar --blobs --verbose --file "/buckup" "Bd_name" после сохранения файла crontab ничего не появляется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2014, 11:02:44 |
|
||
|
Как запустить бекап базы из Крона
|
|||
|---|---|---|---|
|
#18+
trom, в /var/log/ что про cron пишут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2014, 12:32:49 |
|
||
|
Как запустить бекап базы из Крона
|
|||
|---|---|---|---|
|
#18+
Гость_0, в файле cron вот такие записи последние постгресу ничего, во всяком случае 15 минут точно проходят авторMar 30 10:20:01 localhost CROND[7172]: (root) CMD (/usr/local/ispmgr/sbin/cron.sh sbin/ihttpd.check.sh) Mar 30 10:25:01 localhost CROND[7201]: (root) CMD (/usr/local/ispmgr/sbin/cron.sh sbin/ihttpd.check.sh) Mar 30 10:25:01 localhost CROND[7202]: (root) CMD (/usr/local/mgr5/sbin/mgrctl -m core problems.autosolve) Mar 30 10:30:01 localhost CROND[7247]: (root) CMD (/usr/local/ispmgr/sbin/cron.sh sbin/ihttpd.check.sh) Mar 30 10:30:01 localhost CROND[7249]: (root) CMD (/usr/local/ispmgr/sbin/dbcache) Mar 30 10:30:01 localhost CROND[7248]: (root) CMD (/usr/local/mgr5/sbin/mgrctl -m core problems.autosolve) Mar 30 10:35:01 localhost CROND[7310]: (root) CMD (/usr/local/ispmgr/sbin/cron.sh sbin/ihttpd.check.sh) Mar 30 10:35:01 localhost CROND[7311]: (root) CMD (/usr/local/mgr5/sbin/mgrctl -m core problems.autosolve) Mar 30 10:40:01 localhost CROND[7336]: (root) CMD (/usr/local/ispmgr/sbin/cron.sh sbin/ihttpd.check.sh) Mar 30 10:40:01 localhost CROND[7340]: (root) CMD (/usr/local/mgr5/sbin/mgrctl -m core problems.autosolve) Mar 30 10:45:01 localhost CROND[7374]: (root) CMD (/usr/local/mgr5/sbin/mgrctl -m core problems.autosolve) Mar 30 10:45:01 localhost CROND[7375]: (root) CMD (/usr/local/ispmgr/sbin/cron.sh sbin/ihttpd.check.sh) Mar 30 10:50:01 localhost CROND[7410]: (root) CMD (/usr/local/mgr5/sbin/mgrctl -m core problems.autosolve) Mar 30 10:50:01 localhost CROND[7411]: (root) CMD (/usr/local/ispmgr/sbin/cron.sh sbin/ihttpd.check.sh) Mar 30 10:55:01 localhost CROND[7453]: (root) CMD (/usr/local/mgr5/sbin/mgrctl -m core problems.autosolve) Mar 30 10:55:01 localhost CROND[7454]: (root) CMD (/usr/local/ispmgr/sbin/cron.sh sbin/ihttpd.check.sh) Mar 30 11:00:01 localhost CROND[7496]: (root) CMD (/usr/local/ispmgr/sbin/cron.sh sbin/ihttpd.check.sh) Mar 30 11:00:01 localhost CROND[7498]: (root) CMD (/usr/local/ispmgr/sbin/dbcache) Mar 30 11:00:01 localhost CROND[7497]: (root) CMD (/usr/local/mgr5/sbin/mgrctl -m core problems.autosolve) Mar 30 11:01:01 localhost CROND[7515]: (root) CMD (/usr/local/ispmgr/sbin/rotate) Mar 30 11:01:01 localhost CROND[7516]: (root) CMD (run-parts /etc/cron.hourly) Mar 30 11:01:01 localhost run-parts(/etc/cron.hourly)[7516]: starting 0anacron Mar 30 11:01:01 localhost run-parts(/etc/cron.hourly)[7527]: finished 0anacron Mar 30 11:05:01 localhost CROND[7553]: (root) CMD (/usr/local/ispmgr/sbin/cron.sh sbin/ihttpd.check.sh) Mar 30 11:05:01 localhost CROND[7552]: (root) CMD (/usr/local/mgr5/sbin/mgrctl -m core problems.autosolve) полное содержание файла crontab у меня такое авторSHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed */15**** /usr/bin/pg_dump --host 127.0.0.1 --port 5432 --username "postgres" --no-password --format tar --blobs --verbose --file "/buckup" "Bd_name" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2014, 14:10:10 |
|
||
|
Как запустить бекап базы из Крона
|
|||
|---|---|---|---|
|
#18+
trom, а вы перед /usr/bin/pg_dump попробуйте поставить имя пользователя от которого будет запускаться эта команда. например postgres (или pgsql для freebsd) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2014, 19:53:30 |
|
||
|
Как запустить бекап базы из Крона
|
|||
|---|---|---|---|
|
#18+
кстати там в /etc/crontab в коменте-примере так и написано user-name ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2014, 19:54:32 |
|
||
|
Как запустить бекап базы из Крона
|
|||
|---|---|---|---|
|
#18+
и еще между звездочками там должны быть пробелы или в ващем сообщении это форматированием съелось? вобщем резуюмируя предыдущие сообщения , выглядеть должно от так (кавычки тоже спилите, не злоупотребляйте ими): */15 * * * * postrges /usr/bin/pg_dump -h 127.0.0.1 -p 5432 -U postgres -w -F tar -b -v -f /buckup Bd_name p.s. --format=tar и --file=backupname, со знаком равенства правильней ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2014, 20:00:50 |
|
||
|
Как запустить бекап базы из Крона
|
|||
|---|---|---|---|
|
#18+
daevy, Учел замечания делал так */5 * * * * postgres /usr/bin/pg_dump -h 127.0.0.1 -p 5432 -U postgres -w -F tar -b -v -f /buckup/file.backup Bd_name */5 * * * * root /usr/bin/pg_dump -h 127.0.0.1 -p 5432 -U postgres -w -F tar -b -v -f /buckup/file.backup Bd_name */5 * * * * root /usr/bin/pg_dump -h 127.0.0.1 -p 5432 -U postgres -w -F tar -b -v -f /buckup Bd_name ничего не появилось в папке а можно пример просто записи txt файла кроном может у меня этот крон вообще не пашет ? PS права на папку куда пишу ls -la /buckup total 8 drwxrwxrwx 2 root root 4096 Mar 30 11:20 . dr-xr-xr-x. 23 root root 4096 Mar 29 22:40 .. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2014, 01:57:23 |
|
||
|
Как запустить бекап базы из Крона
|
|||
|---|---|---|---|
|
#18+
trom, надеюсь, редактировали через crontab -e? а то, если просто файл отредактировать, крон ещё перезапустить неплохо, он его может и не мониторить ну и бакапить каждые 5 минут, да ещё и 3 раза подряд одно и тоже как-то не комильфо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2014, 03:42:33 |
|
||
|
Как запустить бекап базы из Крона
|
|||
|---|---|---|---|
|
#18+
моррут, crontab -e помог понять что реальный файл крона который работает находиться в "/tmp/crontab.sj33ys" рабочая строка получалась такая @hourly /usr/bin/pg_dump -h 127.0.0.1 -p 5432 -U postgres -w -F tar -b -v -f /buckup/file.backup Bd_name >/dev/null 2>&1 Создал через ISP manager Подскажите еще как имя бекапа сделать в виде текущей даты чтобы бекап не переписывался каждый раз ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2014, 04:53:13 |
|
||
|
Как запустить бекап базы из Крона
|
|||
|---|---|---|---|
|
#18+
tromморрут, crontab -e помог понять что реальный файл крона который работает находиться в "/tmp/crontab.sj33ys" рабочая строка получалась такая @hourly /usr/bin/pg_dump -h 127.0.0.1 -p 5432 -U postgres -w -F tar -b -v -f /buckup/file.backup Bd_name >/dev/null 2>&1 Создал через ISP manager Подскажите еще как имя бекапа сделать в виде текущей даты чтобы бекап не переписывался каждый раз ? вобще перед тем как что-либо помещать в крон нужно убедиться что оно вообще запускается, иначе в крон можно положить заведомо нерабочую команду. после правки /etc/crontab и /etc/cron.* не нужно перезапускать cron, демон отслеживает изменение файлов и автоматически подгружает изменения. /tmp/crontab.sj33ys это временный файл, на самом деле этим временным файлом подменится ваш реальный кронтаб-файл которые хранятся в /var/spool/cron/ чтобы добавить дату в имя бэкапа сделайте так "-f /backup/file.backup-$(/bin/date "+\%Y-\%m-\%d") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2014, 09:09:30 |
|
||
|
Как запустить бекап базы из Крона
|
|||
|---|---|---|---|
|
#18+
daevy, спасибо за инфо как работает крон стало понятнее но ваш пример не запустился полная строка в кроне выглядит так @hourly /usr/bin/pg_dump -h 127.0.0.1 -p 5432 -U postgres -w -F tar -b -v -f /backup/file.backup-$(/bin/date "+\%Y-\%m-\%d") Bd_name >/dev/null 2>&1 пробовал так же с кавычками @hourly /usr/bin/pg_dump -h 127.0.0.1 -p 5432 -U postgres -w -F tar -b -v "-f /backup/file.backup-$(/bin/date "+\%Y-\%m-\%d")" Bd_name >/dev/null 2>&1 При запуске из ISP manager выскакивает code=3 Not exist ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2014, 09:55:27 |
|
||
|
Как запустить бекап базы из Крона
|
|||
|---|---|---|---|
|
#18+
tromdaevy, спасибо за инфо как работает крон стало понятнее но ваш пример не запустился полная строка в кроне выглядит так @hourly /usr/bin/pg_dump -h 127.0.0.1 -p 5432 -U postgres -w -F tar -b -v -f /backup/file.backup-$(/bin/date "+\%Y-\%m-\%d") Bd_name >/dev/null 2>&1 пробовал так же с кавычками @hourly /usr/bin/pg_dump -h 127.0.0.1 -p 5432 -U postgres -w -F tar -b -v "-f /backup/file.backup-$(/bin/date "+\%Y-\%m-\%d")" Bd_name >/dev/null 2>&1 При запуске из ISP manager выскакивает code=3 Not exist 1. используйте первый вариант, уберите там зануление ошибок (>/dev/null 2>&1) если есть ошибки, то вывод stderr должен отобразиться в /var/log/cron (или syslog). 2. проверьте что date находится именно в /bin (я написал навскидку). 3. проверьте что тот путь куда вы пытаетесь положить дамп существует, а то вы используете buckup, а я backup ))) p.s. ну и еще я предполагаю что ваша команда по созданию бэкапа успешно работает при ручном запуске (без крона) и бэкап создается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2014, 10:35:20 |
|
||
|
Как запустить бекап базы из Крона
|
|||
|---|---|---|---|
|
#18+
daevy, 1) >/dev/null 2>&1 это сам ISP manager добавляет я пишу без этого 2) Проверил файл date в /bin есть 3) Думал в этом проблема но не помогло Вот не рабочий вариант /usr/bin/pg_dump -h 127.0.0.1 -p 5432 -U postgres -w -F tar -b -v -f /buckup/file.backup-$(/bin/date "+\%Y-\%m-\%d") Bd_name А так все работает /usr/bin/pg_dump -h 127.0.0.1 -p 5432 -U postgres -w -F tar -b -v -f /buckup/file.backup Bd_name то есть проблема где то в -$(/bin/date "+\%Y-\%m-\%d") мож кавычки не там или скобки но точно где то тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2014, 11:24:34 |
|
||
|
Как запустить бекап базы из Крона
|
|||
|---|---|---|---|
|
#18+
вот так тоже все работает /usr/bin/pg_dump -h 127.0.0.1 -p 5432 -U postgres -w -F tar -b -v -f /buckup/file.backup-$(/bin/date "") Bd_name то есть проблема где то в "+\%Y-\%m-\%d" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2014, 11:36:33 |
|
||
|
Как запустить бекап базы из Крона
|
|||
|---|---|---|---|
|
#18+
tromвот так тоже все работает /usr/bin/pg_dump -h 127.0.0.1 -p 5432 -U postgres -w -F tar -b -v -f /buckup/file.backup-$(/bin/date "") Bd_name то есть проблема где то в "+\%Y-\%m-\%d" может так встанет все на свои места, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2014, 12:34:16 |
|
||
|
Как запустить бекап базы из Крона
|
|||
|---|---|---|---|
|
#18+
daevy, Все спасибо разобрался, во всем виноват ISP manager, сам крон делает бекап нормально, а если запускать в ручную ISP manager пишет ошибку! Теперь только вопрос можно как то сделать чтобы файлы бекапа удалялились на автомате, к примеру месяц полежат и удалялись, или лучше все чтобы к примеру 20 записей как наберется самые старые удалялись, это вообще можно сделать в кроне или это уже ему не под силу ? если можно то хотелось бы увидеть пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2014, 13:11:21 |
|
||
|
Как запустить бекап базы из Крона
|
|||
|---|---|---|---|
|
#18+
tromdaevy, Все спасибо разобрался, во всем виноват ISP manager, сам крон делает бекап нормально, а если запускать в ручную ISP manager пишет ошибку! Теперь только вопрос можно как то сделать чтобы файлы бекапа удалялились на автомате, к примеру месяц полежат и удалялись, или лучше все чтобы к примеру 20 записей как наберется самые старые удалялись, это вообще можно сделать в кроне или это уже ему не под силу ? если можно то хотелось бы увидеть пример. поставьте в тот же крон где делается бэкап следующий таск X X X X X /usr/bin/find /backup -type f -atime +30 -name "backup*" -delete -type f - ищем файлы -atime +30 - старше 30 дней -name "backup*" тут лучше строго сказать что мы ищем дабы под удаление не попалось чего лишнего)))) -delete - собственно само удаление ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2014, 13:15:51 |
|
||
|
Как запустить бекап базы из Крона
|
|||
|---|---|---|---|
|
#18+
daevy, ок установил период в сутки завтра проверю. Так а по количеству файлов с нужным именем можно мониторить папку кроном и удалять если наберется больше 30 файлов? по дате теоретически менее надежно, если бекап базы по каким то причинам перестанет писаться, тот же крон со временем сотрет все резервные копии, а если мониторить количество файлов бекапа, то в любом случае архивы останутся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2014, 14:59:03 |
|
||
|
Как запустить бекап базы из Крона
|
|||
|---|---|---|---|
|
#18+
trom, тут нужно искать, затем сортировать, оставлять например 5 штук остальное удалять. вот пример для тренировки $ touch 1/backup-2014-03-{01..31}.sql $ find 1/ -type f |sort -nk1 |head -n -5 |xargs rm $ ls -1 1/ total 0backup-2014-03-27.sql backup-2014-03-28.sql backup-2014-03-29.sql backup-2014-03-30.sql backup-2014-03-31.sql сначала создали 30 файлов, типа бэкапы, потом прошлись файндом, отсортировали, убрали последние 5 и выпилили остальных. то есть если в каталоге 5 и меньше файлов, то ничего не будет удалено. вобще тут большое поле для экспериментов, удаление процесс труднообратимый, поэтому семь раз отмерь один раз отрежь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2014, 15:17:42 |
|
||
|
Как запустить бекап базы из Крона
|
|||
|---|---|---|---|
|
#18+
tromТеперь только вопрос можно как то сделать чтобы файлы бекапа удалялились на автомате, к примеру месяц полежат и удалялись,..просто уберите год, месяц из имени файла /backup/file.backup-$(/bin/date "+\%d") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2014, 16:44:50 |
|
||
|
Как запустить бекап базы из Крона
|
|||
|---|---|---|---|
|
#18+
Вообще хорошая практика в cron вызывать не сразу выполнимую команду, а скрипт, который делает то, что вам надо. Плюсы: - в скрипте можно поставить правильные переменные окружения - скрипту можно дать понятное имя - в скрипте легко расширить функциональность, например, послать сообщение если бэкап не сработал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2014, 21:25:18 |
|
||
|
Как запустить бекап базы из Крона
|
|||
|---|---|---|---|
|
#18+
daevy, автор /usr/bin/find /backup -type f -atime +30 -name "backup*" -delete все работает проверил Но конечно лучше всего удалять файлы из папки бекапа по их количеству, а не по дате Пытался изучить команды find touch итд дается с трудом, лучше всего понять на примере допустим в папке /backup нужно мониторить чтобы оставалось ровно 30 файлов (любых не зависимо от имени так проще), если появляется 31 файл, то идет удаление самого раннего какой командой это можно сделать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 05:42:33 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=130&tid=1998766]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
13ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 291ms |

| 0 / 0 |
