Мне нужно переместить и обновить очень большую (~ 320 ГБ) базу данных PostGIS с сервера1 (PostgreSQL 9.1, PostGIS 1.5) на сервер2 (PostgreSQL 9.3, PostGIS 2.1).
Процесс обновления хорошо документирован . Проблема в том, что у меня недостаточно места на сервере server1, чтобы скопировать туда файл, проверить его, затем скопировать на сервер server2 и проверить суммы. Я старался:
- Передача дампа с сервера1 на сервер2 с помощью
nc
. - Запись файла дампа непосредственно в файловую систему server2, которая смонтирована на server1 с помощью
sshfs
.
Оба раза файл дампа кажется поврежденным. pg_restore
сломался в разных местах с ошибками вроде этого:
pg_restore: [compress_io] could not uncompress data: incorrect data check
Кто-нибудь может предложить лучший способ сделать это движение и обновить?
ОБНОВЛЕНИЕ: Попробовал NFS (и дал SSHFS еще одну попытку). Понятно, что эти удаленные файловые системы не могут надежно передавать столько данных . В результирующем файле SQL явно отсутствуют блоки, что приводит к синтаксическим ошибкам вроде этого во время импорта:
ERROR: invalid input syntax for integer: "8266UPDATE spatial_ref_sys o set auth_name = n.auth_name, auth_srid = n.auth_srid, srtext = n.srtext, proj4text = n.proj4text FROM _pgis_restore_spatial_ref_sys n WHERE o.srid = n.srid;"
источник
Ответы:
Я бы порекомендовал сбросить базу данных 9.1 с вашего нового сервера 9.3 следующим образом:
Я рекомендую использовать 9.3,
pg_dump
посколькуpg_dump
он всегда обратно совместим, но не совместим напрямую. Другими словами, новееpg_dump
позаботится о любых изменениях синтаксиса, которые требует новый сервер, о которых старая утилита не знает.Убедитесь, что ваш
pg_hba.conf
иlisten_addresses
вpostgresql.conf
настроены так, чтобы вы также могли удаленно подключаться и дамп соответственно.Если вы хотите попробовать сделать дамп и восстановить за один шаг, вы также можете попробовать это:
Надеюсь, это поможет. знак равно
источник