1. Сборка PostgreSQL из исходников для
системных администраторов
pgconf 2017
15-17 марта 2017
Дмитрий Кремер
Администратор баз данных
E-mail: d.kremer@rian.ru
dmitry.kremer@gmail.com
#PostgreSQLRussia
2. МИА «Россия сегодня»
● Ведущее международное новостное агентство с 1941 года (тогда СовИнформБюро)
● Крупнейший поставщик новостного и медиа-контента в Российской Федерации (бренды РИА Новости и
Sputnik News)
● Фотохостинг Олимпиады в Сочи 2014
● Десятки корреспондентов по всей России
● Современные мультимедиа-прессцентры в Москве и Симферополе
● Платформы в социальных сетях
● Производство и распространение фотоконтента,инфографики,контента для мобильных приложений.
Дмитрий Кремер
● Опыт работы с различными базами данных в качестве разработчика и системного администратора с 1999 года.
● Непрерывный опыт работы с БД Oracle c 2007 года
● Oracle Certified Professional 9i,10g
● Начал работать с PostgreSQL в мае 2015 года.
3. Зачем собирать PostgreSQL из исходников в 2017?
● Разделение обязанностей администратора ОС и БД
● Независимость от обновлений пакетной базы конкретного дистрибутива
● Возможность тонкой настройки ПО PostgreSQL
● Не для всех минорных версий досупны пакеты
● Сборка с флагами отладки для тестового окружения/среды разработки
4. Зависимости
Удаляем пакеты,если они установлены,чтобы избежать накладок
$ rpm -qa | grep -i postgresql
$ yum -y remove postgresql-libs postgresql postgresql-odbc
Устанавлием пакеты
$ yum install -y readline-devel libxml2-devel libxslt-devel
Набор пакетов зависит от опций сборки,указывающих,какие компоненты вы подключаете.
readline-devel нужен,если конечно вы не хотите,чтобы psql превратился в тыкву sqlplus.
libxml2-devel и libxslt-devel понадобится для сборки документации,ну и собственно,
поддержки xml в PostgreSQL,если будут указаны соответствующие флаги сборки
5. Выбор опций сборки
Флаги сборки:
$ ./configure —help
https://www.postgresql.org/docs/current/static/install-procedure.html
Рекомендуется установить:
Так же можно включить поддержку языков для хранимых процедур:
--with-perl,--with-python,--with-tcl
--with-openssl
--with-ldap
--with-pam
--prefix=/opt/$pg_name
--with-systemd
--with_libxml
--with_libxslt
6. Флаги для добавления отладочной информации
● --enable-debug build with debugging symbols (-g)
● --enable-profiling build with profiling enabled
● --enable-coverage build with coverage testing instrumentation
● --enable-dtrace build with DTrace support
● --enable-tap-tests enable TAP tests (requires Perl and IPC::Run)
● --enable-cassert enable assertion checks (for debugging)
Дополнительные флаги для оптимизации:
CFLAGS="-O3 -march=native -flto -g"./configure ...&& make ...&& …
-flto —link time optimization
7. Сборка и установка
Установка флагов:
$ ./configure --prefix=/opt/$pg_name --with-systemd with_libxml=yes with_libxslt=yes
Сборка.Параметр world соберет сразу бинарники,документацию (mans) и расширения.
$ make world -j6
Прогон тестов:
$ make check
$ make check-world
Установка в папку
$ make install-world || sudo make install-world