Сервер баз данных не обнаружен 1с postgresql
Сервер 1С Предприятия. Часть 4 Установка PostgreSQL (Ethersoft) на платформe Linux (Ubuntu).
Сервер СУБД является важной составляющей частью сервера 1С, но при этом является полностью самостоятельным узлом. Один и тот-же сервер 1С может (с небольшими ограничениями) работать с любой из поддерживаемых СУБД. На платформе Linux заслуженной популярностью пользуется бесплатная СУБД PostgreSQL и сегодня мы поговорим об ее установке.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Вначале, как всегда, немного теории. Следует помнить, что в силу особенностей реализации платформы 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С и сервера БД разные физические сервера, для небольших баз с невысокой нагрузкой эти роли можно совместить на одной машине.
Дополнительные материалы:
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Типовые ошибки установки сервера 1С:Предприятие и PostgreSQL на платформе Linux.
Связка сервера 1С:Предприятие и PostgreSQL вторая по популярности среди установок 1С и самое используемое решение на платформе Linux. В отличии внедрений на базе Windows и MSSQL, где трудно сделать так, чтобы не заработало, внедрения на базе Linux таят множество подводных камней для неопытного администратора. Часто бывает так, что вроде бы все сделано правильно, но ошибка следует за ошибкой. Сегодня мы рассмотрим самые типовые из них.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Общая информация
Перед тем, как начинать искать ошибки установки и, вообще, приступать к внедрению серверной версии 1С:Предприятия было бы неплохо освежить представление как это работает:
В небольших внедрениях сервер 1С и сервер СУБД обычно совмещают на одном физическом сервере, что немного сужает круг возможных ошибок. В нашем случае будет рассматриваться ситуация, когда сервера разнесены по разным машинам. В нашей тестовой лаборатории мы развернули следующую схему:
Сервер баз данных не обнаружен
ВАЖНО: пользователь "postgres" не прошёл проверку подлинности (Ident)
Данная ошибка возникает при разнесении серверов по разным ПК из-за неправильно настроеной проверки подлинности в локальной сети. Для устранения откройте /var/lib/pgsql/data/pg_hba.conf, найдите строку:
и приведите ее к виду:
где 192.168.31.0/24 - диапазон вашей локальной сети. Если такой строки нет, ее следует создать в секции IPv4 local connections.
Сервер баз данных не обнаружен
could not translate host name "NAME" to address: Temporary failure in name resolution
А теперь вспоминаем, о чем было сказано несколько раньше. Клиентом сервера СУБД является сервер 1С, но никак не клиентский ПК, следовательно запись нужно добавлять на сервере 1С:Предприятие в файл /etc/hosts на платформе Linux или в C:\Windows\System32\drivers\etc\hosts на платформе Windows.
Аналогичная ошибка будет возникать, если вы забыли добавить запись типа A для сервера СУБД на локальном DNS-сервере.
Ошибка при выполнении операции с информационной базой
server_addr=NAME descr=11001(0x00002AF9): Этот хост неизвестен.
где указываете адрес и имя вашего сервера 1С:Предприятия. В случае использования локального DNS следует добавить A-запись для сервера 1С.
Ошибка СУБД: DATABASE не пригоден для использования
Если вы имеете достаточный опыт администрирования Linux систем, то можете попробовать доустановить необходимые библиотеки и заново инициализировать кластер СУБД. В противном случае PostgreSQL лучше переустановить, не забыв удалить содержимое папки /var/lib/pgsql.
Также данная ошибка может возникать при использовании сборок 9.1.x и 9.2.x Postgre@Etersoft, подробности смотрите ниже.
Ошибка СУБД:
ERROR: could not load library "/usr/lib/x86_64-linux-gnu/postgresql/fasttrun.so"
Ошибка СУБД
ERROR: type "mvarchar" does not exist at character 31
или через средство запуска 1С.
Сервер баз данных не обнаружен
ВАЖНО: пользователь "postgres" не прошёл проверку подлинности (по паролю)
Сервер баз данных не обнаружен
FATAL: database "NAME" does not exist
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Ошибка формата потока. Восстановление базы при использовании СУБД PostgreSQL
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Столь же скупа и информация для технической поддержки:
Обычно это вызывает у пользователей и неподготовленных администраторов тихую панику, особенно если под рукой нет актуальной резервной копии. А судорожные попытки восстановления базы, обычно без понимания смысла выполняемых действий приводят как правило к ее полному разрушению.
К возникновению данной ошибки приводит повреждение основной конфигурации информационной базы. Реже - кеша конфигурации информационной базы, в последнем случае устранить ошибку можно путем очистки кеша, для этого можете воспользоваться нашей утилитой 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 достаточно несложно, однако требует некоторых навыков работы с данной СУБД. Но если вы будете внимательно и вдумчиво следовать нашей инструкции, то проблем у вас возникнуть не должно.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Ошибка 1С «Сервер баз данных не обнаружен»
При работе с 1С в клиент-серверном варианте могут возникать ошибки, которые напрямую не связаны с 1С:Предприятием, а связаны непосредственно с сервером управления баз данных.
Одна из распространенных ошибок — «Сервер баз данных не обнаружен…».
Далее рассмотрим подробнее каждую ошибку.
Could not translate host name «NAME» to address: Temporary failure in name resolution
Пример полного текста ошибки:
Описание:
Ошибка может возникать как при создании базы, так и при запуске информационной базы.
Решение:
Настроим DNS-адресацию или пропишем адреса в файл hosts. Обратите внимание, что в данном случае проблема в том, что на сервере 1С нет информации о доменном имени сервера СУБД PostgreSQL. Подробнее о DNS — Настройка DNS-адресации для 1С сервера.
ВАЖНО: пользователь «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С) его не «видит» по ряду причин:
— Отсутствие доступа;
— Обращение по другому адресу.
1. Первоначально, конечно, проверим, есть ли на сервере СУБД PostgreSQL в запущенных процессах процесс postmaster/postgres (в зависимости от версии PostgreSQL) на порту 5432.
После установки сервера 1С на Linux у пользователей могут возникнуть проблемы при попытке подключиться к нему. Данные проблемы могут быть связаны как с настройками на сервер или клиентском компьютере, так и с настройками сетевой инфраструктуры. Рассмотри наиболее часто встречающиеся ошибки и методику поиска и исправления причин этих ошибок.
Оглавление:
Этот хост неизвестен / No such host is known
Пример полного текста ошибки:
Ошибки соединения с сервером 1С:Предприятия 8.3:
server_addr=tcp://sony2 descr=11001(0x00002AF9):
Этот хост неизвестен
line=1068 file=src\DataExchangeCommon.cppОшибка при выполнении операции с информационной базой.
server_addr=tcp://1s-on-1c-1 descr=11001(0x00002AF9): No such host is known line=1068 file=src\DataExchangeCommon.cppОписание:
Ошибка может возникать как при работе с консолью администрирования 1С:Предприятия(добавление сервера, создание базы…), так и при запуске информационной базы.
Такая ошибка характерна, когда компьютер пользователя не обладает информацией о соответствии ip-адреса dns-имени сервера.
Решение:
Настроить DNS-адресацию или прописать адреса в файл hosts.
О том, как и почему это надо сделать — можно почитать тут Настройка DNS-адресации на сервере 1С.
В случае, если кажется, что все имена прописаны верно, необходимо:
1. Проверить еще раз. Скорее всего, где-то ошибка.
2. Сравнить, как хост прописан на самом сервере и на компьютере пользователя. Имена должны быть одинаковыми.
Часто ошибка связана с тем, указан в имени доменный суфикс или нет.
3. Проверить в консоли администрирования 1С: Предприятия — как у вас собран кластер 1С:Предприятия.
- Возможно, у вас в консоли сервера отображаются не по DNS-имени, а по IP-адресам.
- Возможно, клиент не сможет сопоставить IP-адрес DNS-имя(в случае, если сервер 1С находится в другой сети, и вы подключаетесь к кластеру напрямую).
Не правильно:
Правильно:
Необходимо удалить кластер. И собрать из консоли администрирования его заново.
Ошибки соединения с сервером 1С / рабочим процессом 1С
Описанные далее ошибки могут возникать как при работе в консоле администрирования 1С, так и при запуске информационной базы.
Методика по решению всех приведенных далее ошибок — описана в конце этого подраздела ошибок соединения с сервером / рабочим процессом.
Попытка установить соединение была безуспешной
Пример полного текста ошибки:
Ошибка соединения с сервером 1С:Предприятия 8.3:
server_addr=tcp://son1c:1541 descr=192.168.0.101:1541:
Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера.
Сервер 1С:Предпрятия не обнаружен
Пример полного текста ошибки:
Сервер 1С:Предприятия не обнаружен
Не запущен ни один рабочий процесс. Соединение с информационной базой невозможно.
Ошибка установки соединения
Пример полного текста ошибки:
Ошибка установки соединения
Выполняется ожидание возможности запуска.
При появлении возможности, запуск будет выполнен автоматически.
Методика устранения ошибок соединения с сервером 1СВ данном случае необходимо понимать, что:
- Либо процессов нет;
- Либо не удается «увидеть» процессы в связи с отсутствием доступа;
- Либо происходит обращение по другому адресу.
1. Сначала проверим есть ли на сервере 1С в запущенные рабочие процессы rphost.
Читайте также: