PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Apa yang Baru di PgBouncer 1.6

PgBouncer adalah pooler koneksi ringan untuk PostgreSQL.

PgBouncer 1.6 diumumkan pada tanggal 1 Agustus 2015. Dalam entri blog ini, kita akan membicarakan peningkatan besar baru di PgBouncer.

Fitur baru utama PgBouncer

Muat hash kata sandi pengguna dari database postgres

PgBouncer sekarang memungkinkan memuat kata sandi pengguna dari database dengan dua parameter konfigurasi yaitu auth_user dan auth_query .

  • auth_user
    Jika auth_user disetel, setiap pengguna yang tidak ditentukan dalam auth_file akan ditanyai dari pg_shadow dalam database menggunakan auth_user. Kata sandi auth_user akan diambil dari auth_file. Parameter ini juga dapat diatur per database.

  • auth_query
    Parameter ini memungkinkan kita untuk menulis query SQL untuk memuat password pengguna dari database. Ini berjalan di bawah auth_user. Lihat kueri default di bawah ini:

    SELECT usename, passwd FROM pg_shadow WHERE usename=$1

Mode pengumpulan dapat dikonfigurasi baik per database dan per pengguna

Dengan fitur ini, terlepas dari mode pooling utama, klien sekarang dapat terhubung ke database yang berbeda dengan salah satu dari 3 mode pooling yang dijelaskan di bawah ini. Ini juga berlaku untuk pengguna. Misalnya, jika mode penyatuan adalah penyatuan sesi, pengguna tertentu dapat dikonfigurasi untuk menggunakan penyatuan transaksi. Ini memberi kami fleksibilitas tingkat basis data dan tingkat pengguna untuk menerapkan opsi penyatuan yang lebih tepat.

PgBouncer menyediakan 3 mode penyatuan koneksi:

  • Pengumpulan sesi
    Selama masa koneksi klien, koneksi server yang ada ditetapkan ke klien dan setelah klien terputus, koneksi server yang ditetapkan akan dikembalikan ke kumpulan koneksi.
  • Pengumpulan transaksi
    Dalam mode ini, koneksi server tidak langsung ditetapkan ke klien yang terhubung, tetapi hanya selama transaksi. Segera setelah transaksi selesai, koneksi dimasukkan kembali ke pool.
  • Pengumpulan pernyataan
    Ini mirip dengan pengumpulan transaksi, tetapi lebih agresif. Backend diberikan setiap kali permintaan pernyataan tunggal dikeluarkan. Ketika pernyataan selesai, koneksi dimasukkan kembali ke pool.

Batas koneksi per database dan per pengguna:max_db_connections dan max_user_connections

Dengan fitur ini, sekarang kita juga dapat mengontrol batas koneksi per database/tingkat pengguna dengan dua parameter baru, yaitu max_db_connections dan koneksi_pengguna_maks .

  • max_db_connections
    Parameter ini tidak mengizinkan koneksi lebih dari yang ditentukan per database (terlepas dari kumpulan – yaitu pengguna).
    Nilai default parameter ini tidak terbatas.
  • koneksi_pengguna_maks
    Parameter ini tidak mengizinkan koneksi lebih dari yang ditentukan per pengguna (terlepas dari kumpulan – yaitu pengguna).

Tambahkan perintah DISABLE/ENABLE untuk mencegah koneksi baru

Dengan fitur ini PgBouncer memiliki ENABLE/DISABLE db; perintah untuk mencegah koneksi baru.

  • NONAKTIFKAN db;
    Perintah ini menolak semua koneksi klien baru pada database yang diberikan.
  • AKTIFKAN db;
    Perintah ini mengizinkan koneksi klien baru setelah DISABLE . sebelumnya perintah.

Backend DNS pilihan baru:c-ares

adalah adalah satu-satunya backend DNS yang mendukung semua fitur menarik:/etc/hosts dengan penyegaran, pencarian SOA, balasan besar (melalui TCP/EDNS+UDP), IPv6. Ini adalah backend pilihan sekarang, dan mungkin akan menjadi hanya backend di  masa depan.

