Postgresql initdb 1c windows

Содержание
  1. База знаний Try 2 Fix beta
  2. Настройка Сервера 1С:Предприятие 8.3 и PostgreSQL 9.4.2-1.1C. Полная инструкция
  3. Этап 0. Вводные данные.
  4. Этап 1. Установка Сервера 1С:Предприятие (64-bit) для Windows
  5. Этап 2. Установка PostgreSQL и pgAdmin.
  6. Этап 3. Создание информационной базы 1С.
  7. Эти статьи будут Вам интересны
  8. Сетевая карта Intel Ethernet Connection I219-LM на Windows Server 2008R2
  9. Ошибка проводника: каждая папка открывается в новом окне
  10. 1С:Розница 2: 09h, Некорректное значение параметров команды
  11. База знаний «Try 2 Fix» Beta
  12. Настройки PostgreSQL для работы с 1С:Предприятием. Часть 2
  13. Общие положения
  14. Настройки сервера для PostgreSQL
  15. Обозначения
  16. Параметры производительности
  17. Параметры для платформы 1С:Предприятия
  18. Параметры для PgBadger
  19. Параметры дополнительных модулей
  20. plantuner
  21. online_analyze
  22. Наш кейс: опыт внедрения 1С на PostgreSQL
  23. Выбор решения и архитектура
  24. Установка и настройка
  25. Результат:
  26. Резервное копирование и обслуживание
  27. Пример:
  28. Тестирование
  29. Переход

База знаний
Try 2 Fix beta

Настройка Сервера 1С:Предприятие 8.3 и PostgreSQL 9.4.2-1.1C. Полная инструкция

В этой инструкции мы расскажем (и покажем) как настроить связку 1С:Предприятие 8.3 и PostgreSQL 9.4.2 с момента установки обоих сервисов, вплоть до создания информационной базы. Про тюнинг данной связки можно прочитать в другой нашей статье.

Этапы, которые нам предстоит пройти:

  1. Установка Сервера 1С:Предприятие (64-bit) для Windows
  2. Установка PostgreSQL 9.4.2-1.1С
  3. Создание Информационной базы данных.

Подробнее под катом!

Этап 0. Вводные данные.

Имя сервера — 1CServer
Имя учётной записи сервера — Администратор
Пароль учётной записи — 123456Ab

Имя учётной записи 1С на сервере — USR1CV8
Пароль учётной записи 1С на сервере — 123456Cd

Имя учётной записи PostgreSQL на сервере — postgres
Пароль учётной записи PostgreSQL на сервере — 123456Ef

Имя суперюзера PostgreSQL — postgres
Пароль суперюзера PostgreSQL — 1234

Имя тестовой базы данных — testdb

Этап 1. Установка Сервера 1С:Предприятие (64-bit) для Windows

  1. Заходим на сайт users.v8.1c.ru.
  2. Переходим в раздел Технологические дистрибутивы >Технологическая платформа 8.3 >8.3.8.2197 (не очень важно, но подальше от последней) >Cервер 1С:Предприятия (64-bit) для Windows >Скачать дистрибутив.
  3. Загружаем архив windows64.rar. Распаковываем его.
  4. Начинаем установку через setup.exe.
  5. Просто проходим через каждый пункт до пункта «Установить сервер 1С:Предприятие 8 как сервис…». В данном пункте галочка должна стоять, радио-кнопку надо переключить в положение «Создать пользователя USR1CV8». Пароль может быть любым, но отвечающим политикам безопасности сервера Windows. В нашем примере это 123456Cd.
  6. Дальше опять никаких откровений — просто везде нажимаем «Далее». На этом мы пока завершаем работу с Сервером 1С:Предприятие и переходим к установке PostgreSQL.

Этап 2. Установка PostgreSQL и pgAdmin.

  1. Невероятных ссылок, откуда скачать PostgreSQL не будет — это наш любимый сайт https://releases.1c.ru, раздел «Технологические дистрибутивы». Скачиваем, ставим. Не забываем установить MICROSOFT VISUAL C++ 2010 RUNTIME LIBRARIES WITH SERVICE PACK 1, который идёт в архиве с дистрибутивом. Сами попались на это: не установили, испытали много боли.
  2. Ставим всё на «Далее», кроме следующих моментов. Устанавливаем, как сервис (галочка) и задаём параметры дляучётной записи Windows, не PostgreSQL (учётка, от имени которой будет работать служба). В нашем случае это postgres и 123456Ef. Пароль должен отвечать политикам безопасности сервера Windows.
  3. Инициализируем кластер базы данных (галочка). А вот здесь задаём параметры учётной записи для PostgreSQL! Важно: у Вас должна быть запущена служба «Secondary Logon» (или на локализированных ОС: «Вторичный вход в систему»). Кодировка UTF8 — это тоже важно! На этом этапе Имя суперюзера postgres, а пароль 1234.
  4. Дальше ничего интересного. Далее…
  5. pgAdmin в этой сборке староват. Идём на https://www.postgresql.org/ftp/pgadmin3/release/. На момент написания статьи самая свежая версия 1.22.1. Качаем её, ставим. Заходим.

Этап 3. Создание информационной базы 1С.

  1. Перед выполнением следующих операций, отключите IPv6 на Вашем сетевом интерфейсе: Центр управления сетями и общим доступом >Подключение по локальной сети >Свойства > Снимите галочку с Протокол Интернета версии 6 (TCP/IPv6).
  2. Запускаем клиентское 1С:Предприятие и добавляем новую базу данных.
  3. Создание новой информационной базы > Создание информационной базы без конфигурации (для примера, у Вас может быть любая конфигурация) > На сервере 1С:Предприятие >
  4. Заполняем все поля в соответствии с нашим примером (Этап 0):
    Кластер серверов 1С:Предприятие: 1CServer
    Имя информационной базы в кластере: testbd
    Защищённое соединение: Выключено
    Тип СУБД: PostgreSQL
    Сервер баз данных: 1CServer
    Имя базы данных: testbd
    Пользователь базы данных: postgres
    Пароль пользователя: 1234
  5. Далее, далее. Запускаем созданную базу в режиме предприятия — всё работает!

Ещё раз напоминаем, что PostgreSQL можно неплохо разогнать. Подробности в нашей статье.
И не забудьте про резервное копирование баз данных 1С!
Если с базой данных возникли какие-то проблемы, возможно, Вам поможет внутреннее или внешнее тестирование.
Базы данных 1С можно публиковать на веб-серверах!

Эти статьи будут Вам интересны

Сетевая карта Intel Ethernet Connection I219-LM на Windows Server 2008R2

Ни с помощью драйверов с сайта производителей материнской платы, ни с помощью DriverPack Sollution, ни с помощью ручного указания папки с драйверами не удалось запустить сетевую карту Intel Ethernet Connection I219-LM на Windows Server 2008R2. Но мы не сдавались и победили.

Читайте также:  Linux включить подсветку клавиатуры

Ошибка проводника: каждая папка открывается в новом окне

14 октября 2016 ВК Tw Fb

Почему же ошибка, спросите Вы? Если бы в Параметры папок > Общие переключатель в пункте «Обзор папок» стоял в таком режиме, то действительно всё хорошо. А что если все настройки верны, а каждая папка при работе с проводником всё равно открывается в новом окне? Уже интереснее. Решаем эту проблему.

1С:Розница 2: 09h, Некорректное значение параметров команды

При настройке онлайн-кассы Штрих-М на очередном магазине столкнулись с этой проблемой: при закрытии чека появляется следующее сообщение: «Чек не напечатан на устройстве для печати чеков. Дополнительное описание: При выполнении операции произошла ошибка: 09h, Некорректное значение параметров команды». Рассказываем, как от неё избавиться!

База знаний «Try 2 Fix» Beta

Все материалы свободны
к распространению с обязательным
указанием источника

Настройки PostgreSQL для работы с 1С:Предприятием. Часть 2


Общие положения

В документе описывается настройка PostgreSQL версий 9.2-9.4 на максимальную производительность для платформы 1С. Предполагается, что сервер, используемый для PostgreSQL является достаточно производительным и имеет приблизительно:

  • 4 — 512 Gb RAM
  • 2 — 256 CPU cores
  • RAID 0-1 или SSD

Данный документ подразумевает хотя бы поверхностное знакомство с архитектурой PgSQL. Приведенные в документе параметры являются приблизительными и стартовыми для тонкой настройки.

Настройки сервера для PostgreSQL


  • Рекомендуется отключать HyperThreading. Для программ типа систем управления базами данных от него скорее вред чем польза.
  • Также рекомендуется отключать Energy Saving, поскольку в противном случае могут непредсказуемо вырастать задержки ответов БД.
  • Надо запретить своппинг разделяемой памяти SYSV/posix (FreeBSD: kern.ipc.shm_use_phys=1)

