Сервер баз данных не обнаружен 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С.
Затем укажем расположение серверов 1С и СУБД, а также желаемое имя базы данных и параметры доступа к серверу БД.
В результате этих несложных действий получим информационную базу работающую на указанном кластере серверов 1С и использующую наш сервер БД под управлением PostgreSQL.
В нашем примере мы использовали для сервера 1С и сервера БД разные физические сервера, для небольших баз с невысокой нагрузкой эти роли можно совместить на одной машине.
Ошибка формата потока. Восстановление базы при использовании СУБД PostgreSQL
Столь же скупа и информация для технической поддержки:
Обычно это вызывает у пользователей и неподготовленных администраторов тихую панику, особенно если под рукой нет актуальной резервной копии. А судорожные попытки восстановления базы, обычно без понимания смысла выполняемых действий приводят как правило к ее полному разрушению.
К возникновению данной ошибки приводит повреждение основной конфигурации информационной базы. Реже - кеша конфигурации информационной базы, в последнем случае устранить ошибку можно путем очистки кеша, для этого можете воспользоваться нашей утилитой 1:Tools (кто хочет поддержать нас - может скачать ее по ссылке с Инфостарта)
В остальных случаях придется заниматься восстановлением непосредственно базы. В этом месте мы сразу внесем ясность и разделим сущности: информационная база 1С - это хранилище данных на уровне логики 1С:Предприятия которое описывается конфигурацией информационной базы. Т.е. именно здесь содержатся документы, справочники, регистры и т.д. и т.п., а повреждение конфигурации информационной базы делает невозможной работу с ними на этом уровне абстракции. База данных СУБД - это набор таблиц в которых хранятся как данные, так и конфигурация информационной базы 1С.
Повреждение основной конфигурации информационной базы происходит именно на уровне логики 1С:Предприятия, база данных СУБД остается работоспособной и не содержит ошибок с точки зрения СУБД. Если это не так, то мы будем иметь дело с повреждением самой базы данных СУБД, а это уже совсем иная ситуация.
В зависимости от того, какая именно часть конфигурации ИБ оказалась повреждена база может не загружаться в обычном режиме, но загружаться в Конфигуратор, либо вообще не загружаться никак. Если доступен режим конфигуратора, то можно попробовать снять базу с поддержки и загрузить в нее исправную конфигурацию из файла, в некоторых случаях это приведет к успеху, в других может потребоваться сначала выявить и удалить сбойный элемент метаданных.
Все это достаточно сложно и не всегда приносит требуемый результат, поэтому проще и надежнее заменить конфигурацию информационной базы на заведомо исправную используя инструменты СУБД, в нашем случае PostgreSQL. В зависимости от используемой ОС (Windows или Linux) некоторые аспекты работы с PostgreSQL могут отличаться и это будет оговорено отдельно, в остальных случаях указанные команды применяются вне зависимости от платформы.
Перед тем как начинать работу с PostgreSQL в Linuх последовательно повысим свои права для суперпользователя и затем войдем в систему от имени пользователя postgres:
Если утилита sudo не установлена (такой вариант может быть в Debian), то:
В первом случае вам потребуется ввести пароль от текущей учетной записи, во втором - от учетной записи суперпользователя (root).
Затем обязательно сделаем копию информационной базы средствами СУБД. Получить список баз данных в кластере СУБД можно командой:
В Windows вам потребуется ввести пароль пользователя postgres.
Выяснив имя необходимой базы данных выгрузим ее дамп командой:
Где 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. Как подключиться к серверу. Как скопировать файлы на сервер. Редактирование конфигурационных файлов.
Установка двух версий сервера 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 )Описание: Ошибка возникает при создании базы.
Решение:
Настроим проверку подлинности.
- Сконфигурируем доступ к серверу 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.
Читайте также: