резервное копирование postgres с WAL - PullRequest
0 голосов
/ 13 мая 2019

Я ни в коем случае не администратор БД, поэтому, пожалуйста, не стреляйте в меня, если я делаю это совершенно неправильно ...

Мне нужно добавить некоторое архивирование в производительную базу данных postgres (новейшая версия в Docker-контейнере) и попытаться создать несколько сценариев для использования с WAL.

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

Буду очень рад любым комментариям по этому поводу ...

Настройки дБ

wal_level = replica
archive_mode = on
archive_command = '/archive/archive_wal.sh "%p" "%f"'
archive_timeout = 300

еженедельный скрипт:

#!/bin/bash

#create base archive dir
#base_arch_dir=/tmp/archive/
base_arch_dir=/archive/
if [ ! -d "$base_arch_dir" ]; then
  mkdir "$base_arch_dir"
  chown -R postgres:postgres "$base_arch_dir"
fi

#create dir for week
dir="$base_arch_dir"$(date '+%Y_%m_%d__%H_%M_%S')
if [ ! -d "$dir" ]; then
  mkdir "$dir"
  chown -R postgres:postgres "$dir"
fi

#change/create the symlink
newdir="$base_arch_dir"wals
ln -fsn "$dir" "$newdir"
chown -R postgres:postgres "$newdir"

#do the base backup to the wals dir
if pg_basebackup -D "$newdir" -F tar -R -X fetch -z -Z 9 -U postgres; then
  find "$base_arch_dir"* -type d -mtime +31|xargs rm -rf
fi

скрипт crchive:

#!/bin/bash

set -e

arch_dir=/archive/wals
arch_log="$arch_dir/arch.log"

if [ ! -d "$arch_dir" ]; then
  echo arch_dir '"$arch_dir"' does not exist >> "$arch_log"
  exit -1
fi

#get the variables from postgres
p=$1
f=$2

if [ -f "$arch_dir"/$f.xz ]; then 
  echo wal file '"$arch_dir"/$f.xz' already exists
  exit -1
fi

pxz -2 -z --keep -c $p > "$arch_dir"/$f.xz

Заранее спасибо

1 Ответ

1 голос
/ 13 мая 2019

Собрать собственные сценарии архивации не так уж и сложно, но есть несколько вещей, которые нужно отслеживать, потому что когда вам нужны ваши резервные копии, они действительно нужны. Есть несколько упакованных систем резервного копирования для PostgreSQL. Вы можете найти эти два хороших места, чтобы начать, но другие доступны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...