В настоящее время я занимаюсь исследованием того, как настроить потоковую репликацию для архитектуры HA postgresql. Но этот вопрос актуален и для нас при резервном копировании/восстановлении и обслуживании в смешанных средах в целом.
Наш «основной» сервер postgresql работает на компьютере с Windows. Я использую pg_dump для ежедневного создания логических резервных копий, а также pg_basebackup и архивирование WAL для создания полной резервной копии, которая должна обеспечивать PITR (я еще не проверял это).
Следующим шагом является настройка ведомой машины, которая содержит реплику посредством потоковой репликации. Благодаря лучшей поддержке экосистемы postgresql этот новый хост работает под управлением Ubuntu Server 16.04 LTS.
- С помощью
pg_basebackup -h <main host> -D <datadirectory> --xlog-method=stream
я инициализировал подчиненный каталог данных. - Затем мне пришлось исправить некоторые символические ссылки на файлы табличного пространства, так как они указывали на пути Windows, а не на файловую систему Linux.
- Затем я создал файл recovery.conf с
standby_mode = on
и информацией о подключении. - Я проверил, что сервер настроен как
hot_standby = on
и запустил демон
Теперь я сталкиваюсь с проблемами, поскольку postgres сообщает мне, что "локаль базы данных (English_United_States.1252, которая, очевидно, специфична для Windows) несовместима с операционной системой"
Что ж, я знаю, что 1252 — это локаль, специфичная для Windows, и что я должен использовать en_US.UTF8 в Linux, НО в смешанной среде, подобной этой, я должен:
- Инициировать нашу основную БД в Windows также с локалью en_US.UTF8?
- Это вообще возможно?
- Почему формат pg_basebackup зависит от операционной системы или существует другой формат резервной копии?
- Есть ли какой-либо флаг командной строки для перевода этого?
- Я также был бы признателен за использование только Linux (или даже только Windows), но я боюсь, что наши клиенты будут полагаться на обе операционные системы довольно долго.
pg_basebackup
?.. вы должны использовать pg_dump для перехода с одной ОС на другую - person Vao Tsun   schedule 28.06.2017pg_backup
илиrsync
- другая ОС не будет просто принимать такие файлы. pg_dump не копирует файл, а только данные и поэтому не может использоваться для потоковой репликации. - person Vao Tsun   schedule 28.06.2017pg_dump
неpg_basebackup
. Вы должны быть в состоянии использоватьpg_dump
, но вы говорили оpg_basebackup
выше. - person Craig Ringer   schedule 28.06.2017