Используемые термины: PostgreSQL , Linux .
При возникновении сложных проблем требуется посмотреть на более детальный лог. Он, по умолчанию, не включен, так как создает очень высокую нагрузку на систему и занимает много дискового пространства. Рассмотрим его включение и средства просмотра. Предполагается, что мы работаем в системе Linux и у нас уже установлена и работает СУБД PostgreSQL.
Для включения подробного лога, наша СУБД должна быть собрана с опцией debug. Посмотреть опции сборки установленного PostgreSQL можно с помощью команды pg_config. Так как она может быть установлена вне стандартного каталога для запуска, вводим:
find / -name pg_config -type f
Допустим, команда вернула:
/usr/pgsql-11/bin/pg_config
* далее, наша работа должна учитывать данный путь. Ниже по инструкции вам нужно будет менять мое значение /usr/pgsql-11/bin на свое.
Тогда запустим:
/usr/pgsql-11/bin/pg_config | grep -i debug
Если система ничего не вернула, то нам нужно пересобрать СУБД.
Для начала установим пакеты, которые нам понадобятся для сборки:
yum install centos-release-scl-rh epel-release
yum install wget systemtap-sdt-devel gcc llvm-libs llvm-toolset-7-clang-devel llvm5.0-devel libicu-devel perl-ExtUtils-Embed zlib-devel krb5-devel openssl-devel pam-devel libxml2-devel libxslt-devel openldap-devel libuuid-dev systemd-devel tcl-devel python-devel gcc-c++
Как видим, для сборки PostgreSQL требуется большое число библиотек. Чтобы не засорять систему, рекомендуется сделать сборку (configure, make) на другом компьютере или в контейнере Docker.
Смотрим версию установленного программного продукта:
psql -V
В моем примере было:
psql (PostgreSQL) 11.14
На странице ftp.postgresql.org/pub/source можно найти все версии для исходников. Мы же поступим, немного, по-другому. Создадим переменную с нашей версией:
PG_VER=’11.14′
И загрузим исходник командой:
wget —no-check-certificate https://ftp.postgresql.org/pub/source/v$PG_VER/postgresql-$PG_VER.tar.gz
* если получим ошибку, вводим команду yum install wget .
Распаковываем скачанный архив:
tar zxf postgresql-*.tar.gz
Перейдем в распакованный каталог:
cd postgresql-*/
Смотрим, с какими опциями собрана наша установленная СУБД:
/usr/pgsql-11/bin/pg_config | grep -i configure
Берем полученные опции и добавляем при конфигурировании еще несколько — —enable-cassert —enable-debug:
./configure —enable-cassert —enable-debug ‘—enable-rpath’ ‘—prefix=/usr/pgsql-11’ ‘—includedir=/usr/pgsql-11/include’ ‘—libdir=/usr/pgsql-11/lib’ ‘—mandir=/usr/pgsql-11/share/man’ ‘—datadir=/usr/pgsql-11/share’ ‘—with-icu’ ‘—with-llvm’ ‘—with-perl’ ‘—with-python’ ‘—with-tcl’ ‘—with-tclconfig=/usr/lib64’ ‘—with-openssl’ ‘—with-pam’ ‘—with-gssapi’ ‘—with-includes=/usr/include’ ‘—with-libraries=/usr/lib64’ ‘—enable-nls’ ‘—enable-dtrace’ ‘—with-uuid=e2fs’ ‘—with-libxml’ ‘—with-libxslt’ ‘—with-ldap’ ‘—with-selinux’ ‘—with-systemd’ ‘—with-system-tzdata=/usr/share/zoneinfo’ ‘—sysconfdir=/etc/sysconfig/pgsql’ ‘—docdir=/usr/pgsql-11/doc’ ‘—htmldir=/usr/pgsql-11/doc/html’ ‘CFLAGS=-O2 -g gdb -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong —param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic’ ‘LLVM_CONFIG=/usr/lib64/llvm5.0/bin/llvm-config’ ‘CLANG=/opt/rh/llvm-toolset-7/root/usr/bin/clang’ ‘PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig’
* желтым отмечено то, что было добавлено в моем случае. Остальное, это то, что выдала команда /usr/pgsql-11/bin/pg_config | grep -i configure .
Собираем пакет:
make
Выполняем установку:
make install
Еще раз проверяем:
/usr/pgsql-11/bin/pg_config | grep -i debug
Теперь система должна вернуть строку с перечнем опций.
Переходим в консоль под пользователем postgres:
su — postgres
Смотрим статус работы СУБД:
/usr/pgsql-11/bin/pg_ctl status
* напомним, что путь до файла pg_ctl может быть другим. Это зависит от версии postgres и операционной системы, с которой мы работаем. Как описано в начале инструкции, найти данный файл можно командой find / -name pg_ctl -type f .
Мы увидим что-то на подобие:
/usr/pgsql-11/bin/postgres «-D» «/var/lib/pgsql/11/data/»
Нас интересует значение для опции -D — это путь к рабочему каталогу с данными базы.
Останавливаем СУБД:
/usr/pgsql-11/bin/pg_ctl stop
Теперь снова стартуем PostgreSQL, применяя команду:
/usr/pgsql-11/bin/pg_ctl -D /var/lib/pgsql/11/data/ -c start
* мы используем опции -D для указания пути до рабочего каталога и -c для указания на запуск режима отладки.
Готово. Начинаем работать с СУБД. При возникновении сбоев в рабочем каталоге мы увидим лог, в названии которого будет core , например:
ls /var/lib/pgsql/11/data/
core.19438
Имейте в виду, что данный файл очень быстро растет и если на сервере мало дискового пространства, оно быстро закончится.
Просмотреть содержимое лога можно командой:
gdb /usr/pgsql-11/bin/postmaster core.19438
* путь /usr/pgsql-11/bin также зависит от версии PostgreSQL и операционной системы. Он должен совпадать с путем, по которому мы искали pg_ctl .
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…