Каталог решений - 1С и Postgres: Бэкап

1С и Postgres: Бэкап

1С и Postgres: Бэкап

В наличии

Для начала пару слов о том, зачем и когда он нужен. Ни для кого не секрет, что сервер это не просто компьютер, а надежный компьютер! Поэтому, если он не сломался в первую неделю после запуска, то не сломается еще очень долго. И поэтому у вас всегда есть возможность какое-то время оставаться вовсе без резервной копии

Категория:

Описание

Всем привет!

Надеюсь кто-то уже читал мою статью 1С и Postgres: Введение? Если нет, ну и черт с ней 🙂

Сегодня напишу про нюансы с бэкапом.

Самым узким местом любого сервера на сегодняшний день есть его дисковая подсистема. И поэтому все стараются сделать так, чтобы снизить риски именно в этой части.

Поскольку бэкап подразумевает что вы чего-то боитесь, это значит что есть РИСК.

Какие могут быть риски: вылетел винт, вылетела оперативная память, вылетела сетевуха, вылетела мать и пр. Все эти риски приводят к одному результату — краху БД.

Все риски, кроме «вылетел винт» я опишу в статье 1С и Postgres: Кластер.

Существует три класических схемы построения хранилища:

1. Сервер —  Диск

2. Сервер —  Рейд — Диски

3. Сервер — FB/SCSI/SAS свитч — Сторадж (Райд+Диски)

Нюанс 1. Бэкап для случая «Сервер —  Диск»

Если у вас именно так все организованно, то вам обязательно и как минимум одн раз в день нужно делать бэкап. Привожу пример:

#pg_dump $d | gzip -c > $DIR/$d.dmp.gz

где $d — имя вашей БД, а $DIR — каталог для бэкапов

Но это не все. Смысла хранить бэкап там же где и сама БД нет смысла, поэтому позаботьтесь о копии на SAN или NAS или USB HDD или флешку. Пример:

#scp -P $PORT $DIR/$d.dmp.gz $RHOST:$RDIR

где $PORT — порт вашего ssh, $RHOST — удаленный хост, куда копируем, $RDIR — каталог на удаленном хосте куда копируем

Как скопировать на USB или samba хост, google  найдет вам много примеров.

Важно! Копируйте бэкап в течении недели в разные каталоги. Пример:

DAY=`date +%u`

RDIR=/var/lib/pgsql/backup/daily/$DAY

       `ssh -p $PORT $RHOST «rm -f $RDIR/$d.dmp.gz»`

        if `scp -P $PORT $DIR/$d.dmp.gz $RHOST:$RDIR`
        then
               echo «: Remote copy $dc backup to $RHOST/$RDIR complete.»
            else
                echo «: Remote copy $dc.dmp.gz to $RHOST FAILED.»
        fi

Здесь главное обратить внимание на DAY. $DAY — это день недели от 1 до 7. Таким образом у вас будет хранится постоянно семь актуальных бэкапов ваших БД.

Нюанс 2. Бэкап для случая «Сервер —  Райд — Диск» и «Сервер — FB/SCSI/SAS свитч — Сторадж (Райд+Диски)«

В таком случае риск потери данных ниже, но все же есть.

Райд (RAID) — это ваш способ выиграть время! Используйте RAID 0 только если вы уверены, что вы в безопасности. В остальных случаях это:

а) много дисков, 6 шт и более — RAID 10

б) много дисков, но скорость не важна, гланое надежность — RAID 5 или RAID 6

в) мало дисков, до 6 шт — RAID 5

г) 2 диска — RAID 1

в) супернадежность и много дисков — RAID 50 или RAID 60

Бэкап делаем также как описано выше.

Заключение

Сделав бэкап тем же pg_dump, если есть возможность, обязательно распакуйте и проверьте его.

Вы спросите как? Просто залейте его в новую БД. Мало сделать бэкап, нужно еще быть уверенным, что он не битый!

Я на практике применяю Bacula для  централизованного бэкапа всего что нужно.

has been added to your cart:
Оформление заказа