За последние 24 часа нас посетили 24140 программистов и 1528 роботов. Сейчас ищет 1591 программист ...

Резервное копирование

Тема в разделе "PostgreSQL", создана пользователем Slavka, 18 окт 2013.

  1. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    Ребят поделитесь плиз у кого как сделано сие чудо
    система debian postgresql 9.1 и 9.3 ( для теста накатил)
    интересует запуск по крону
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.088
    Симпатии:
    1.240
    Адрес:
    там-сям
    тебе про крон рассказать или как с дампом базы работать?
     
  3. Yadfewm

    Yadfewm Активный пользователь

    С нами с:
    20 июл 2009
    Сообщения:
    223
    Симпатии:
    0
    Пример не из postgresql
    отправка на яндекс диск:
    Код (Text):
    1. #!/usr/local/bin/php
    2. <?php
    3. $dbhost = "...";
    4. $dbuser = "...";
    5. $dbpass = "...";
    6. $dbname = "...";
    7. $dbdate = date("Y-m-d-H-i-s");
    8. shell_exec("mysqldump --skip-opt --quick -u$dbuser -h$dbhost -p$dbpass $dbname | gzip -c > $dbname-$dbdate.gz");
    9. $yadisk_email='...';
    10. $yadisk_pass='...';
    11. $yadisc_dir='mysqldump/';
    12. shell_exec("curl --user $yadisk_email:$yadisk_pass -T $dbname-$dbdate.gz https://webdav.yandex.ru/$yadisc_dir");
    13. ?>
    Или отправка на мыло
    Код (Text):
    1. #!/bin/bash
    2. DBHOST=localhost
    3. DBUSER=qsllogin
    4. DBPASS=qslpassword
    5. DBNAME=sqldbname
    6. DBDATE=`date +%Y-%m-%d`
    7.  
    8. mysqldump --skip-opt --quick -u$DBUSER -h$DBHOST -p$DBPASS $DBNAME | gzip -c > $DBNAME-$DBDATE.gz
    9.  
    10. TO=youremail@gmail.com
    11. SUBJECT=mysqldump
    12. echo "Body message" | mutt -a $DBNAME-$DBDATE.gz -s "Subject" -- $TO
    Добавлено спустя 1 минуту 25 секунд:
    Отправка на мыло зараза каждый понедельнник утром мылит глаза, будешь на мыло слать, не шли на основное ))
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.088
    Симпатии:
    1.240
    Адрес:
    там-сям
    У меня почему-то создание бэкапа базы в крон НЕ вставлено ))) Наверное я жду неприятностей. Зато есть интересное, как мне кажется, бэкапирование+копирование по требованию - через SSH.

    Настроена авторизация по сертификату. Я не ввожу пароль чтобы зайти по SSH.

    В домашней папке удаленного компа есть под-папка backup и в ней
    скрипт на удаленном хосте dump
    Код (Text):
    1. #!/bin/sh
    2. FILE=bck-`date +%Y%m%d-%H%M`.sql.gz
    3. mysqldump -u dbuser -h host --password="password" --single-transaction dbname | gzip > /home/thisuser/backup/$FILE
    4. echo $FILE
    т.е. имя архива файла с дампом содержим метку времени. В финале я вывожу это имя - ниже поясню зачем.

    Мне удобно держать на локалке копию актуальной базы и отлаживаться на ней. Для дампов у меня на локалке также папка backup. Оригинально, правда!?
    Получаю и развертываю этот дамп так (cygwin помогает мне работать в почти настоящей юниксовой командной строке с нормальным шеллом)))
    скрипт на локалке dump-get-restore
    Код (Text):
    1. #!/bin/sh
    2. echo Dump and gzip on remote...
    3. FILE=`ssh myremotehost.com -t 'cd backup && ./dump' | dos2unix`
    4. echo $FILE
    5.  
    6. echo Get from remote...
    7. scp myremotehost.com:backup/$FILE ~/backup
    8.  
    9. echo Ungzip and restore on local...
    10. zcat ~/backup/$FILE | mysql -u dbuser -h 127.0.0.1 --password="password" dbname
    Поясняю по тексту:
    - удаленно вызываю процедуру создания и архивации дампа. она выдаст echo с именем файла, это имя мне понадобится.
    "| dos2unix" это воркэраунд, т.к. ssh возвращает мне строку с \r\n на конце, что блин чертовски непонятно другим командам. приходится cygwin-ой конвертилкой обрезать \r
    - имя файла попало в переменную FILE
    - снова обращаюсь по ssh, на этот раз команда копирования с удаленного хоста
    - полученный архив по конвееру через распаковщик подаю в локальный mysql

    Профит!
    у меня бэкапы на двух компах и живая копия базы
     
  5. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    и про то и про другое
    [​IMG]
    у меня просто пока все было на тестовых базах .. и потихонечку полегонечку начинают появляться боевые - которые уже хотелось бы бекапить 2 раза в день ( обед и ночью)
    и хочется посмотреть как это сделано у других

    Добавлено спустя 6 минут 54 секунды:
    ребят у меня постгришка о_О
    ладно сейчас почитаю манулы по ключам
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.088
    Симпатии:
    1.240
    Адрес:
    там-сям
    про дамп я рассказал, а про cron:
    по идее надо мне вызвать на удаленном хосте crontab -e и прописать там вызов моего скрипта dump (см. выше)
    типа так:
    Код (Text):
    1. 00 23 * * * /home/thisuser/backup/dump 2>&1>> /dev/null
    чтобы каждый день в 11 вечера создавался очередной архив с дампом