У меня есть скрипт [1], который выполняется демоном Postgres (архиватором WAL) и завершается с кодом завершения 12; см. [2]. Но если я выполняю тот же сценарий в сеансе терминала /ssh, он завершается успешно; см. [3].
Пользователь BasketCase на IRC-канале freenode #rsync пытался его диагностировать, но не смог далеко уйти. Смотрите [4] для разговора.
Это происходит не на всех машинах, на которых он используется, но я сталкиваюсь со вторым разом.
Любая помощь будет высоко оценена.
Заранее спасибо.
[1] Скрипт архивации WAL
#!/bin/bash
# $1 is the %p substituted by postgres in archive_command
# $2 is the %f substituted by postgres in archive_command
# This script backs up the WAL file to every replica, and
# exits with the last failure code, if any.
final_exit_code=0
replicas=$(grep REPLICA /some/file | sort | uniq | cut -d = -f 2-)
for replica_url in $replicas; do
echo Sending WAL file to $replica_url
rsync --timeout=10 -avz -e 'ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=10 -i /opt/PostgresPlus/CloudDB/data/cluster_ssh.key' "$1" root@$replica_url:/mnt/pcs/wal_archive/"$2"
exit_code=$?
if [ $exit_code -ne 0 ] ; then final_exit_code=$exit_code ; fi
done
exit $final_exit_code
[2] Отправка файла WAL 10.33.177.184 rsync: соединение неожиданно закрыто (получено 0 байтов) [sender] rsync error: ошибка в потоке данных протокола rsync (код 12) на io.c (600) [sender = 3.0. 6] LOG: команда архивирования завершилась неудачно с кодом завершения 12 ПОДРОБНОЕ ОПИСАНИЕ: Команда архива завершилась неудачно: ./wal_archive.sh pg_xlog/0000000100000005000000EE 0000000100000005000000EE
[3] $ ./wal_archive.sh pg_xlog/0000000100000005000000EE 0000000100000005000000EE Отправка файла WAL в 10.33.177.184 Предупреждение: навсегда добавлен «10 .33.177.184» (RSA) в список известных хостов. отправка списка добавочных файлов 0000000100000005000000EE
отправлено 5180930 байт получено 31 байт 941992,91 байт / с общий размер 16777216 ускорение составляет 3,24