Сборка PostgreSQL 9.4.2 из исходников с патчами от 1С

Честно — не нашел нигде описания того, как пропатчить KDE для FreeBSD, поэтому решил ликвидировать данную несправедливость. Ниже по тексту я расскажу не только про то, как собрать Postgres, но и как использовать флаги оптимизации для вашего процессора, чтобы все работало максимально быстро. Ну и немного остановлюсь на конфигурировании и администрировании.

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


Давайте разберемся, что мы тут будем делать по-взрослому, по программистскому )))

  1. Установим Ubuntu Server на виртуалку, чтобы было на чем тренироваться.
  2. Скачаем с сайта 1С последние исходники с патчами.
  3. Накатим патчи на исходники.
  4. Прикола ради попробуем собрать — не получилось, ибо в исходниках Postgres’а ошибочка в юнит-тесте XML.
  5. Соберем вручную.
  6. Инстальнем, что получилось.
  7. Создадим кластер.
  8. Попробуем запустить — ай-ай-ай, не запускается.
  9. Исправим файлик запуска.
  10. Накатим что-нибудь большое, чтобы было с чем поиграться и потестировать. Например, базу недействительных паспортов.
  11. Соберем с оптимальными ключами.
  12. А есть ли разница?

Ну что ж, приступим.

Установим Ubuntu Server на виртуалку

Итак, скачаем образ серверного Ubuntu отсюда. Если в качестве хост-стстемы у Вас стоит Windows, то, как я слышал, там есть какие-то проблемы с запуском 64-битных виртуалок. Если не взлетает — качните 32-битный образ, но это как-то не по-взрослому. Если у кого еще нет виртуальной машины, то это всегда можно по-быстрому исправить.

Собственно, у меня больше проблем возникает с установкой Windows, но, на всякий случай, покажу Вам пару картинок, как вообще развернуть Ubuntu Server на VirtualBox’е.

Для начала создадим новую виртуальныю машину. Запустим VirtualBox:

Менюшка Unity

В окошке создания новой виртуальной машины укажем имя, тип и версию гостевой операционной системы:

Создание ВМ

Дальше немного настроек. Отдадим нашей ситеме 1 гибибайт памяти (ну или гигабайт, если Вы привыкли говорить так):

Создадим виртуальный жесткий диск емкостью в 20 ГиБ, например.

Перейдем к настройкам машины. В настройка системы уберем загрузку с дискеты, укажем самый новый чипсет и PS/2 мышь.

На закладке «Ускорение» укажем, что используем аппаратную виртуализацию по полной (надеюсь, она у Вас есть).

В настройках носителей примонтируем в «оптический привод» наш образ. В принципе можно указать, что это «Live-CD».

С виртуалкой все. Теперь давайте установим систему.

После старта, если у Вас все галочки поставились как надо, Вы увидите экран с выбором языка:

Выберем с помощью стрелок клавиатуры нужный нам язык (например, «Русский») и нажмем Enter на первом пункте «Установить Ubuntu». Дальше Вам зададут абсолютно стандартные вопросы на тему раскладок клавиатуры и имени пользователя, как разбить диск и что туда ставить. В принципе не вижу ничего сложного в том, чтобы выбрать правильный ответ. Вопросы при сдаче экзамена на какого-нибудь профессионала куда сложнее, а количество пересдач в нашем случае вообще неограничено.

После установки мы получим какой-то такой экран. И если у Вас получится ввести имя пользователя и пароль правильно с первого раза, то Ваш экран будет незначительно отличатся от моего )))

