Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

СРС 2 #45

Open
wants to merge 11 commits into
base: easyjson
Choose a base branch
from
Open

СРС 2 #45

wants to merge 11 commits into from

Conversation

marcussss1
Copy link
Collaborator

@marcussss1 marcussss1 commented Jun 22, 2023

Работа с БД через сервисную учетную запись

  • Создали двух пользователей для приложения - brigade и brigade_chats.
  • brigade имеет доступ во все таблицы и может выполнять любые операции в них(SELECT, UPDATE, INSERT, DELETE). brigade_chats может только читать(SELECT) из таблиц связанных с чатом и сообщениями
  • Скрипт для создания юзеров create_users.sh. Передаём через переменные, чтобы не держать пароли в открытом виде, как вариант можно прокидывать секреты гитхаба.
  • Выдача прав brigade_user grant_brigade_user.sql
  • Выдача прав brigade_user_chats grant_brigade_chats_user.sql

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

  • Для реализации пулла соединений, мы используем интерфейс *sqlx.DB библиотеки github.com/jmoiron/sqlx. Решили ограничиться 10 открытыми соединениями и 10 соединениями в пулле.
    db.SetMaxIdleConns(10)
    db.SetMaxOpenConns(10)
  • В listen_addresses, мы указали все адреса микросервисов, которые запущеные в приложении
    listen_addresses = '192.168.243.1, 192.168.243.2, 192.168.243.3, 192.168.243.4, 192.168.243.5, 192.168.243.6, 192.168.243.7

Логгирование и протоколирование медленных запросов

  • Добавили файл конфигурации postgres.conf. Логи пишутся в json формате. Делаем ротацию раз в 12 часов, ограничиваем ротационный файл 8мб, медленные запросы считаем от 512 мс
    log_destination = 'jsonlog'
    logging_collector = on
    log_rotation_age = 12h
    log_rotation_size = 8MB
    log_truncate_on_rotation = on
    log_min_duration_statement = 512ms
    log_line_prefix = '%t [%p]: user=%u,db=%d,app=%a,client=%h '
    log_checkpoints = on
    log_connections = on
    log_disconnections = on
    log_lock_waits = on
    log_temp_files = 0
    log_autovacuum_min_duration = 0
    log_error_verbosity = default
    log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
    log_directory = '/var/log/postgresql'

Для генерации отчетов с помощью pgBadger создали отдельную цель в Makefile(pgbadger) pgbadger

@marcussss1 marcussss1 changed the base branch from attachments to easyjson June 22, 2023 19:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants