powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как запустить бекап базы из Крона
23 сообщений из 23, страница 1 из 1
Как запустить бекап базы из Крона
    #38600084
trom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 ничего не появляется
...
Рейтинг: 0 / 0
Как запустить бекап базы из Крона
    #38600110
Гость_0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
trom,

в /var/log/ что про cron пишут?
...
Рейтинг: 0 / 0
Как запустить бекап базы из Крона
    #38600143
trom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гость_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"
...
Рейтинг: 0 / 0
Как запустить бекап базы из Крона
    #38600306
daevy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
trom,

а вы перед /usr/bin/pg_dump попробуйте поставить имя пользователя от которого будет запускаться эта команда. например postgres (или pgsql для freebsd)
...
Рейтинг: 0 / 0
Как запустить бекап базы из Крона
    #38600307
daevy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кстати там в /etc/crontab в коменте-примере так и написано user-name
...
Рейтинг: 0 / 0
Как запустить бекап базы из Крона
    #38600312
daevy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и еще между звездочками там должны быть пробелы или в ващем сообщении это форматированием съелось?
вобщем резуюмируя предыдущие сообщения , выглядеть должно от так (кавычки тоже спилите, не злоупотребляйте ими):
*/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, со знаком равенства правильней
...
Рейтинг: 0 / 0
Как запустить бекап базы из Крона
    #38600419
trom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 ..
...
Рейтинг: 0 / 0
Как запустить бекап базы из Крона
    #38600430
моррут
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
trom,

надеюсь, редактировали через crontab -e?
а то, если просто файл отредактировать, крон ещё перезапустить неплохо, он его может и не мониторить
ну и бакапить каждые 5 минут, да ещё и 3 раза подряд одно и тоже как-то не комильфо
...
Рейтинг: 0 / 0
Как запустить бекап базы из Крона
    #38600432
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

Подскажите еще как имя бекапа сделать в виде текущей даты чтобы бекап не переписывался каждый раз ?
...
Рейтинг: 0 / 0
Как запустить бекап базы из Крона
    #38600480
daevy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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")
...
Рейтинг: 0 / 0
Как запустить бекап базы из Крона
    #38600512
trom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
...
Рейтинг: 0 / 0
Как запустить бекап базы из Крона
    #38600549
daevy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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. ну и еще я предполагаю что ваша команда по созданию бэкапа успешно работает при ручном запуске (без крона) и бэкап создается.
...
Рейтинг: 0 / 0
Как запустить бекап базы из Крона
    #38600591
trom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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")

мож кавычки не там или скобки но точно где то тут
...
Рейтинг: 0 / 0
Как запустить бекап базы из Крона
    #38600602
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"
...
Рейтинг: 0 / 0
Как запустить бекап базы из Крона
    #38600676
daevy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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"

может так встанет все на свои места,
YouTube Video
...
Рейтинг: 0 / 0
Как запустить бекап базы из Крона
    #38600733
trom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
daevy,

Все спасибо разобрался, во всем виноват ISP manager, сам крон делает бекап нормально, а если запускать в ручную ISP manager пишет ошибку!

Теперь только вопрос можно как то сделать чтобы файлы бекапа удалялились на автомате, к примеру месяц полежат и удалялись, или лучше все чтобы к примеру 20 записей как наберется самые старые удалялись, это вообще можно сделать в кроне или это уже ему не под силу ? если можно то хотелось бы увидеть пример.
...
Рейтинг: 0 / 0
Как запустить бекап базы из Крона
    #38600747
daevy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 - собственно само удаление
...
Рейтинг: 0 / 0
Как запустить бекап базы из Крона
    #38600934
trom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
daevy,

ок установил период в сутки завтра проверю.

Так а по количеству файлов с нужным именем можно мониторить папку кроном и удалять если наберется больше 30 файлов?

по дате теоретически менее надежно, если бекап базы по каким то причинам перестанет писаться, тот же крон со временем сотрет все резервные копии, а если мониторить количество файлов бекапа, то в любом случае архивы останутся.
...
Рейтинг: 0 / 0
Как запустить бекап базы из Крона
    #38600962
daevy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 и меньше файлов, то ничего не будет удалено.
вобще тут большое поле для экспериментов, удаление процесс труднообратимый, поэтому семь раз отмерь один раз отрежь
...
Рейтинг: 0 / 0
Как запустить бекап базы из Крона
    #38601097
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tromТеперь только вопрос можно как то сделать чтобы файлы бекапа удалялились на автомате, к примеру месяц полежат и удалялись,..просто уберите год, месяц из имени файла

/backup/file.backup-$(/bin/date "+\%d")
...
Рейтинг: 0 / 0
Как запустить бекап базы из Крона
    #38601355
Sergei.Agalakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще хорошая практика в cron вызывать не сразу выполнимую команду, а скрипт, который делает то, что вам надо.
Плюсы:
- в скрипте можно поставить правильные переменные окружения
- скрипту можно дать понятное имя
- в скрипте легко расширить функциональность, например, послать сообщение если бэкап не сработал
...
Рейтинг: 0 / 0
Как запустить бекап базы из Крона
    #38602511
trom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
daevy,

автор /usr/bin/find /backup -type f -atime +30 -name "backup*" -delete
все работает проверил

Но конечно лучше всего удалять файлы из папки бекапа по их количеству, а не по дате
Пытался изучить команды find touch итд дается с трудом, лучше всего понять на примере

допустим в папке /backup нужно мониторить чтобы оставалось ровно 30 файлов (любых не зависимо от имени так проще), если появляется 31 файл, то идет удаление самого раннего какой командой это можно сделать ?
...
Рейтинг: 0 / 0
Как запустить бекап базы из Крона
    #38602564
daevy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
trom,

выше уже написали как это сделать
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как запустить бекап базы из Крона
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]