Можно ли использовать postgresql для 1с

Postgres Pro 1:

Postgres , 1 . START EVENT 2018 Postgres Professional .

, 1 + Postgres = !

Postgres Pro 1, 1.

, Postgres Pro 1. , 1 Postgres Pro .

PostgreSQL

. PostgreSQL 20 . PostgreSQL , » » .

Postgres Professional, . , , .

, PostgreSQL. . 2017 « 1» DB-Engines Ranking.

PostgreSQL , , . Postgres . — ! , PostgreSQL , .

Postgres 1 2008 , 1 . , , Postgres 1 , . . Postgres 1, , — .

, Postgres — 1 ? IT- , Postgres. . , Microsoft Oracle . Postgres. Postgres. , Postgres , , . — , , .. . Postgres . , , , . Postgres.

, Postgres, — . . , , . , Postgres .

Postgres. PostgreSQL, . , PostgreSQL — , . PostgreSQL : PostgreSQL, . .

Postgres : OLTP, — , OLAP, CLOUD, , SERIES. , . . , . , : , — ? , , . . . , — , . , , .

, . Microsoft Oracle 100 , , . . , . . . , — . — , , .

Postgres Professional Postgres, .

— . , , Postgres ?

, . , . Postgres. , , , , () . Postgres Pro.

Postgres Pro . , .

, Postgres. , 10- Postgres 100 . 11- , 20 . , . Postgres, , , , , .

, — — , . , . Enterprise, , — , — , — , . Open Source . 20 , Postgres, Open Source. , — , .

: , Open Source, , , Open Source . . Postgres. , Postgres, , . , , Postgres Pro Standard — Postgres.

, . , Postgres . , , ,. , . , .

Postgres Pro Standard 1. , . , , , .

Postgres Pro Enterprise — , -, . . , Postgres Postgres Pro Standard , Postgres Pro Enterprise. : Oracle, , — . , , .

Postgres Pro Enterprise:

  • ;
  • ;
  • .

, , , Postgres Pro Enterprise. , Enterprise . . , .

Postgres Pro . , . , Microsoft, . , , . , , , — , , . , 1 . , . .

1

, , 1 c:

  • PostgreSQL 9.6*;
  • PostgreSQL 10.3, 8.3.13 — ;
  • Postgres Pro Enterprise 9.6.3.1.

— — 1. :

  • Postgres Pro Enterprise 10.*;
  • Postgres Pro Standard 10.*;
  • PostgreSQL 10.*

, 1 PostgreSQL.

, , . — — , .

, Postgres 1 . Postgres . : « !». , Postgres, , Postgres, . , Postgres , . Postgres. Microsoft, , .

1

? 1, . Postgres Professional, . 1.

— , . . , , , , 1, . , , , « » « », , — . . , , , . .

Postgres 1

Postgres 9.6, , Postgres 11. , , , , — . 10.

, ? , :

  • — , ;
  • . , Postgres , . . 10 , .. — . , . 1, 1 , , ;
  • . , . . Postgres 10 , . , .

. 9.3 background workers — «», . 9.6 Parallel sequential scans, . .. 1 10 , 10 «» , over. , «». .

Hash joins Nested Loops — . , , 1 . , 8-12 , Postgres . . .

10 — Bitmap heap scans, Index scans, Merge joins…

. , 1- «» . , 1 2008 , . , 100 . 1 . , , , ? Postgres, . .

11 : , JIT- — Just-in- compilation, « ».

Postgres Pro

, . Postgres Pro . 60 TB, 10 TB. .

. 64- , , , . , 2 ., . .

.

, SELF-join. , , 1 SELF-join. . , . «select a, b, c from table» . join ..

join, , , , . (), , . , GROUP BY.

, Windows. Windows , -, . . , .

— . 20%. , , , , . , -, 20% — . , .

5- Postgres, 4-6 2019 .

, Postgres. , .

: «All you need is Postgres!».

.

****************

, START EVENT 2018 EDUCATION. .

2020 7 , START EVENT 2020 .

.

Источник

PostgreSQL 1

, 1 : , PostgreSQL, .

1 . . :

— MS SQL Server, — , 1 PostgreSQL, , , . ! — . , , , «» open source, , — , , . Open source , , , — . .

, , , . , PostgreSQL, , MS SQL. ? … , -. , MS SQL , PostgreSQL . .

, , PostgreSQL 1 (, …). , , MS Windows, 1. Linux based , , , ( , ).

, PostgreSQL . https://postgrespro.ru/products/1c 1. 50 mb, , , » — — «. , «Data», . . . , PostgreSQL MS SQL Server , , 1 , ERP. , .

:

1. .

PostgreSQL «» , . MS Windows c «|». :

pg_dump -h product_server -U postgres workbase | psql -h test_server -U postgres workbase_copy

: product_server test_server — PostgreSQL, workbase workbase_copy — PostgreSQL

— , , ! , . .

, 4. — .

:

  • , ,
  • . , — 1,5 ! .

2.

8.3.1 ( v81c_index) ( v81c_data) PostrgeSQL. (https://its.1c.ru/db/v8310doc#:cs:TI000000194)

— . . — ?

, .

PostgreSQL 2 : v81c_index v81c_data. , PostgreSQL , — . . 1 .

. — (pg_default).

, , .

« ?» — . . 3 , SSD, HDD 250 . 2 2 HDD , .

( 1, 2):

1. v81c_data

2. v81c_index

— , , «» , , .

3. , SSD

, , — . , — , ( 3).

3. .

, , .

, , , , , SSD 3 . » «. , . , SSD , «».

4.

, — : https://its.1c.ru/db/metod8dev#content:1798:hdoc:_top:configcas

MS SQL? . , PostgreSQL — .

«1»? — . .

4. ( ).

, , , , , , .

— . , , , , — . , RDP , . MS SQL? , . . PostgreSQL? ! pgAdmin. — .

pgAdmin 4 . 4 ? . , , pgAdmin , , . ( 5):

5. pgAdmin. .

, , pgAdmin , . , , . :

1. Python

https://www.python.org/downloads/

, . , ( 6):

6. Python

1.1. pip ( ).

python -m pip install —upgrade pip

2. «mod_wsgi», pgAdmin .

pip install mod_wsgi

3.

mod_wsgi-express module-config

, .

LoadFile «c:/users/v.fominykh/appdata/local/programs/python/python37-32/python37 .dll» LoadModule wsgi_module «c:/users/v.fominykh/appdata/local/programs/python/python 37-32/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win32.pyd» WSGIPythonHome «c:/users/v.fominykh/appdata/local/programs/python/python37-32»

4. Apache web server

, , https://www.apachelounge.com/

, ( — ).

Apache ( bin Apache):

httpd.exe -k install

5. PIP .

, , .

pip install flask pip install flask_babelex pip install flask_login pip install flask_mail pip install flask_paranoid pip install flask_security pip install flask_sqlalchemy pip install simplejson pip install python-util pip install flask_migrate pip install psycopg2 pip install Crypto ( pycrypto) easy_install pycryptodome pip install sshtunnel pip install flask_gravatar pip install psutil pip install sqlparse pip install flask_htmlmin

6. , pgAdmin .

https://www.pgadmin.org/docs/pgadmin4/dev/server_deployment.html

, pgAdmin «web» config.py config_local.py :

LOG_FILE = ‘C:/web/srv/var/log/pgadmin4/pgadmin4.log’ SQLITE_PATH = ‘C:/web/srv/var/log/pgadmin4/pgadmin4.db’ SESSION_DB_PATH = ‘C:/web/srv/var/log/pgadmin4/sessions’ STORAGE_DIR = ‘C:/web/srv/var/log/pgadmin4/storage’

«C:/web» , Apache, , :

python setup.py

Apache , ( 7)

7. httpd.conf

, port — .

<VirtualHost *:port> ServerName localhost WSGIScriptAlias / «C:Program Files (x86)pgAdmin 4v3webpgAdmin4.wsgi» <Directory «C:Program Files (x86)pgAdmin 4v3web»> Require all granted </Directory> </VirtualHost>

Apache.

7. https://localhost:port

. ! .

:

  • C:Program Files (x86)pgAdmin 4v3webpgadminbrowserserver_groupsservers__init__.py
  • C:Program Files (x86)pgAdmin 4v3webpgadminutilsdriverpsycopg2

password = data[‘password’] password = encrypt(password, current_user.password) password = bytes(data[‘password’], ‘utf-8’) password = encrypt(password, bytes(current_user.password, ‘utf-8’)) password = encrypt(password, user.password) password = encrypt(bytes(password, ‘utf-8’), bytes(user.password, ‘utf-8’)) password = decrypt(encpass, user.password) password = decrypt(encpass, bytes(user.password, ‘utf-8’))

Apache. ( 8):

8. , ,

, ( 9).

9. .

, !

Источник

PostgreSQL для 1С

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

Настройка PostgreSQL под 1С

Опыт эксплуатации баз 1С на PostgreSQL показал, что наибольшей производительности и оптимальной работы 1С и PostgreSQL удалось добиться на linux, поэтому желательно использовать именно ее. Но вне зависимости от операционной системы, важно помнить, что настройки, указанные по умолчанию при установке PostgreSQL, предназначены только для запуска сервера СУБД. Ни о какой промышленной эксплуатации речи идти не может! Следующим шагом после запуска станет оптимизация PostgreSQL под 1С:

  • Для начала отключаем Energy Saving (в противном случае могут непредсказуемо вырасти задержки ответов из БД) и запрещаем своппинг разделяемой памяти.
  • Настраиваем основные параметры сервера СУБД (рекомендации по настройке описаны достаточно подробно, как на официальном сайте вендора, так и компанией 1С, поэтому остановимся только на самых важных).
  • В типовых рекомендациях компании 1С предлагается отключать механизмы HyperThreading. Но тестирование Postgres-pro на серверах, с включенной SMT (simultaneous multi threading), показало другие результаты.
Читайте также:  Можно ли использовать зарубежную литературу

Установка параметра d_buffers в RAM/4 является рекомендацией по умолчанию, но пример Sql Server говорит о том, что чем больше памяти ему выделяется, тем лучше его производительность (при отключенном сбросе страниц в файл подкачки). То есть, чем больше страниц данных располагаются в оперативной памяти, тем меньше обращений к диску. Возникает вопрос: почему такой маленький кэш? Ответ прост: если d_buffers большой, то часть неиспользуемых страниц свопируется на диск. Но как отследить момент, когда сброс прекратится, и показатель параметра будет оптимальным? Для достижения и выхода на оптимальный показатель d_buffers, его значение необходимо поднимать на продуктиве ежедневно (по возможности) с определенным шагом прироста и смотреть, в какой момент начнется сброс страниц на диск (увеличится своп).

  • Помимо этого, на «большой параметр» негативно влияет работа с множеством мелких страниц, которые по умолчанию имеют размер 8Кб. Работа с ними увеличивает накладные расходы. Что можно с этим сделать для оптимизации под 1С? В версии postgreSQL 9.4 появился параметр huge_pages, который можно включить, но только в Linux. По умолчанию включаются огромные страницы с размером по умолчанию 2048 kB. Дополнительно поддержку данных страниц необходимо включить в ОС. Таким образом, оптимизировав структуру хранения, можно выйти на больший показатель d_buffers.
  • work_mem = RAM/32..64 или 32MB..128MB Задает объем памяти для каждой сессии, который будет использоваться для внутренних операций сортировки, объединения и пр., прежде чем будут задействованы временные файлы. При превышении этого объема, сервер будет использовать временные файлы на диске, что может существенно снизить скорость обработки запросов. Данный параметр используется при выполнении операторов: ORDER BY, DISTINCT, соединения слиянием и пр.
  • Посчитать дополнительно данный параметр можно следующим образом: (Общая память d_buffers — память на другие программы) / число активных соединений. Это значение можно уменьшать, следя за количеством создаваемых временных файлов. Такую статистику по размеру и количеству временных файлов можно получить из системного представления pg__database.
  • effective_cache_size = RAM — d_buffers основная задача этого параметра подсказать оптимизатору запроса, какой способ получения данных выбрать: полный просмотр или сканирование по индексу. Чем выше значение параметра, тем больше вероятность использования сканирования по индексу. При этом сервер не учитывает, что данные при выполнении запроса могут оставаться в памяти, и следующему запросу не надо их поднимать с диска.

Установка PostgreSQL

Установка 1С на PostgreSQL под Windows — достаточно простой процесс. При запуске установочного пакета необходимо указать кодировку UTF-8. По сути, это единственный интересный нюанс и еще какая-то настройка PostgreSQL для 1С 8.3 из-под Windows не потребуется. Установка и настройка PostgreSQL для 1С на ОС linux может вызвать ряд затруднений. Для их преодоления в качестве примера рассмотрим запуск работы (используя дистрибутивы ведущего российского вендора PostgreSQL-Pro и компании 1С) PostgreSQL на сервере Ubuntu 16.04 х64

Установка дистрибутивов 1С для СУБД PostgreSQL

1.Скачиваем указанную позицию дистрибутива СУБД PostgreSQL:

Рис.1 Оптимизация СУБД под 1С

2.Выкладываем PostgreSQL на сервер;

3.Распаковать установщик СУБД PostgreSQL можно командой:

tar -xvf postgresql-9.4.2-1.1C_amd64_deb.tar.bz2

4.Перед установкой дистрибутива СУБД PostgreSQL проверим наличие в системе необходимой локали (по умолчанию ru_RU.UTF-8):

Рис.2 Оптимизация СУБД под 1С

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

locale-gen ru_RU up-locale LANG=ru_RU.UTF8 dpkg-reconfigure locales

6.Если необходимая локаль все же имеется, устанавливаем ее по умолчанию:

locale -a nano /etc/default/locale Заменяем содержимое на LANG=ru_RU.UTF-8

7.После перезагрузки, установим необходимые пакеты для нашей версии PostgreSQL:

apt-get install libxslt1.1 ssl-cert

8.Версия PostgreSQL пакета 9.4.2-1.1C связана с пакетом libicu версии libicu48. В репозитории нужной версии уже нет, ее можно скачать;

9.Скачиваем и помещаем в каталог, где хранятся скачанные файлы для PostgreSQL;

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

cd dpkg -i libicu48_4.8.1.1-3ubuntu0.6_amd64.deb dpkg -i libpq5_9.4.2-1.1C_amd64.deb dpkg -i postgresql-client-common_154.1.1C_all.deb dpkg -i postgresql-common_154.1.1C_all.deb dpkg -i postgresql-client-9.4_9.4.2-1.1C_amd64.deb dpkg -i postgresql-9.4_9.4.2-1.1C_amd64.deb dpkg -i postgresql-contrib-9.4_9.4.2-1.1C_amd64.deb

11.Готово. Дистрибутив СУБД PostgreSQL установлен.

Бесплатная

консультация

эксперта

Сергей Ярастов

Руководитель направления

«Оптимизация

высоконагруженных систем»

Спасибо за Ваше обращение!

Специалист 1С свяжется с вами в течение 15 минут.

Установка дистрибутивов PostgreSQL-Pro

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

sudo sh -c ‘echo «deb https:// 1c.postgrespro.ru/deb/ $(lsb_release -cs) main» > /etc/apt/sources.list.d/postgrespro-1c.list’ wget —quiet -O — https:// 1c.postgrespro.ru/keys/GPG-KEY-POSTGRESPRO-1C-92 | sudo apt-key add — && sudo apt-get up sudo apt-get install postgresql-pro-1c-9.4

Для доступа к серверу редактируем параметры в файле pg_hba.conf

сd cp pg_hba.conf pg_hba.conf.old bash -c «echo ‘local all postgres trust’ > pg_hba.conf» bash -c «echo ‘host all all all md5’ >> pg_hba.conf»

Сам файл имеет следующую структуру:

Читайте также:  Можно ли использовать миди клавиатуру без компьютера

Рис.3 Оптимизация СУБД под 1С

Файл хорошо документирован, но на английском языке. Кратко рассмотрим основные параметры:

TYPE

  • Local локальное подключение только через unix
  • Host подключение по TCP/IP
  • Hostssl шифрованное SSL-подключение по TCP/IP (сервер должен быть собран с поддержкой SSL, также требуется установить параметр ssl)
  • Hostnossl нешифрованное подключение по TCP/IP

METHOD

  • trust допустить без аутентификации
  • reject отказать без аутентификации
  • password запрос пароля открытым текстом
  • md5 запрос пароля в виде MD5
  • ldap проверка имени и пароля с помощью сервера LDAP
  • radius проверка имени и пароля с помощью сервера RADIUS
  • pam проверка имени и пароля с помощью службы подключаемых модулей

Более подробную и развернутую информацию можно посмотреть в документации к продукту PostgreSQL.

Далее необходимо запустить сервер:

root@NODE2:/home/asd# service —us-all |grep postgres [ — ] postgresql root@NODE2:/home/asd# service postgresql start root@NODE2:/home/asd# service —us-all |grep postgres [ + ] postgresql

После окончания основной установки, необходимо настроить конфигурационный файл сервера postgresql.conf, согласно специфики работы PostgreSQL, сервера 1С и конфигурации сервера Ubuntu.

Оптимизация 1С под MS SQL Server

Устанавливаем последние обновления для SQL Sever.

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

  • Создание базы данных;
  • Добавление файлов данных, журнал транзакций, к существующей базе данных;
  • Увеличение размера существующего файла (в том числе Autogrow-операций);
  • Восстанавливаем базы данных или группы файлов.

Решается данная проблема добавлением роли (под которой запущен сервер) к пункту локальной политики безопасности «Выполнение задач по обслуживанию томов».

При возможности необходимо разнести базу TempDB (особенно интенсивно она используется в режиме управляемых блокировок RCSI) и журнал транзакций на разные диски.

На сервере, где работает SQL сервер, режим энергосбережения должен быть установлен в «Высокая производительность».

По рекомендации Microsoft, разнести кластерные и некластерные индексы на разные диски, предварительно разместив некластерные индексы в отдельной файловой группе.

В папке с файлами БД не должно быть сжатия.

На вкладке «Память» для сервера устанавливаем минимальную планку в размере 50% от общего объема памяти. Максимальную рассчитываем по одной из формул:

  • Максимальная память = Общий объем — размер по ОС — размер под 1С (Если он есть, предварительно замерив счетчиками используемую память) или
  • Максимальная память = Общий объем — (1024* Общий объем/16384).

Ограничиваем параметр DOP «Max degree of parallelism» и ставим его в значение «1».

Актуализируем статистику по расписанию. Начиная с SQL Server 2008, обновление статистики вызывает перекомпиляцию запросов и, соответственно, очищает процедурный кэш, поэтому отдельную процедуру по очистке процедурного кэша выполнять не надо.

Периодически проводим реиндексацию таблицы и дефрагментацию индексов.

Устанавливаем правильную политику резервирования. Если вам не надо восстанавливаться на последний момент времени к краху системы, а последние минут 5 или больше для вашего бизнеса не критичны, то установите модель восстановления в «Простая». Этим вы ускорите в разы скорость при записи. Главное, чтобы дифференцированный бекап успевал выполняться за указанное время.

Добиваемся улучшения при работе с TempDB при вводе/выводе посредством создания дополнительных файлов данных. Если логических процессоров меньше 8, рекомендуется создать файл данных для каждого логического процессора. Если логических процессоров больше 8, рекомендуется создать 8 файлов данных и, увеличивая на один при кратности 4, обязательно оценить нагрузку на TempDB.

Источник

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

02 ноября 2020

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

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

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

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

РольКонфигурация
Сервер БД MS SQL10 vCPU 50 RAM
Сервер предприятия 1C6 vCPU 20 RAM
Сервер БД PostgreSQL10 vCPU 50 RAM

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

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

Можно ли использовать postgresql для 1с

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

Можно ли использовать postgresql для 1с

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

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

Читайте также:  Можно ли использовать сухожар без крафт пакетов

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

«c:Program FilesPostgreSQL11.5-19.1Cbininitdb.exe» —encoding=UTF8 -U «postgres» -D «d:DataFolderInstansName»

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

«c:Program FilesPostgreSQL11.5-19.1Cbinpg_ctl.exe» register -N «OriginalName-5433» -U «NT ITYNetworkService» -D «d:DataFolderInstansName»

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

Результат:

Можно ли использовать postgresql для 1с

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

Можно ли использовать postgresql для 1с

После этого можем зайти в графический клиент управления 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, и авторизация будет использовать данные из конфига.

Пример:

«c:Program FilesPostgreSQL11.5-19.1Cbinpsql.exe» -d Dbname -U postgres -w -c «VACUUM FREEZE VERBOSE ANALYZE;»

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

Ну вот мы и готовы приступить к тестированию. Для этого мы выбрали достаточно высоконагруженную базу 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.

Источник