Заметьте, Ubuntu не дает никаких гарантий, а Windows дает? Кто-нибудь уже стряс что-нибудь с Microsoft? Нет? Ну а если нет разницы, то зачем платить больше? ))) Кстати, всегда интересовало, какие гарантии снимает с нас 1С, когда мы ковыряемся в СУБД своими шаловливыми ручками? И на какие гарании можно рассчитывать от 1С и с каким SLA, если мы ничего такого не делаем? А то тут недавно в одной большой конторе пришлось залезть в их MS SQL, чтобы исправить ошибку формирования оборотки, в которой внезапно пропала вся аналитика. Цифры есть, а субконто — нет. Синтетику — пожалуйста, а если с аналитикой — пустой отчет. Странно, что никто в сторону MS и 1C даже не мяукнул, во всем обвинили разработчиков конфигурации, а не платформы, операционной системы или сервера СУБД, в которых, собственно, и была проблема. Так что если Вас до сих пор волнуют вопросы гарантии — сходите и прыгните с высогого здания, чтобы зря не мучиться)))

Продолжаем разговор (с)…

Для начала обновим систему, чтобы все было хорошо. Для этого наберем в командной строке такое заклинание:

sudo apt-get update
sudo apt-get dist-upgrade

Первая команда обновляет из репозитариев информацию о пакетах, а вторая скачивает и устанавливает обновления, включая обновления ядра. У меня все оказалось после установки новое.

Дальше можно накатить пакет расширений для гостевой ОС. Для этого в меню «Устройства» виртуальной машины выберите «Подключить образ диска дополнений гостевой ОС». После этого нам следует куда-нибудь примонтировать CDROM и запустить скриптик, устанавливающий дополнения:

sudo mount /dev/cdrom /media/cdrom
cd /media/cdrom

Если сейчас мы запустим скрипт, то полчим ошибку, т.к. у нас не установлены пакеты для сборки. Давайте исправим это:

sudo apt-get install build-essential

Теперь установим гостевое ПО:

sudo sh VBoxLinuxAdditions.run

Получилось? Замечательно!

Устанавливаем правильную локаль

Для того, чтобы 1С не говорила, что Postgres невозможно использовать, в системе нужно поставить правильную «локаль». Для этого следует выполнить следующие команды:

locale-gen en_US
locale-gen ru_RU
update-locale LANG=ru_RU.UTF8
dpkg-reconfigure locales

Команды эти необходимо выполнять от имени администратора. Для этого лучшее всего ввести «sudo -i», после чего система «переходит» в режим root’а. Выйти из него можно (и нужно, чтобы не было проблем с дальнейшими нашими действиями) командой «exit».

Качаем Postgres с сайта 1С с патчами

На 1С-овском сайте есть соответствующий раздел, в котором абсолютно открыто лежат нужные нам файлики в количестве целых одна штука. Чтобы не мучиться с сетевыми папками и прочим, давайте скачаем этот файлик прямо из Ubuntu. Для этого в linux есть простой скачивальщик файлов «wget». Так и запишем:

wget http://v8.1c.ru/overview/postgresql_patches/9-4-2/postgresql-9.4_9.4.2-1.1c.deb.zip

Теперь остается распаковать файл и попытаться собрать. Для упрощения жизни давайте установим миднайт-коммандер — замечательный файловый менеджер. Полагаю, Вы уже поняли, как устанавливаются здесь программы: просто набираете «sudo apt-get install имя_программы» и вводите пароль. Если хотите более выдающегося интерфейса, то можете зайти в менеджер пакетов aptitude, но там и потеряться можно — пакетов тысячи. Запускаем mc и видим скаченный нами файл:

Создадим каталог, например postgres-install, в который с помощью mc распакуем наш архив. Собственно, здесь у нас три файла: файл с оригинальным постгресом (он абсолютно идентичен архиву с исходниками с официального сайта Postgres’а, только название изменено), файл с заплатками для сборки пакета под debian (Ubuntu использует инструменты сборки пакетов из debian, так что это то, что нужно) и файл с описанием (.dsc — дескрипшн). Давайте распакуем все это и накатим патчики. Для этого нам нужно выполнить следующую команду:

dpkg-source -x *.dsc

Вот что должно появиться на Вашем экране:

Мы распаковали файлы с исходниками и применили к ним патчи.

Если бы не было ошибки с юнит-тестом XML в данной версии сборки, то мы бы могли написать одну команду, которая собрала бы нам установочные пакеты. Но т.к. при этом запускаются юнит-тесты и на одном из них валится ошибка, то нам придется собирать пакет самостоятельно. И это … хорошо! )))

Собираем PostgreSQL вручную

Для того, чтобы все было совсем хорошо, нам надо узнать, какие библиотеки поставить для сборки. Поэтому все-таки воспользуемся той волшебной командой, которая могла бы нам собрать пакет. Для этого нужно зайти в каталог, в который распаковались исходники, и запустить следующую команду:

cd postgresql-9.4-9.4.2
dpkg-buildpackage -rfakeroot

В выводе команды у нас будет следующее сообщение: «Неудовлетворенные сборочные зависимости: …» Указанные пакеты надо поставить через уже известный нам sudo apt-get install:

sudo apt-get install libperl-dev libipc-run-perl tcl8.6-dev  libedit-dev libssl-dev libpam0g-dev libxml2-dev krb5-multidev libldap2-dev libselinux1-dev libxslt1-dev python-dev python3-dev bison openjade docbook-dsssl docbook-xsl docbook opensp xsltproc libicu-dev ...

В общем и целом наша задача — переписать в эту строку все те пакеты, которые нам понадобятся и на которые ругается dpkg.

Кстати, стоит особо отметить одну библиотеку, в которой нуждается 1С-овский постгрес — это icu. В серверной убунту 14.04 по умолчанию ставится версия 52 этой библиотеки, но люди говорят, что надо 48-ю, поэтому эти два пакета придется скачать отдельно и установить командой «dpkd -i имя_пакета». Нам нужны пакеты ibicu-dev и libicu48.

После того, как все пакеты установлены, можем еще раз запустить «dpkg-buildpackage -rfakeroot», чтобы проверить, все ли зависимости удовлетворены. Если сборка пошла, то можно подождать и узнать, что из этого выйдет. У меня все завершается ошибкой юнит-теста для xml. Но то, что сборка началась — это уже хорошо. Давайте соберем это чудо программной мысли руками. Для этого запустим ./configure. Эта команда подготавливает make-файл для сборки. В качестве ключей можно передать те или иные параметры, о которых можно узнать с помощью ./configure — help. Можно запустить и без ключей, указав параметры сборки по-умолчанию. Видел рекомендацию запускать так: «./configure —disable-integer-datetimes», но, как мне кажется, это не обязательно.

Когда команда ./configure отработает, мы получим возможность собрать нашу программу. Если ошибок не было, то выполните make clean, чтобы почистить мусор от предыдущей неудачной сборки. Дальше соберем программу с помощью make -j X, где Х — это количество потоков. Я указываю 8, т.к. у меня типа восьмиядерная машина (четыре виртуальных ядра i7 я тоже считаю). Вот, все побежало куда шустрее, хотя я и выделил своей виртуальной машине всего два ядра из четырех. Если все собралось хорошо, то последней строчкой будет такая: «All of PostgreSQL successfully made. Ready to install.»

Установка

Ну собрать мы вроде как собрали, теперь давайте установим. В этом тоже ничего сверхъестественного нет, просто выполним sudo make install и введем пароль. Установка у меня заняла примерно 2 секунды. Теперь попробуем запустить нашу СУБД. Для этого нужно произвести следующие шаги:

  1. Создать пользователя postgres командой: «sudo useradd postgres -p postgres -U -m»
  2. Установить владельцем каталога, куда мы поставили PostgreSQL, данного пользователя: «sudo chown -R postgres:postgres /usr/local/pgsql»
  3. Инициализировать кластер: «/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data». Тут нужно отметить, что кластер придется создавать от имени пользователя postgres. Чтобы залогиниться под ним, надо выполнить «sudo su — postgres». После инициализации кластера в каталоге «data» создается структура кластера с конфигурационными файлами, и нам сообщают, что каталог инициализирован и можно запустить постгрес такой-то или этакой-то командой. Если мы попытаемся запустить команду от рута, то нам скажут, что это небезопасно. Если от пользователя postgres — то поулчим ошибку «FATAL: could not create lock file …».
  4. Поборем ошибку из 3. Для этого нам нужно поменять файл postgresql.conf, который находится в каталоге data. Отредактировать там надо параметр «unix_socket_directories», в котором нужно указать каталог «/tmp». И не забудьте убрать решетку в начале строки.

Автозагрузка

Пропишем наш сервер в автозагрузку. Для этого нужно:

  1. Скоприовать файлик из каталога сборки «contrib/start-scripts/linux» в каталог «/etc/init.d/». Выполним «sudo cp ./contrib/start-scripts/linux /etc/init.d/postgres». 
  2. Сделать файл исполняемым «sudo chmod +x /etc/init.d/postgres»
  3. Выполнить «sudo update-rc.d postgres defaults» для обновления информации об автозагрузке.
  4. Ну и финальное «sudo service postgres start»

Все, теперь у нас полностью рабочий постгрес, который можно юзать для работы с 1С. Подключимся к нему с помощью pgadmin:

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

По поводу оптимизации, то предлагаю Вам собрать постгрес с ключами, оптимальными для Вашего процессора. Для этого нужно выполнить команду «gcc -march=native -E -v — </dev/null 2>&1 | grep cc1″, в выводе которой лично у меня вот что:

/usr/lib/gcc/x86_64-linux-gnu/4.8/cc1 -E -quiet -v -imultiarch x86_64-linux-gnu - -march=corei7-avx -mcx16 -msahf -mno-movbe -maes -mpclmul -mpopcnt -mno-abm -mno-lwp -mno-fma -mno-fma4 -mno-xop -mno-bmi -mno-bmi2 -mno-tbm -mavx -mno-avx2 -msse4.2 -msse4.1 -mno-lzcnt -mno-rtm -mno-hle -mno-rdrnd -mno-f16c -mno-fsgsbase -mno-rdseed -mno-prfchw -mno-adx -mfxsr -mxsave -mxsaveopt --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=6144 -mtune=corei7-avx -fstack-protector -Wformat -Wformat-security

Из этого всего нам надо то, что является ключом (т.е. со знаком «-» или «—» перед словом). Я лично взял начиная с «-march=corei7-avx» и до конца строки. Для того, чтобы компиляция пошла с этими ключами, нам надо передать их в ./configure через опцию CFLAGS. Т.е. пишите что-то типа:

./configure CFLAGS='-march=corei7-avx ...'

Вот и все!

29 Comments

  1. Berckk

    Автору спасибо.

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

    В предлагаемых пакетах используется более новый PostgreSQL 9.4.6. Эта версия СУБД имеет множество улучшений, прежде всего связанных с отказоустойчивостью.

    http://www.postgrespro.ru/products/1c_build

    Reply
  2. starik-2005

    (1) Berckk, сейчас актуальная версия 9.5, но, как я понял1с еще не накатила туда свои патчи. В ней тоже много улучшений.

    Reply
  3. Danila-Master

    Спасибо за статью.

    Только вопрос:

    В стандартных репозетариях Ubuntu есть тоже Postgres. И при последующих обновлениях операционки, update попытается перетереть Postgres от 1С на Postgres и репозитария.

    Знаю, что есть возможность отключить обновление Postgres’а.

    Собственно как это сделать?

    Reply
  4. starik-2005

    (3) Danila-Master, когда собираешь руками, то не пытается. Отключить обновления можно так: http://www.linuxrussia.com/2013/10/ubuntu-hold-package.html

    Reply
  5. B2B
    «./configure —disable-integer-datetimes»

    Начиная с платформы версии 8.3.3 этот параметр не обязателен.

    Reply
  6. starik-2005

    (5) B2B, ну вот и я о том же…

    Reply
  7. Danila-Master

    (4) Понял, спасибо

    Reply
  8. osipovigor

    Я извиняюсь, я новечек в этом всём, и дико туплю, но после установки постгри от сюда:

    http://www.postgrespro.ru/products/1c_build

    у меня 3 каталога

    /etc/postgresql

    /usr/lib/postgresql

    /usr/hare/postgrsql

    С каким из них необходимо работать? 🙂

    Reply
  9. starik-2005

    (8) osipovigor, ну Вы всегда можете выполнить «sudo service postgres status» для отображения, откуда запущен экземпляр постмастера. В etc обычно лежат конфиги. В lib — сам постгрес. В share скорее всего данные или документация. В обычных сборках для Linux данные хранятся в /var/…

    В принципе, последние версии платформы умеют работать с непереработанным PostgreSQL, так что можете просто установить постгрес и определить локали.

    Reply
  10. osipovigor

    (9) /usr/lib/postgresql/bin/initdb -D /usr/lib/postgresql/data — ругается на /usr/local/pgsql/bin/initdb — нет такого файла или каталога, но по идее при установке он должен был создаться? или мне нужно его создать?

    UPD

    Путь немного другой оказался

    /usr/lib/postgresql/9.4/bin/initdb

    Reply
  11. starik-2005

    (10) osipovigor, в готовых дистирибах обычно скрипт уже разворачивает кластер и вручную этим заниматься не нужно.

    Reply
  12. osipovigor

    Очередной глупый вопрос… не могу понять как выставить пароль на юзера postgres, в документации пишут

    sudo -u postgres psql template1 и потом ALTER USER postgres with encrypted password ‘your_password’ , но что-то у меня не получается 🙂

    Reply
  13. starik-2005

    (12) osipovigor, дык вроде в статье все есть. pgsql -U posrgres — зайти в консольную утилит. Вообще там pg_createuser или както так — посмотрите.

    Reply
  14. osipovigor

    (13) т.к. для меня это всё в новинку, меня надо ткнуть в нужный пункт носом как нашкодившего кота… и по возможности разжевать, я понимаю что вроде бы всё должно быть очевидно… но видимо не для меня 🙂 При вводе su postgres он сразу же пароль просит.

    UPD

    нашёл, под рутом passwd postgres

    Reply
  15. starik-2005

    (14) osipovigor, если набрать sudo su — postgres, то пароль спросят ваш, а не postgres’а.

    Reply
  16. Necessitudo

    Примечание к добавлению локалей — если убунта английская, то русской локали под UTF8 может не быть. Добавляется так —

    echo ‘ru_RU.UTF-8 UTF-8’ >> /var/lib/locales/supported.d/local;

    Примечание к скачиванию патча — путь изменился, теперь нужно так —

    wget http://downloads.v8.1c.ru/get/Info/AddCompPostgre/9_4_2_1_1C/Patch_SUBD_PostgreSQL.rar

    mc просто так rar не откроет, поэтому делаем так —

    sudo apt-get install unrar-free

    Reply
  17. starik-2005

    (16) Necessitudo, у меня по этой ссылке сейчас не открылось — 403-я ошибка.

    Reply
  18. Necessitudo

    (17) Хм, а у меня открывается.

    Вопрос —

    Кстати, стоит особо отметить одну библиотеку, в которой нуждается 1С-овский постгрес — это icu. В серверной убунту 14.04 по умолчанию ставится версия 52 этой библиотеки, но люди говорят, что надо 48-ю, поэтому эти два пакета придется скачать отдельно и установить командой «dpkd -i имя_пакета». Нам нужны пакеты ibicu-dev и libicu48.

    Так а как их установить? Я их отдельно скачал

    http://security.ubuntu.com/ubuntu/pool/main/i/icu/libicu-dev_4.8.1.1-3ubuntu0.6_amd64.deb

    http://security.ubuntu.com/ubuntu/pool/main/i/icu/libicu48_4.8.1.1-3ubuntu0.6_amd64.deb

    parallels@ubuntu:~/Documents/postgres-install/postgresql-9.4-9.4.2$ sudo dpkg -i -R /home/parallels/Documents/postgres-install/postgresql-9.4-9.4.2

    (Reading database … 230244 files and directories currently installed.)

    Preparing to unpack …/libicu48_4.8.1.1-3ubuntu0.6_amd64.deb …

    Unpacking libicu48 (4.8.1.1-3ubuntu0.6) over (4.8.1.1-3ubuntu0.6) …

    Preparing to unpack …/libicu-dev_4.8.1.1-3ubuntu0.6_amd64.deb …

    Unpacking libicu-dev (4.8.1.1-3ubuntu0.6) over (4.8.1.1-3ubuntu0.6) …

    Replaced by files in installed package icu-devtools (52.1-3ubuntu0.4) …

    Setting up libicu48 (4.8.1.1-3ubuntu0.6) …

    dpkg: dependency problems prevent configuration of libicu-dev:

    icu-devtools (52.1-3ubuntu0.4) breaks libicu-dev (<< 52.1-3ubuntu0.4) and is installed.

    Version of libicu-dev to be configured is 4.8.1.1-3ubuntu0.6.

    dpkg: error processing package libicu-dev (—install):

    dependency problems — leaving unconfigured

    Processing triggers for man-db (2.6.7.1-1ubuntu1) …

    Processing triggers for libc-bin (2.19-0ubuntu6.7) …

    Errors were encountered while processing:

    libicu-dev

    И что с этим дальше посоветуете сделать? У меня Убунта 14.04 — но Desktop.

    Reply
  19. starik-2005

    (18) Necessitudo, да в принципе также: sudo dpkg -i libicu… Но у Вас там devtools от последней версии установлен, поэтому его предварительно надо снести, иначе проблема с зависимостями. Удалять пакеты можно командой sudo apt-get purge имя_пакета.

    По поводу 403, то вот оно:

    Reply
  20. Necessitudo

    (19) Ну мы должны были догадаться — ссылка действительна только для тех кто залогинился на

    https://users.v8.1c.ru/ Иначе бы можно было релизы любых типовых скачивать по прямой ссылке:)

    Reply
  21. starik-2005

    (20) Necessitudo, раньше 1С выкладывала патчи и постгрес в открытом доступе. Хотя патчи те еще — что-то оптимизируют, что-то ломают )) Вот, видимо, и решили не позориться.

    Reply
  22. audion

    (21) Сергей, большое спасибо за статью, очень своевременная и полезная. Насчет патчей в открытом доступе — почему-то старый адрес дает 404. Может, поправят.

    Ну, зато есть https://www.postgrespro.ru/products/1c_build где есть ссылки на репы для Ubuntu/Debian и CentoOS, где, естественно, есть и раздел src. Так что для экспериментов вполне можно сдуть сырцы оттуда и пересобрать PG под себя.

    Например, на странице http://1c.postgrespro.ru/deb/pool/main/p/postgresql-9.4/ есть все уже собранные билды для разных deb-based дистрибутивов, равно как и пакеты для сборки. В частности, вот прямая ссылка на архив http://1c.postgrespro.ru/deb/pool/main/p/postgresql-9.4/postgresql-9.4_9.4.7-1.trusty-1C.debian.tar.gz для трасти. В архиве есть каталог patches, где собраны все эти патчи.

    И вот еще добавлю: для понимания сущности того, что добавили эти патчи: http://www.silverbulleters.org/ne-obizhayte-linux-oida-ili-osobennosti-patcha-1s-dlya-postgresql/

    Reply
  23. starik-2005

    (22) audion, да, мне автор вебинара про постгри скидывал данную ссылку (в конце Вашего сообщения). Сказал, что fastrun — это специальная опечатка, но верится с трудом, ибо правильно будет «fasttrun» ))) … ну и прочие мелочи в статье скорее выдают «юношу с взором горящим«, нежели профессионала, хотя, как я понял, автор и сам готов дать заветов массу )))

    По поводу «постгри.про», то в самом первом комментарии авторы «про» уже отписались. Рад, что у них там и исходники 1С-освского постгри выложены, ибо сейчас 1С их из свободного доступа убрала.

    Вообще, по поводу сборки, то имеет смысл собирать под текущую архитектуру процессора, используя ключи сборки -march=native -O3 -flto — это позволяет существенно (до 20-25%) повысить скорость стандартного теста pgbench (у меня с 8к до 10,8к увеличилась скорость при j10 и с10). Ну а по поводу настроек памяти, то, полагаю, Вам и так теперь известно, куда крутить параметры в конфиге постгри.

    Reply
  24. audion

    (23) насчет «fastrun» — Алексей уже говорил, это одна из его милых шуточек, пасхалок, что-ли. Как и Frag_I_ster, да простит меня многоуважаемый камрад Fragster за этот пример. У Алексея много такого, вспомните, им упоминалась версия 1С 8.3.7.1760 (хотя, естественно, речь о 8.3.6.1760). Типа защита от копирования. Я, лично, резко против такой защиты, это не комильфо, ну да дело хозяйственное. Статья, в общем-то, согласен, несколько сумбурная и лихая, но назначение трех патчей в ней худо-бедно изложено. Может, полезными будут и слайды Льва Ласкина https://pgconf.ru/media/2016/02/19/%D0%9B%D0%B0%D1%81%D0%BA%D0%B8%D0%BD%20%­D0%9B%D0%B5%D0%B2.pdf

    Из первого поста не было понятно, что на сайте PG Pro есть сами исходники, вот и добавил прямую ссылку, а то заметил, народ стал часто об этом спрашивать. Может, добавите в статью этот момент, а то неофиты будут спотыкаться.

    Насчет ключей сборки — спасибо, очень полезно. Я сейчас вот с zfs экспериментирую, пока что данные противоречивые, но как только что-то интересное выплывет, обещаю поделиться. И кстати, встретил рекомендацию, что если баз много, очень полезно увеличивать кол-во autovacuum_max_workers до кол-ва, когда один процесс будет в запасе, и настройки autovacuum делать весьма агрессивными, но при этом каждую минуту запускать из крона скрипт, который устанавливает процессам autovacuum пониженный приоритет. Думаю, от раздувания баз и постоянно работающего вакуума это действительно помогает.

    Reply
  25. starik-2005

    (24) audion, я думаю, что все это может потянуть на отдельную статью. Хотелось бы написать ее в соавторстве с товарищами, которые пилят постгри.про. Если у них найдется желание и время — я только за. Можно было бы опустить детали по установке сервера и сосредоточиться на установке именно самого постгри.

    Reply
  26. Alik_1c

    Ваша статья очень содержательна но ссылки не работают. Исправьте пожалуйста.

    Reply
  27. starik-2005

    (26) Alik_1c, да, ссылки перестали работать. Статью я скорее всего напишу новую, ибо многое поменялось с тех совсем недалеких пор: 1С зачем-то закрыла часть сайта, на которой располагались постгри с исходниками. Исходники появились на сайте постгрес.про. Полагаю, что-то могло поменяться и в сборке — надо будет еще раз все проделать и описать. Думаю ближе к майским.

    Reply
  28. ikekoval

    При попытке через интерфейс выбрать «Получить образ диска Дополнений гостевой ОС» получал ошибку с расшифровкой Could not mount the media/drive ‘/usr/share/virtualbox/VBoxGuestAdditions.iso’ (VERR_PDM_MEDIA_LOCKED).

    Вылечилось sudo apt-get install virtualbox-guest-additions-iso

    Reply
  29. user848206

    Лучшая статья что нашел.

    Дополню.

    После установки при создании базы ругалось на

    syntax error at or near «SECOND»

    if arg_mode = ‘SECOND’ then

    помогло изменение в конфиге этих параметров (после создания базы вернуть как было)

    backslash_quote = on

    escape_string_warning = off

    standart_conforming_strings = off

    потом ругалось на

    «$libdir/fasttrun»: No such file or directory

    оказалось компилировать надо не make install, а make install-world

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *