Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit ca1c424

Browse files
authored
zstd -1 no nice
1 parent 50b2dde commit ca1c424

File tree

1 file changed

+15
-14
lines changed

1 file changed

+15
-14
lines changed

‎pg_backup/archive_command.sh‎

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
#!/bin/bash
2-
2+
33
# заглушка, т.к. при изменении значения параметра archive_mode требуется перезагрузка СУБД
44
# exit 0
5-
5+
66
function log() {
77
# echo $(date --rfc-3339=ns) $(hostname -s) $(basename "$SRC_FILE") "1ドル" &>> "$WAL_DIR/archive_wal.log"
88
return 0
99
}
10-
10+
1111
WAL_DIR="/mnt/backup_db/archive_wal/cluster"
1212
SRC_FILE="2ドル" # откуда будем читать WAL файл
1313
DST_FILE="$WAL_DIR/1ドル.zst" # куда будем сохранять WAL файл
1414
LOCK_FILE="$WAL_DIR/1ドル.lock" # этот файл создаётся перед архиваций WAL файла и удаляется после
15-
15+
1616
log "check"
17-
17+
1818
# скрипт должен запускаться с двумя параметрами
1919
test "$#" -ne 2 && echo "Error: 2 number of parameters expected, $# given" >&2 && exit 2
2020
test ! -f "$SRC_FILE" && echo "Error: WAL file '$SRC_FILE' does not exist!" >&2 && exit 1
2121
test -f "$DST_FILE" && test ! -f "$LOCK_FILE" && log "exists" && exit 0
22-
22+
2323
log "does not exist"
24-
24+
2525
: <<'COMMENT'
2626
Для надёжности архивирование WAL файлов могут настроить на мастере и репликах через параметр archive_mode=always.
2727
Запрещаем от разных экземпляров СУБД конкурентную запись WAL файлов в общие сетевые папки.
@@ -32,7 +32,7 @@ COMMENT
3232

3333
SRV_FILE="$WAL_DIR/archive_server.$(hostname -s)" # сервер, на котором планируется архивирование WAL файла
3434
touch -m "$SRV_FILE" || exit # создаём файл или обновляем дату модификации файла, если файл существует
35-
35+
3636
# разрешаем архивацию WAL файла только при наличии жёстких связанных ссылок (единый inode) между файлами $SRV_FILE и $LOCK_FILE
3737
# для отладки и просмотра кол-ва жёстких ссылок на файл используйте утилиту stat (не используйте ls, она кеширует информацию)
3838
if ln -T "$SRV_FILE" "$LOCK_FILE" &> /dev/null; then
@@ -56,21 +56,22 @@ else
5656
echo "Error: WAL file '$DST_FILE' $MESSAGE" >&2
5757
exit 1
5858
fi
59-
59+
6060
# кол-во потоков сжатия
6161
ZSTD_THREADS=$(echo "$(nproc) / 4 + 1" | bc)
62-
62+
6363
# подсчитываем кол-во WAL файлов в очереди на архивирование
6464
ARCHIVE_STATUS_DIR=$(dirname "$SRC_FILE")/archive_status
6565
WAL_FILES_QUEUE=$(find "$ARCHIVE_STATUS_DIR" -maxdepth 1 -type f -name "*.ready" -printf "." | wc --bytes)
66-
66+
6767
STEP=2
6868
# чем больше WAL файлов в очереди, тем меньше степень сжатия (но больше скорость сжатия и размер сжатого файла)
6969
# не ставьте большой уровень компрессии, это приводит к большому потреблению CPU, а экономия на размере файла несущественная
7070
ZSTD_LEVEL=$(echo "(9 * ${STEP} - ${WAL_FILES_QUEUE}) / ${STEP}" | bc)
7171
test "$ZSTD_LEVEL" -lt 1 && ZSTD_LEVEL=1
72-
72+
7373
# архивируем WAL файл
7474
# в zstd без флага -B1M используются не все ядра (из-за небольшого размера файла?)
75-
ionice -c2 -n7 -- nice -n19 -- zstd -q -f -${ZSTD_LEVEL} -T${ZSTD_THREADS} -B1M "$SRC_FILE" -o "$DST_FILE" \
76-
&& rm -f "$LOCK_FILE" && log "saved, unlocked"
75+
COMMAND="zstd -q -f -${ZSTD_LEVEL} -T${ZSTD_THREADS} -B1M '$SRC_FILE' -o '$DST_FILE'"
76+
test $ZSTD_LEVEL -gt 1 && COMMAND="ionice -c2 -n7 -- nice -n19 -- $COMMAND"
77+
$COMMAND && rm -f "$LOCK_FILE" && log "saved, unlocked"

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /