У меня PostgreSQL 9 работает под Windows 2003 SP2. Я пытаюсь воспроизвести его в системе Fedora 12 с PostgreSQL 9.
Я получаю это сообщение об ошибке:
/usr/pgsql-9.0/bin/postgres -D /var/lib/pgsql/9.0/data/ -p 5432
2011-02-11 17:43:26 ISTFATAL: incorrect checksum in control file
Из-за ограничений брандмауэра я не мог следовать официальные инструкции буквально. Вместо этого я заархивировал содержимое каталога данных, когда сервер был отключен, и скопировал его в ящик Linux. Я проверил оба каталога и не обнаружил несоответствий. Я изменил права так, чтобы только postgres
пользователь и группа имели доступ к файлам.
Что я могу сделать, чтобы репликация работала? Я пробовал использовать pg_dumpall, но система жалуется, что идентификаторы базы данных не совпадают.
Чтобы использовать потоковую репликацию, вы должны использовать одни и те же версии PostgreSQL в одних и тех же операционных системах. Windows и Fedora - это разные ОС, которые не подходят для потоковой репликации.
Если вам нужна репликация между разными версиями и / разными ОС, вы можете взглянуть на Slony.
Сделал это, используя Postgresql 9.5.21 в качестве мастера на Windows 2012 R2
и раб на Ubuntu 14.04
.
Вы должны позаботиться о нескольких вещах:
Итак, я нахожу уже установленный PG на Windows Server. редактировать postgresql.conf
для включения реплики и PITR, и pg_hba.conf
чтобы разрешить соединение.
Затем перешел на Ubuntu, и, остановив PG, я получил от мастера:
pg_basebackup -D /tmp/db/ -X stream -R -U postgres -h ip-master
Затем изменили конфигурацию и заменили каталог данных на /tmp/db
.
Запустите подчиненное устройство, оно работает, но посмотрите на это:
2020-03-18 21: 05: 31.598 CET [44640] LOG: система базы данных готова принимать соединения только для чтения
2020-03-18 21: 05: 31.631 CET [44645] LOG: началась потоковая передача WAL с основного в 36 / C2000000 на временной шкале 1
2020-03-18 21: 05: 31.905 CET [44646] [unknown] @ [unknown] LOG: неполный стартовый пакет
2020-03-18 21: 05: 32.416 CET [44649] postgres @ postgres FATAL: языковой стандарт базы данных несовместим с операционной системой
2020-03-18 21: 05: 32.416 CET [44649] postgres @ postgres ДЕТАЛИ: база данных была инициализирована с помощью LC_COLLATE "Italian_Italy.1252", который не распознается setlocale ().
2020-03-18 21: 05: 32.416 CET [44649] postgres @ postgres СОВЕТ: воссоздайте базу данных с другим языковым стандартом или установите отсутствующий языковой стандарт.
Вот что забавно: репликация работает, но вы не можете подключиться к базам данных.
В любом случае, если вы скопируете необработанный каталог данных в Windows, это будет прекрасно работать.
Конечно, если вы воссоздадите кластер с UTF-8, проблем не возникнет.
n.b .: большое спасибо incognito
и ilmari
на официальном канале IRC PG за подсказками.