File konfigurasi memiliki arahan '%include FILENAME' untuk memungkinkan konfigurasi dipecah menjadi beberapa file

Dengan fitur ini, PgBouncer memiliki dukungan untuk penyertaan file konfigurasi di dalam file konfigurasi lainnya.

Dengan kata lain, file konfigurasi PgBouncer dapat berisi perintah include, yang menentukan file konfigurasi lain untuk dibaca dan diproses. Hal ini memungkinkan pemisahan file konfigurasi besar menjadi file yang lebih kecil dan lebih mudah dikelola. Arahan include terlihat seperti ini:

%include filename

Jika nama file bukan path absolut, itu diambil sebagai relatif terhadap direktori kerja saat ini.

Ada lebih banyak fitur yang dirilis dalam versi ini. Anda dapat mengunjungi halaman changelog PgBouncer atau memeriksa daftar di bawah untuk peningkatan lainnya:

  • Tampilkan remote_pid di SHOW CLIENTS/SERVERS. Tersedia untuk klien yang terhubung melalui soket unix dan server soket tcp dan unix. Dalam kasus tcp-server, pid diambil dari tombol batal.
  • Tambahkan param konfigurasi terpisah (dns_nxdomain_ttl) untuk mengontrol cache dns negatif.
  • Tambahkan alamat IP host klien dan port ke application_name. Ini diaktifkan oleh parameter konfigurasi application_name_add_host yang defaultnya 'mati'.

Apa itu PgBouncer?

PgBouncer adalah utilitas untuk mengelola koneksi klien ke database PostgreSQL. Singkatnya, ia memelihara kumpulan koneksi ke server PostgreSQL dan menggunakan kembali koneksi yang ada. Meskipun ini dapat berguna untuk mengurangi overhead koneksi klien, ini juga memungkinkan membatasi jumlah maksimum koneksi terbuka ke server database. Ini juga dapat digunakan untuk membentuk lalu lintas seperti mengarahkan koneksi ke satu atau lebih database ke server database yang berbeda. Selain itu, PgBouncer dapat digunakan untuk mengelola keamanan pada pengguna dan bahkan pada tingkat basis data.

Lihat diagram di bawah yang menggambarkan arsitektur PgBouncer dengan cara yang lebih visual.

Dalam contoh khusus ini, aplikasi klien terhubung ke instance PgBouncer terpisah di mana mereka akan terhubung ke server database PostgreSQL secara langsung. Server database "DB Server 1" dan "DB Server 2" mungkin merupakan instance PostgreSQL independen atau mereka mungkin merupakan bagian dari cluster dengan peran yang berbeda (mis., master/replika atau write-master/backup-master, dll.).

Setiap instance PgBouncer memelihara kumpulan koneksi dengan sejumlah koneksi terbuka ke server PostgreSQL. Seperti yang dapat dilihat dari contoh, PgBouncers memungkinkan pembuatan kumpulan dengan koneksi ke database yang berbeda dan bahkan koneksi ke server database yang berbeda.

Untuk informasi lebih lanjut

Anda dapat mengunjungi situs web utama PgBouncer: http://pgbouncer.github.io/

Mereka memiliki halaman FAQ yang bagus: http://pgbouncer.github.io/faq.html

Anda dapat melihat repositori Github untuk proyek tersebut: http://github.com/pgbouncer/pgbouncer


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Meningkatkan PostgreSQL 11 ke PostgreSQL 12 dengan Zero Downtime

  2. Mendeteksi Apakah Nilai Berisi Setidaknya Satu Digit Numerik di PostgreSQL

  3. Memasukkan array menggunakan permata Sekuel di PostgreSQL

  4. Kueri parameter (pengaturan postgresql.conf) seperti max_connections

  5. Bagaimana Asin() Bekerja di PostgreSQL