PG dump получает ошибку SSL, кажется, тайм-аут


Я пытаюсь загрузить базу данных на свою локальную машину с помощью pg_dump. Я использую следующую команду:

pg_dump --host xx.xx.xx.xx --port xxxx --username "xxx" --password  --format custom --blobs --verbose --file "testing.db" "xxx"

Когда он добирается до сброса последней таблицы в базе данных, он всегда аварийно завершает работу с этой ошибкой:

pg_dump: Dumping the contents of table "versions" failed: PQgetCopyData() failed.
pg_dump: Error message from server: SSL error: sslv3 alert handshake failure
pg_dump: The command was: COPY public.xxx (columns) TO stdout;

Я подключился по SSH к серверу, который немного ближе к серверу, с которого я загружаю (я в Брисбене, он в Сан-Франциско), и смог сделать pg_dump без проблем. Так что я знаю, что сервер баз данных в порядке. Я подозреваю, что это тайм-аут, потому что он добирается до последнего стола прежде чем потерпеть неудачу; если бы это была на самом деле ошибка SSL, я бы ожидал, что она появится раньше. Тем не менее, тайм-аут происходит через разное количество времени каждый раз, когда он терпит неудачу (два самых последних теста потерпели неудачу после 1300 и 1812 годов соответственно).

Любые советы по отладке приветствуются.

Я на OS X 10.8.5. Местных помощью pg_dump является 9.2.4, сервер Ubuntu сервер работает psql в 9.1.9.

1 4

1 ответ:

Это может быть проблема повторного объединения SSL.

Смотрите этот параметр на сервере (postgresql.conf) и соответствующее предупреждение о старых клиентских библиотеках SSL, хотя OS X 10.8 кажется более новой, чем эта.

Из документации 9.1 :

Ssl_renegotiation_limit (целое число)

Specifies how much data can flow over an SSL-encrypted connection before
renegotiation of the session keys will take place.

Повторное согласование уменьшает шансы злоумышленника на криптоанализ когда большие объемы трафика могут быть проверены, но он также несет в себе большой штраф за производительность. Сумма отправленного и полученного трафика равна используется для проверки лимита. Если этот параметр установлен в 0, повторное согласование отключен. Значение по умолчанию-512 МБ.

Примечание: библиотеки SSL до ноября 2009 года небезопасны при использовании SSL повторное согласование, из-за уязвимости в протоколе SSL. В качестве промежуточного решения этой уязвимости некоторые поставщики отгруженные библиотеки SSL не способны провести повторные переговоры. Если таковые имеются библиотеки используются на клиенте или сервер, повторное согласование SSL должно быть инвалидом.

EDIT:

Обновление этого параметра в postgresql.conf не требует перезагрузки сервера, но перезагрузки сервера с помощью /etc/init.d/postgresql reload или service postgresql reload.

Значение также можно проверить в SQL с помощью show ssl_renegotiation_limit;

Даже если размер дампа меньше 512 МБ, может оказаться, что объем передаваемых данных намного больше, так как pg_dump сжимает данные локально при использовании пользовательского формата (--format custom).