Обозначения


  • RAM — объем оперативной памяти сервера. Если сервер используется не только для PostgreSQL, то надо уменьшить эту величину на объем занятой памяти.
  • NCores — суммарное число ядер на всех CPU сервера
  • max_connections — максимальное число коннектов (или сессий) к PgSQL. Задается в конфигурационном файле.
  • WAL — Write Ahead Log, опережающий лог действий с таблицами и индексами. Основная задача — целостность и отказоустойчивость базы данных при одновременном росте производительности.
  • checkpoint — точка восстановления база данных. Все WAL данные, записанные до checkpoint становятся не нужны.
  • X..Y — диапазон значений от X до Y включительно

Параметры производительности

Количество памяти, выделенной PgSQL для совместного кеша страниц. Эта память разделяется между всеми процессами PgSQL.

Максимальное количество страниц для временных таблиц. Т.е. это верхний лимит размера временных таблиц в каждой сессии.

work_mem = RAM/32..64 или 32MB..128MB

Лимит памяти для обработки одного запроса. Эта память индивидуальна для каждой сессии. Теоретически, максимально потребная память равна max_connections * work_mem, на практике такого не встречается потому что большая часть сессий почти всегда висит в ожидании. Это рекомендательное значение используется оптимайзером: он пытается предугадать размер необходимой памяти для запроса, и, если это значение больше work_mem, то указывает экзекьютору сразу создать временную таблицу. work_mem не является в полном смысле лимитом: оптимайзер может и промахнуться, и запрос займёт больше памяти, возможно в разы. Это значение можно уменьшать, следя за количеством создаваемых временных файлов:

Лимит памяти для обслуживающих задач, например вакуум, автовакуум или создания индексов.

Оценка размера кеша файловой системы. Увеличение параметра увеличивает склонность системы выбирать IndexScan планы. И это хорошо.

Оценочное значение одновременных запросов к дисковой системе, которые она может обслужить единовременно. Для одиночного диска = 1, для RAID — 2 или больше.

Стоимость чтения рандомной страницы (по-умолчанию 4). Чем меньше seek time дисковой системы тем меньше (но > 1.0) должен быть этот параметр. Излишне большое значение параметра увеличивает склонность PgSQL к выбору планов с сканированием всей таблицы (PgSQL считает, что дешевле последовательно читать всю таблицу, чем рандомно индекс). И это плохо.

Включение автовакуума. Не выключайте его!

Количество процессов автовакуума. Общее правило — чем больше write-запросов, тем больше процессов. На read-only базе данных достаточно одного процесса.

Время сна процесса автовакуума. Слишком большая величина будет приводить к тому, что таблицы не будут успевать вакуумиться и, как следствие, вырастет bloat и размер таблиц и индексов. Малая величина приведет к бесполезному нагреванию.

Время сна между циклами записи на диск фонового процесса записи. Данный процесс ответственен за синхронизацию страниц, расположенных в shared_buffers с диском. Слишком большое значение этого параметра приведет к возрастанию нагрузки на checkpoint процесс и процессы, обслуживающие сессии (backend). Малое значение приведет к полной загрузке одного из ядер.

Параметры, управляющие интенсивностью записи фонового процесса записи. За один цикл bgwriter записывает не больше, чем было записано в прошлый цикл, умноженное на bgwriter_lru_multiplier, но не больше чемbgwriter_lru_maxpages.

Выключение синхронизации с диском в момент коммита. Создает риск потери последних нескольких транзакций (в течении 0.5-1 секунды), но гарантирует целостность базы данных, в цепочке коммитов гарантированно отсутствуют пропуски. Но значительно увеличивает производительность.

Максимальное количество сегментов WAL между checkpoint. Слишком частые checkpoint приводят к значительной нагрузке на дисковую подсистему по записи. Каждый сегмент имеет размер 16MB.

Степень «размазывания» checkpoint’a. Скорость записи во время checkpoint’а регулируется так, что бы время checkpoint’а было равно времени, прошедшему с прошлого, умноженному на checkpoint_completion_target.

Минимальное и максимальный объем WAL файлов. Аналогично checkpoint_segments.

Выключение шифрования. Для защищенных ЦОД-ов шифрование бессмысленно, но приводит к увеличению загрузки CPU.

Выключение параметра приводит к росту производительности, но появляется значительный риск потери всех данных при внезапном выключении питания. Внимание: если RAID имеет кеш и находиться в режиме write-back, проверьте наличие и функциональность батарейки кеша RAID контроллера! Иначе данные записанные в кеш RAID могут быть потеряны при выключении питания, и, как следствие, PgSQL не гарантирует целостность данных.

Групповой коммит нескольких транзакций. Имеет смысл включать, если темп транзакций превосходит 1000 TPS. Иначе эффекта не имеет.

