PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да завъртите регистрационните файлове на PgBouncer в Linux/Windows?

Преди да се потопите дълбоко в темата, кратко описание за PgBouncer, това е олекотен пул за връзки за PostgreSQL, който драстично намалява времето за обработка и ресурсите за поддържане на голям брой клиентски връзки към една или повече бази данни. Обикновено се използва за увеличаване на броя на потребителските връзки, които могат да бъдат обработени в среда с висока производителност. За повече подробности относно инсталирането/конфигурирането на PgBouncer вижте документацията тук.
Подобно на други инструменти, PgBouncer има  stderr/syslog архитектура за регистриране за записване на връзка, прекъсване на връзката и pooler_errors с различни нива на многословност. Към момента по-голямата част от регистрирането отива в един единствен файл „pgbouncer.log“ и се разраства безкрайно. Понякога може да е потенциален риск да накарате системата да не реагира поради липса на дисково пространство в местоположението на регистрационния файл. Понастоящем регистрирането на PgBouncer няма вградена конфигурация за завъртане на регистрационни файлове на базата на възраст или размер, следователно принуждава потребителите да избират алтернативни методи. IMO, има два подхода за справяне с това:-

  1. Конфигурирайте PgBouncer в метода „syslog“, за да разчитате на ротация на регистрационния файл на OS или
  2. Конфигурирайте ротацията на регистрационните файлове с помощта на помощните програми на ОС във файла „pgbouncer.log“.

Метод 1:

Доста лесно е да конфигурирате syslog в PgBouncer, задайте “syslog” на 1 (по подразбиране 0); дайте име, за да започне реда на дневника в регистрационните файлове на ОС в „syslog_ident“ (по подразбиране „pgbouncer“) и посочете подробностите за съоръжението в „syslog_facility“ (демон по подразбиране). Примерен изход от моята операционна система (/var/log/messages):

5 август 16:54:27 raghavt pgbouncer[62549]:C-0x1cdfe60:postgres/postgres@unix(62621):6432 опит за влизане:db=postgres user=postgres tls=не
5 август 16:54:27 raghavt pgbouncer[62549]:S-0x1ce4b10:postgres/[email protected]:5432 нова връзка към сървъра (от 127.0.0.1:38947)
Aug :54:27 raghavt pgbouncer[62549]:C-0x1cdfe60:postgres/postgres@unix(62621):6432 затваряне, защото:заявка за затваряне на клиента (age=0)

Забележка:Ако „syslog“ е активиран, коментирайте или изпразнете параметъра „logfile“, в противен случай това ще бъде допълнително регистриране.

Метод 2:

Logrotate е една от помощните програми на операционната система, която има способността да върти регистрационните файлове систематично и да архивира, за да намали изискването за дисково пространство на операционната система. Всеки регистрационен файл може да се обработва ежедневно, седмично, месечно или когато стане твърде голям. Конфигурационен файл по подразбиране “/etc/logrotate.conf” дефинира възрастта/размера/интервала на ротация на дневника. С помощта на този инструмент регистрационните файлове могат да се съхраняват по-дълго с по-малко дисково пространство. Много хора са коментирали използването на помощната програма, която можете да я откриете през мрежата така или иначе, като по този начин преминавам директно към фазата на внедряване.
Първо, създайте конфигурационен файл в /etc/logrotate.d/ директория за pgbouncer регистрационни файлове . Кръстих го като „/etc/logrotate.d/pgbouncer“ с подробности по-долу:

/var/log/pgbouncer/pgbouncer.log {
rotate 10
missingok
sharedscripts
notifempty
nocompress
размер 10m
ежедневно
създайте 0640 postgres postgres
postrotate
/bin/kill -HUP `cat /var/pgbouncer-postgres/pgbouncer.pid 2> /dev/ null` 2>/dev/null ||true
endscript
}

Относно конфигурационния файл, първият ред посочва местоположението на регистрационния файл на pgbouncer (стойности на параметъра „logfile“ във файла pgbouncer.ini), а следващият са параметрите, които работят на прагове на ротация като; колко регистрационни файлове да се поддържат (завъртат); не издавайте грешка и преминете към следващия дневник (missingok); какъв скрипт трябва да се изпълни преди/след ротация (предварително/после завъртане); стартирайте веднъж или няколко пъти пред/пост скриптове (споделени скриптове); не завъртайте дневника, ако е празен (notifempty); след завъртане стар лог файл трябва да бъде компресиран с помощта на gzip (компресиране/некомпресиране); на какъв размер трябва да се извърши ротация на трупа (размер); колко често да се върти определен дневник (ежедневно); и какво разрешение трябва да има новият регистрационен файл (създаване).

Сега можем да видим нови регистрационни файлове, завъртени с размер 10M. (Можем дори да принудим въртенето с команда “logrotate -f /etc/logrotate.conf”)

[[email protected] pgbouncer]# ls -lrth
общо 16K
-rw-r—–. 1 postgres postgres 10M 27 юли 15:30 pgbouncer.log-20160727
-rw-r—–. 1 postgres postgres 11K 27 юли 18:32 pgbouncer.log

Това беше просто, нали , сега нека да проверим същото в средата на Windows.

На Windows:

Знам много по-малко за помощните програми на Windows, следователно потърсих в Google и намерих помощна програма за версията на Windows, наречена „LogRotateWin“ който работи по същия начин като Linux версията на logrotate. За повече подробности вижте подробната документация, налична за Инсталация/Конфигуриране/Използване тук.
Нека видим как работи, първо изтеглете „.msi“ версията на LogRotateWin, налична на сайта като файл „logrotateSetup*.zip“. Извлечете и изпълнете файла „.msi“, той ще инсталира помощната програма на място „c:Program Files (x86)LogRotate“. Можете да намерите конфигурационния файл по подразбиране (logrotate.conf) под “c:Program Files (x86)LogRotateContent”.
След това редактирайте файла “c:Program Files (x86)LogRotateContentlogrotate.conf” и посочете пълния път на файл „pgbouncer.log“ със същите параметри на ротация. Примерно копие на моя конфигурационен файл, тестван на Windows 10. (Забележка:стойностите на параметрите по-долу се използват за тестване на помощната програма)

c:Program Files (x86)LogRotateContent>още logrotate.conf
“c:Program Files (x86)PgBouncerlogpgbouncer.log” {
rotate 10
copytruncate
създайте
missingok
споделени скриптове
nocompress
размер 200k
ежедневно
}

За да потвърдя, принудих ротацията на дневника с опция „-f“

c:Program Files (x86)LogRotate>logrotate.exe -f Contentlogrotate.conf
logrotate:Принудителна опция е зададена на true

Ето резултата:

C:Program Files (x86)PgBouncerlog>dir
Томът в устройство C няма етикет.
Серийният номер на тома е F226-9FFB

Директория на C:Program Files (x86)PgBouncerlog

08.08.2016 13:31

.
08.08.2016 13:31 ..
08.08.2016 13:31 0 pgbouncer.log
08.08.2016 13:31 6 626 pgbouncer.log.1
08.08.2016 13:31 13 252 pgbouncer.log.2
3 файла 19 878 байта
2 Dir(s) 26,905,051,136 байта безплатно

Хубаво, нали !!!.
В повечето дистрибуции на Linux logrotate се изпълнява ежедневно, използвайки “logrotate.conf” като част от cronjob, подобно на Windows, можем да планираме задача в Windows Task Scheduler, за да въртим дневниците ежедневно. FYI, не съм изследвал много за помощната програма „LogRotateWin“ само основно ниво. В случай, че срещнете някакъв проблем, моля, публикувайте го във  logrotate форум за обща дискусия.
Благодаря ви за четенето.
–Raghav


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL - задайте стойност на клетка по подразбиране според стойност на друга клетка

  2. Защо имаме нужда от посредници на съобщения като RabbitMQ върху база данни като PostgreSQL?

  3. Добавяне на нова стойност към съществуващ тип ENUM

  4. Pgbackrest Възстановяване и възстановяване на Delta

  5. Как да се свържа с PostgreSQL, без да посоча име на база данни?