Сервер баз данных не обнаружен 1с postgresql

Обновлено: 07.07.2024

Сервер 1С Предприятия. Часть 4 Установка PostgreSQL (Ethersoft) на платформe Linux (Ubuntu).

Сервер СУБД является важной составляющей частью сервера 1С, но при этом является полностью самостоятельным узлом. Один и тот-же сервер 1С может (с небольшими ограничениями) работать с любой из поддерживаемых СУБД. На платформе Linux заслуженной популярностью пользуется бесплатная СУБД PostgreSQL и сегодня мы поговорим об ее установке.

Вначале, как всегда, немного теории. Следует помнить, что в силу особенностей реализации платформы 1С Предприятие PostgreSQL в версии "из коробки" работать не будет. Основная проблема заключается в различных механизмах блокировки, используемых СУБД и 1С. Подробнее об этом можно узнать из комментария сотрудника 1С Дмитрия Русанова:

"Применение табличных блокировок в PostgreSQL в автоматическом режиме не является искусственным. 1С:Предприятие 8 в автоматическом режиме блокировок реализует подход неизменности прочитанных в рамках транзакции данных. PostgreSQL, как типичный версионник, не накладывает никаких блокировок на прочитанные данные (в отличие от DB2 или SQL Server - блокировочников), то для обеспечения идентичной функциональности приходится использовать эти самые табличные блокировки.

В управляемом режиме блокировок управление целостностью данных в транзакции отдано на откуп разработчику конфигурации. Там, соответственно, табличные блокировки не используются. Конечно, блокировка на уровне таблицы - это довольно грубо. Но в данном случае было решено принести в жертву параллельность для того, чтобы обеспечить идентичную функциональность."

Для того, чтобы PostgreSQL умел накладывать табличные блокировки 1С выпускает набор специальных патчей и уже готовые сборки СУБД для Windows и RedHat-совместимых систем. Пользователям Debian-совместимых систем лучше всего использовать альтернативную сборку PostgreSQL от компании Etersoft, которую можно взять на их FTP-сервере. На текущий момент последней версией является 9.0.4 которая доступна в версиях для 32-битных и 64-битных систем.

ВАЖНО! Мы не рекомендуем использовать сборки PostgreSQL от Ethersoft новее, чем 9.0.x, так как они содержат ошибку в библиотеке fasttrun.so, что деалет невозможной работу с платформой 1С:Предприятие. На настоящий момент ошибка наблюдается в версиях 9.1.x и 9.2.x.

Будем считать что необходимые пакеты скачаны и расположены на сервере, а читатель обладает базовыми навыками работы в командной строке Linux. Для установки СУБД мы будем использовать Ubuntu Server 10.04.4 64-бита.

Прежде всего создадим нужные локали:

Если система была установлена с языком отличным от русского, то дополнительно необходимо сделать основной русскую локаль:

Теперь переконфигурируем локали:

И перезагрузим систему.

Затем перейдем в каталог с пакетами PostgreSQL (в нашем случае директория pgsql904 в домашней папке) и установим их:

После чего система сама найдет и установит недостающие пакеты. На этом установку PostgreSQL можно считать законченной, но, перед тем как его использовать, необходимо внести некоторые изменения в настройки системы. В файл /etc/sysctl.conf необходимо добавить две строки, отвечающие за размер разделяемого сегмента памяти:

Сохраним файл и применим настройки:

Теперь можно попробовать запустить PostgreSQL:

Если все сделано правильно произойдет запуск и начальная инициализация сервера баз данных. Теперь зададим пароль суперпользователю СУБД postgres. Для этого в конфигурационном файле PostgreSQL /var/lib/pgsql/data/pg_hba.conf найдем следующую строку:

и заменим ident на trust. Сохраним файл и перезапустим СУБД:

и выполним следующую команду:

где password - желаемый пароль. После чего снова заменим trust на ident и еще раз перезапустим PostgreSQL.

На этом установку можно считать законченной. Не забудьте на всех машинах, которые будут работать с данным сервером, добавить в hosts запись связывающую ip-адрес сервера с его сетевым именем, либо добавьте соответствующую запись типа A на ваш DNS-сервер.

Для примера рассмотрим создание новой информационной базы на сервере 1С с использованием только что настроенного сервера БД. При создании базы выберем нужный шаблон и укажем что база будет располагаться на сервере 1С.

1cv82-ubuntu-pgsql-install-001.jpg

Затем укажем расположение серверов 1С и СУБД, а также желаемое имя базы данных и параметры доступа к серверу БД.

1cv82-ubuntu-pgsql-install-002.jpg

В результате этих несложных действий получим информационную базу работающую на указанном кластере серверов 1С и использующую наш сервер БД под управлением PostgreSQL.

1cv82-ubuntu-pgsql-install-003.jpg

В нашем примере мы использовали для сервера 1С и сервера БД разные физические сервера, для небольших баз с невысокой нагрузкой эти роли можно совместить на одной машине.

Ошибка формата потока. Восстановление базы при использовании СУБД PostgreSQL

oshibka-formata-potoka-postgres-001.jpg

Столь же скупа и информация для технической поддержки:

oshibka-formata-potoka-postgres-002.jpg

Обычно это вызывает у пользователей и неподготовленных администраторов тихую панику, особенно если под рукой нет актуальной резервной копии. А судорожные попытки восстановления базы, обычно без понимания смысла выполняемых действий приводят как правило к ее полному разрушению.

К возникновению данной ошибки приводит повреждение основной конфигурации информационной базы. Реже - кеша конфигурации информационной базы, в последнем случае устранить ошибку можно путем очистки кеша, для этого можете воспользоваться нашей утилитой 1:Tools (кто хочет поддержать нас - может скачать ее по ссылке с Инфостарта)

В остальных случаях придется заниматься восстановлением непосредственно базы. В этом месте мы сразу внесем ясность и разделим сущности: информационная база 1С - это хранилище данных на уровне логики 1С:Предприятия которое описывается конфигурацией информационной базы. Т.е. именно здесь содержатся документы, справочники, регистры и т.д. и т.п., а повреждение конфигурации информационной базы делает невозможной работу с ними на этом уровне абстракции. База данных СУБД - это набор таблиц в которых хранятся как данные, так и конфигурация информационной базы 1С.

Повреждение основной конфигурации информационной базы происходит именно на уровне логики 1С:Предприятия, база данных СУБД остается работоспособной и не содержит ошибок с точки зрения СУБД. Если это не так, то мы будем иметь дело с повреждением самой базы данных СУБД, а это уже совсем иная ситуация.

В зависимости от того, какая именно часть конфигурации ИБ оказалась повреждена база может не загружаться в обычном режиме, но загружаться в Конфигуратор, либо вообще не загружаться никак. Если доступен режим конфигуратора, то можно попробовать снять базу с поддержки и загрузить в нее исправную конфигурацию из файла, в некоторых случаях это приведет к успеху, в других может потребоваться сначала выявить и удалить сбойный элемент метаданных.

Все это достаточно сложно и не всегда приносит требуемый результат, поэтому проще и надежнее заменить конфигурацию информационной базы на заведомо исправную используя инструменты СУБД, в нашем случае PostgreSQL. В зависимости от используемой ОС (Windows или Linux) некоторые аспекты работы с PostgreSQL могут отличаться и это будет оговорено отдельно, в остальных случаях указанные команды применяются вне зависимости от платформы.

Перед тем как начинать работу с PostgreSQL в Linuх последовательно повысим свои права для суперпользователя и затем войдем в систему от имени пользователя postgres:

Если утилита sudo не установлена (такой вариант может быть в Debian), то:

В первом случае вам потребуется ввести пароль от текущей учетной записи, во втором - от учетной записи суперпользователя (root).

Затем обязательно сделаем копию информационной базы средствами СУБД. Получить список баз данных в кластере СУБД можно командой:

В Windows вам потребуется ввести пароль пользователя postgres.

oshibka-formata-potoka-postgres-003.jpg

Выяснив имя необходимой базы данных выгрузим ее дамп командой:

Где basename - имя нужной базы данных. Обратите внимание, что в Windows мы можем явно задать путь выгрузки дампа, а в Linux выгружаем его в домашнюю директорию пользователя postgres, т.е. /var/lib/postgresql.