Дисковое пространство для временных таблиц/индексов. Помещение временных таблиц/индексов на отдельные диски может увеличить производительность. Предварительно надо создать tablespace командой CREATE TABLESPACE. Если характеристики дисков отличаются от основных дисков, то следует в команде указать соответствующий random_page_cost. См. статью.

Отключение контроля разрешения уровня записи.

Максимальное количество открытых файлов на один процесс PostreSQL. Один файл это как минимум либо индекс либо таблица, но таблица/может состоять из нескольких файлов. Если PostgreSQL упирается в этот лимит, он начинает открывать/закрывать файлы, что может сказываться на производительности. Диагностировать проблему под Linux можно с помощью команды lsof.

Параметры для платформы 1С:Предприятия

Разрешить использовать символ \ для экранирования.

Не выдавать предупреждение о использовании символа \ для экранирования.

Максимальное число блокировок индексов/таблиц в одной транзакции.

Количество одновременных коннектов/сессий.

Параметры для PgBadger

При большой нагрузке может влиять на производительность по причине большого потока записи на диск. Лучше вынести на отдельный шпиндель.

Примечание. Здесь пока никак не рассматриваются вопросы ротации логов и использования самого PgBadger’a.

Параметры дополнительных модулей


plantuner

Исправляет чрезмерную пессимистичность оптимизатора посгтреса на пустых, недавно созданных таблицах.

online_analyze

Автоматически анализировать временные таблицы при их изменении. Фоновый analyze может заметно отставать, и, как результат, планер ошибается.

Отключение излишней болтливости автоматического analyze.

Наш кейс: опыт внедрения 1С на PostgreSQL

Когда перед нами стал вопрос снижения стоимости серверных 1С, мы начали искать пути экономии без потери качества. И одним из самых очевидных решений стало использование свободно распространяемого ПО, которое по характеристикам не уступает платному. Так наш выбор пал на SQL сервер Postgre, официально интегрированный с продуктами 1С. А приятным бонусом для нас стало импортозамещение, которое мы при прочих равных всегда поддерживаем.

Выбор решения и архитектура

Чтобы упростить переход с MS SQL на базе ОС Windows 2016 Server, мы решили использовать SQL сервер Postgre, представленный на сайте 1С, релиз 11.5-19.1C, и при этом остаться на хорошо знакомой нам Windows 2016. Это решение позволяет более быстро осуществить переход, т.к. администрировать Windows системы нам привычнее, есть масса наработок для резервного копирования и мониторинга производительности. А еще такой подход позволил объективно сравнить показатели производительности 1С на PostgreSQL по сравнению с MS SQL, так как в обоих случаях использовались идентичные по производительности сервера с одинаковыми настройками ОС.

Для тестирования системы мы взяли сервера со следующими параметрами:

Роль Конфигурация
Сервер БД MS SQL 10 vCPU 50 RAM
Сервер предприятия 1C 6 vCPU 20 RAM
Сервер БД PostgreSQL 10 vCPU 50 RAM

Установка и настройка

Скачать дистрибутив можно с сайта релизов 1С. Установка Postgre происходит типовым способом, сервер устанавливается как сервис. Обратите внимание на путь к расположению инстанса, конечная папка назначения и будет именем инстанса (по умолчанию data), не рекомендуем оставлять путь по умолчанию, для каталога данных лучше использовать отдельный диск, отличный от системного.

Далее указываете порт подключения (по умолчанию 5432), задаете пароль для суперпользователя инстанса с логином postgres. При установке требуется, чтобы была запущена служба “Вторичный вход в систему”, а также выданы права к каталогу данных для NETWORK SERVICE .

Тюнинг настроек мы производили в соответствии с ресурсами сервера и с учетом рекомендаций из различных источников — мы изучили официальную документацию, тематические форумы, чаты в Телеграм, видеоматериалы.

PostgreSQL, как и MS SQL, позволяет запуск нескольких инстансов (экземпляров) на одном сервере. Этот функционал полезен в различных ситуациях, одна из популярнейших утилит резервного копирования БД Postgre — pg_probackup, позволяющая выполнять полное и журнальное бекапирование, обеспечивать валидацию данных, восстановление на произвольный момент времени. Она выполняет бекап полностью всего инстанса, а не отдельных баз, поэтому использование нескольких инстансов для различных баз или групп баз позволит настроить индивидуальные планы резервного копирования, исключит простой баз других инстансов в случае необходимости восстановления единичного инстанса. Также обычный перезапуск службы, например, для изменения конфигурации затронет только единичный инстанс.

Настройка производится стандартными утилитами initdb.exe и pg_ctl.exe, новая инсталляция Postgre SQL не требуется, пример использования:

После этого необходимо зарегистрировать службу:

Команды выполняются из командного файла или строки с привилегиями администратора.

Результат:

Изменяем в postgresql.conf параметр port = 5432 (стандартный) на другой, например, 5433. При необходимости меняем параметры авторизации службы «OriginalName-5433» и стартуем. На сервере предприятия при создании базы указываем имя хоста сервера и порт в следующем формате — “hostname port 5433”

После этого можем зайти в графический клиент управления Pgadmin 4, настраиваем подключение к серверу по порту 5433 и проверяем успешное создание базы.

Резервное копирование и обслуживание

Для резервного копирования мы выбрали утилиту pg_probackup, так как она обеспечивает нужный нам сценарий резервного копирования. Резервное копирование и обслуживание баз, в отличие от MS SQL, не имеет графического интерфейса, в котором можно настроить Maintenance plan (План обслуживания). Все команды выполняются из командной строки планировщиком заданий Windows. Мы настроили и протестировали архивирование журналов предзаписи (WAL) и создание полных копий 1 раз в сутки с планом хранения в течение 2х недель.

Два бекапа — всегда лучше, чем один, поэтому полные бекапы баз и журналы WAL синхронизируются с облачным объектным хранилищем. С этой задачей нам помогла успешно справится свободно распространяемая утилита Rclone, которая позволяет копировать, переносить, синхронизировать файлы между различными типами хранилищ, обеспечивая высокую скорость за счет многопоточности и гарантируя доставку валидных данных за счет алгоритма хеширования MD5.

Обслуживание инстанса или отдельных баз, как правило, заключается в ежедневном сборе мусора и анализе данных с помощью VACUUM, запускать который желательно перед началом рабочего дня. Для запуска из командного файла по шедулеру требуется учесть настройку авторизации, без которой командный файл не отработает, так как будет ждать ввода пароля. В каталоге %APPDATA%\postgresql\ необходимо создать файл pgpass.conf, формат записей, которые необходимо создать для всех баз : : : : , например, localhost:5432:Dbname:postgres:password. В командной строке обслуживания указываем опцию — w, и авторизация будет использовать данные из конфига.

Пример:

Тестирование

Ну вот мы и готовы приступить к тестированию. Для этого мы выбрали достаточно высоконагруженную базу 1С из прод среды размером около 40 ГБ, в которой ежедневно более 500 подключений одновременно. Загрузка базы в формате DT подготовила нам первый сюрприз — она не залилась полностью, мы убедились в том, что те ошибки, которые прощает разработчикам MS SQL, в PostgreSQL вылазят наружу и требуют более тщательного подхода к написанию кода и организации хранения данных. Мы призвали на помощь наших разработчиков 1С. Они проанализировали ошибки и нашли причину — виной всему оказалось хранение в базе крупных и даже очень крупных объектов, таких как архивы, медиа-файлы и документы. Пришлось выполнить доработки в прод базе — ограничить максимальный объем вложений. Теперь вместо крупных вложений хранятся ссылки на них (ссылки на портал компании или другие облачные хранилища, такие как Google Disk). Автотесты, которые предусмотрены в нашей базе, также не прошли сразу по причине различия правил сортировки, и снова наши разработчики 1С оказались на высоте и удачно устранили все сложности.

После доработок базы приступили к тестированию производительности на PostgreSQL и MS SQL. APDEX показал примерно одинаковые результаты на MS SQL 0.862/0.877 на Postgre 0.898/0.895. Также мы протестировали время бекапирования и восстановления, MS SQL примерно в 1.5 -2 раза превосходит по скорости таких операций, но при объеме данной базы вилка по времени не значительна. Поэтому мы сделали вывод, что использование PostgreSQL вполне оправдано.

Переход

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

На следующее утро никто не заметил наших усилий и перемен, база работала также стабильно. На сегодняшний день она уже больше месяца функционирует на PostgreSQL. Так мы убедились, что PostgreSQL под управлением Windows 2016 Server хорошо справился с обеспечением необходимой производительности. Мы начинали проект с базовым набором знаний в PostgreSQL, в результате мы получили реальные пруфы и прокачали скиллы. Следующим этапом снижения стоимости содержания серверных баз 1С мы планируем использование Linux серверов. Таким образом мы исключим необходимость оплаты лицензий Windows.

Читайте также:  Сканирование стандартными средствами windows
Оцените статью