Postgresql важно файлы базы данных не совместимы с сервером
Типовые ошибки установки сервера 1С:Предприятие и PostgreSQL на платформе Linux.
Связка сервера 1С:Предприятие и PostgreSQL вторая по популярности среди установок 1С и самое используемое решение на платформе Linux. В отличии внедрений на базе Windows и MSSQL, где трудно сделать так, чтобы не заработало, внедрения на базе Linux таят множество подводных камней для неопытного администратора. Часто бывает так, что вроде бы все сделано правильно, но ошибка следует за ошибкой. Сегодня мы рассмотрим самые типовые из них.
Общая информация
Перед тем, как начинать искать ошибки установки и, вообще, приступать к внедрению серверной версии 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
Для перехода PostgreSQL с версии 9 на версию 10 недостаточно установить новые пакеты и подсунуть имеющийся каталог данных кластера.
При обновлении основных версий Postgres Pro внутренний формат данных может меняться, что усложняет процедуру обновления. Традиционный способ переноса данных в новую основную версию — выгрузить данные из старой версии, а затем загрузить их в новую (это не самый быстрый вариант). Выполнить обновление быстрее позволяет pg_upgrade. Также для обновления можно использовать репликацию.
В связи с тем, что у PostgresPro изменились правила лицензирования, и для свободного использования доступна лишь версия Postgres Pro Standard “для тестирования, разработки ПО, ознакомления с функциональностью СУБД, использования в образовательном процессе”, и для коммерческих целей ее использовать низя.
Один из вариантов обновления заключается в выгрузке данных из одной основной версии Postgres Pro и загрузке их в другую — для этого необходимо использовать средство логического копирования, например pg_dumpall ; копирование на уровне файловой системы не подходит. В самом сервере есть проверки, которые не дадут использовать каталог данных от несовместимой версии Postgres Pro, так что если попытаться запустить с существующим каталогом данных неправильную версию сервера, никакого вреда не будет.
Если попытаться запустить новый PostgreSQL со старым каталогом данных, будет вот такая ошибка:
[38003] ВАЖНО: файлы базы данных не совместимы с сервером
[38003] ПОДРОБНОСТИ: Каталог данных инициализирован сервером PostgreSQL версии 9.6, не совместимой с данной версией (10.9 (Ubuntu 10.9-5.1C)).
2. Создание резервной копии данных
Для создания копии рекомендуется применять программы pg_dump и pg_dumpall от новой версии Postgres Pro , чтобы воспользоваться улучшенными функциями, которые могли в них появиться. Хотя этот совет может показаться абсурдным, ведь новая версия ещё не установлена, ему стоит последовать, если вы планируете установить новую версию рядом со старой. В этом случае вы сможете выполнить установку как обычно, а перенести данные позже. Это также сократит время обновления.
При работе с 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.
Мы решили поделиться памяткой (чеклистом) нашей команды по обновлению PostgreSQL. В ней мы взяли за основу фичи, представленные в релизе официальной документации PostgreSQL, провели анализ на предмет нарушения совместимости и кому стоит обратить внимание на обновленную функциональность.
Статья разбита на части с заголовками. Каждый заголовок относится к обновлению PostgreSQL с одной версии на другую. В рамках каждой главы мы выделили:
- Фича
- Риск, который может повлечь потенциальная несовместимость
- Нарушение работы приложения
- Падение производительности
- Системный администратор
- Разработчик
Способы обновления
- pg_upgrade — не самый надежный способ обновления PostreSQL. Например, вы можете получить ошибку при проведении REINDEX'a предыдущей версии PostgreSQL.
- logical replication — звучит заманчиво, так как позволит свести downtime при обновлении до минимума. Но, logical replication появилось только в 10. Теоретический для этой цели можно использовать pglogical (от 2ndquadrant), он поддерживает версии от 9.4 до 12. Поэтому, если вы используете PostgreSQL<10.0, данное расширение может быть полезно.
- pg_dumpall — проверенный способ. Недостаток — на больших БД будет большой downtime.
- pg_dumpall --globals-only с последующим pg_dump --create . На наш взгляд, более предпочтительный метод, чем предыдущий, для обновления кластеров PostgreSQL.
PostgreSQL 9.5 -> 9.6
Интересная фича
Возможность аннулирования старых снимков MVCC после настраиваемого промежутка времени (Кевин Гриттнер)
Обычно удалённые кортежи не могут быть ликвидированы физически при очистке, пока не будет отработана последняя транзакция, в которой они могут быть видны. Транзакция, остающаяся открытой в течение долгого времени, может стать причиной значительного замусоривания таблицы, препятствуя освобождению места. Это средство позволяет задать с помощью нового конфигурационного параметра old_snapshot_threshold ограничение времени, в течение которого снимок MVCC будет гарантированно актуальным. По истечении этого времени мёртвые кортежи могут быть удалены. Транзакция, использующая просроченный снимок, получит ошибку, если она попытается прочитать страницу, которая могла бы содержать такие данные.
Решает проблему «раздутия» БД по причине «открыл транзакцию и ушел в отпуск»; необдуманных апдейтов, которые занимают часы; долгих select как на master, так и на slave. Это одна из двух опций, благодаря которой можно будет решить проблему, из-за которой не могут перегрузить долгие запросы с master на slave.
PostgreSQL 9.6 -> 10.0
Полезная фича, которая может использоваться для апгрейда с минимальным простоем.
Новый декларативный синтаксис упростил партицирование таблиц.
Изначально в 9.6 появилась поддержка параллельного выполнения больших запросов. Но она касалась только операций сканирования, join'ов и агрегаций.
В 10.0, в свою очередь, появилась возможность параллельного выполнения:
- B-Tree index scan
- Bitmap scan
- Merge joins
- Некоррелированных подзапросов
Более сильная защита паролей с использованием SCRAM-SHA-256
Может быть несовместим с какими-то нестандартными (не libpq) библиотеками подключения к PostgreSQL.
PostgreSQL 10.0 -> 11.0
Ранее такие атрибуты базы данных, как разрешения GRANT/REVOKE уровня базы данных и назначения переменных ALTER DATABASE SET , выгружались только утилитой pg_dumpall . Теперь при выполнении pg_dump --create и pg_restore --create в дополнение к объектам базы будут восстанавливаться и такие её свойства. При этом pg_dumpall -g будет выводить только атрибуты, связанные с ролями и табличными пространствами. Содержимое полного вывода pg_dumpall (без -g ) не изменилось.
Команды pg_dump и pg_restore без ключа --create теперь не выгружают/не восстанавливают комментарии на уровне базы и метки безопасности; эти атрибуты теперь считаются свойствами базы данных.
При восстановлении вывода pg_dumpall теперь базы данных всегда должны восстанавливаться с исходными локалями и кодировками, и поэтому, если локаль или кодировка окажется неизвестной в целевой системе, произойдёт ошибка. Ранее команда CREATE DATABASE выдавалась без таких указаний, если локаль и кодировка базы данных не отличались от установленных по умолчанию в старом кластере.
Добавление оператора сопоставления префиксов text ^@ text и реализация его поддержки в SP-GiST (Ильдус Курбангалиев)
Он действует подобно конструкции переменная LIKE 'слово%' с индексом btree, но обрабатывается более эффективно.
Поиск по префиксу встречается довольно часто. Для этого добавили специальный оператор с поддержкой специальных индексов. И что самое интересное, в официальной документации про этот оператор не сказано ни слова. Вместо него упоминается функция starts_with — внутренняя функция, на которой основан этот оператор, но её использование не дает ускорения с помощью индекса.
Сведение выражения переменная = переменная к выражению переменная IS NOT NULL там, где они равнозначны (Том Лейн)
Благодаря этому улучшается оценка избирательности.
Как ни странно, встречали такую конструкцию на практике. Судя по всему, такие случаи нередки.
Читайте также:
- Приведите пример информационно поисковой системы варианты ответа консультантплюс яндекс гугл хром
- Модуль сбора тонера ce254a как почистить
- Файл с расширением zip является ответ на тест
- Почему eset классифицирует этот файл как угрозу
- В соответствии со своими функциями персональные компьютеры не могут выступать в роли