Для дальнейших действий нам потребуется развернуть на этом же сервере СУБД еще одну базу с точно такой же конфигурацией информационной базы, это может быть как старый бекап поврежденной базы, так и другая база такой же конфигурации, чистая установка или демо база. Главное, чтобы конфигурация новой базы с точностью до релиза совпадала с конфигурацией поврежденной.

После чего откроем интерактивный терминал PostgreSQL в котором будем производить все последующие действия:

В этом случае выполните:

Теперь подключимся к исправной базе:

где newbasename - имя исправной базы данных. При этом в строке приглашения появится имя подключенной базы.

Из нее мы выгрузим таблицу config в которой находится основная конфигурация информационной базы.

Обратите внимание, при указании пути для операционной системы Windows вы также должны использовать прямой, а не обратный слеш. Также служба СУБД должна иметь права на запись в целевую аудиторию, проще всего это сделать выдав полные разрешения для пользователя Все.

Переподключимся к поврежденной базе:

На всякий случай, также сохраним содержимое таблицы config:

После чего очистим сбойную таблицу:

И загрузим в нее данные из исправной информационной базы:

Для выхода из терминала PostgreSQL введите:

Если все сделано правильно, то поврежденная конфигурация информационной базы будет заменена на исправную и ее работоспособность будет восстановлена.

В некоторых случаях оказывается повреждена не основная конфигурация информационной базы, а конфигурация, открытая на редактирование в Конфигураторе. Внешне это проявляется как невозможность загрузить информационную базу в этом режиме. Для исправления этой ошибки достаточно очистить таблицу configsave:

Как видим, устранение ошибки формата потока средствами СУБД PostgreSQL достаточно несложно, однако требует некоторых навыков работы с данной СУБД. Но если вы будете внимательно и вдумчиво следовать нашей инструкции, то проблем у вас возникнуть не должно.


Либо проверим все ли зависимости были установлены. И установим недостающие.

ERROR: type «tt7» already exists

Пример полного текста ошибки:

HINT : A relation has an associated type of the same name , so you must use a name that doesn ' t conflict .


Описание:

Данная ошибка является «плавающей» и может возникать в различных местах

Решение:

Выгрузим и загрузим базу данных средствами 1С:Предприятия(через файл *.dt).

ERROR: could not read block

Ошибка при выполнении операции с информационно базой по причине : Ошибка СУБД : ERROR : could not read block . . . in file "" Input / output error


Описание ошибки:

База не запускается. Разрушились диски.

Решения:

Переносим базу на другую дисковую систему.

Разворачиваем из резервной копии.

Пример полного текста ошибки:

Не удалось привязаться к адресу . Адрес уже используется . Возможно порт 5432 занят другим процессом postmaster ? Система БД выключена . Не удалось запустить сервер .


Описание:

Такая ситуация часто случается у начинающих администраторов в случае, если они хотят инициализировать сервер в каталог отличный от каталога по умолчанию. При этом сервер уже запустили из каталога по умолчанию.

В этой ситуации при попытке запуска видно ошибку – сервер не запускается.

А при проверке состояния видно, что сервер работает.


Если проверим запущенные процессы пользователя postgres, то можно увидеть, что порт 5432 занят кластером PostgreSQL, только запущенным из каталога по умолчанию.


Решение:

Остановим работающий кластер сервера СУБД.

/ opt / pgpro / ent - 10 / bin / pg_ctl -- locale = ru_RU . UTF - 8 - D / var / lib / pgpro / ent - 10 / data stop

Инициализируем кластер из нового каталога(если он не инициализирован).

/ opt / pgpro / ent - 10 / bin / initdb -- locale = ru_RU . UTF - 8 - D / pgpro / pgdata

Запустим из нового каталога.

/ opt / pgpro / ent - 10 / bin / pg_ctl -- locale = ru_RU . UTF - 8 - D / pgpro / pgdata start

Описание:

Длительный запуск, длительный захват объектов в хранилище, длительное сохранение конфигурации 1С:Предприятия.

Решение:

Такая проблема может быть связано с настройками СУБД PostgreSQL.

Рассчитаем настройки СУБД.

Описание настроек приведено на ИТС.

Выполним настройки, для этого перейдем в терминал psql:

Через psql установим параметры командой ALTER SYSTEM SET(параметры необходимо указать для вашей СУБД):

ALTER SYSTEM SET max_parallel_workers_per_gather = 22 ;

Описание ошибки:

При загрузке данных из файла *.xlsx в 1С отображаются иероглифы. Используемая СУБД PostgreSQL/PostgresPro.


Также возможна проблема с кодировкой в выгружаемом файле из 1С:


Решение:

На сервере СУБД проверим и выполним настройку локали.

1. Проверим наличие локали:

2. Проверим переменную:

Корректное значение результатов выполнения команд 2, 3:

3. Если результат не соответствует, выполним:

5. Выполним перезапуск серверов СУБД

Еще можно посмотреть


Отладка на сервере 1С на Linux

Основы работы в Linux

Основы работы в Linux

Основы работы в Linux. Как подключиться к серверу. Как скопировать файлы на сервер. Редактирование конфигурационных файлов.


Установка двух версий сервера 1С на Linux

Пошаговый процесс установки и запуска двух версий сервера 1С на Linux. Полное описание настройки второго экземпляра сервера 1С.


Администрирование серверов 1С на Linux


Ошибки публикации базы и веб сервиса на веб сервере 1C+ Apache +Linux.

Многие из нас привыкли публиковать базу или веб сервис 1С нажатием нескольких кнопок. Но не все из многих знают, что для этого необходимо запустить(от имени администратора!) конфигуратор 1С:Предприятие именно на той машине, где установлен веб сервер(а именно компонента веб-расширения 1С:Предприятия). В случае, если веб-сервер и компонента веб-расширения 1С:Предприятия установлены на машину с ОС Linux без […]


Проверка рабочих процессов сервера 1С на Linux

Как проверить на Linux запущены ли процессы сервера 1С. Проверка открытых портов сервера 1С

Хранение файлов 1С в томах на nfs-шаре Linux


При работе с 1С в клиент-серверном варианте могут возникать ошибки, которые напрямую не связаны с 1С:Предприятием, а связаны непосредственно с сервером управления баз данных.

Далее рассмотрим подробнее каждую ошибку.

Пример полного текста ошибки:

could not translate host name "NAME" to address : Temporary failure in name resolution


Описание:

Ошибка может возникать как при создании базы, так и при запуске информационной базы.

Решение:

Пример полного текста ошибки:

ВАЖНО : пользователь "postgres" не прошёл проверку подлинности ( Ident )


Описание: Ошибка возникает при создании базы.

Решение:

Настроим проверку подлинности.

    1. Сконфигурируем доступ к серверу PostgreSQL в файле: pg_hba.conf:

    Файл должен содержать только следующие строки (содержащие ip серверов 1С) (остальные удалим или пометим как комментарий):

    Строк должно быть, соответственно, несколько, если серверов 1С несколько в кластере.

    Последняя колонка указывает на метод авторизации.

    Если пока теряетесь в настройках доступа. Для понимания, можно сначала открыть все, запустить сервер.

    А после удачного старта сервера СУБД разбираться с настройками доступа.

    ВАЖНО: в pg_hba.conf нет записи для компьютера «», пользователя «usr1cv8», базы «template»

    Пример полного текста ошибки:

    Сервер баз данных не обнаружен ВАЖНО: в pg_hba.conf нет записи для компьютера «», пользователя «usr1cv8», базы «template».


    Описание ошибки:

    Ошибка связана с отсутствием прописанного доступа к базе данных в файле pg_hba.conf

    Решение:

    Добавим запись в файл pg_hba.conf.

    Приведем пример содержания файла, который открывает доступ:

    Строк должно быть, соответственно, несколько, если серверов 1С несколько в кластере.

    Is the server running on host and accepting TCP/IP connections on port 5432?

    Пример полного текста ошибки:

    Сервер баз данных не обнаружен could not connect to server : No rout to host Is the server running on host and accepting TCP / IP connections on port 5432 ?

    Описание:

    Проблема может возникать как при создании информационной базы из консоли администрирования 1С: Предприятия, так и при ее запуске в процессе эксплуатации уже существующей базы данных.

    Решение:

    1. Первоначально, конечно, проверим, есть ли на сервере СУБД PostgreSQL в запущенных процессах процесс postmaster/postgres (в зависимости от версии PostgreSQL) на порту 5432.

    Читайте также: