Minggu, 31 Agustus 2025

PGPOOL-postgres ha

 https://www.ashnik.com/meningkatkan-dan-menyeimbangkan-cluster-postgresql-anda-menggunakan-pgpool-iibahasa blog july

Written by ,

 Jul 18, 2022

6 min read

Meningkatkan dan Menyeimbangkan Cluster PostgreSQL Anda Menggunakan Pgpool-II

Pgpool II blogImg 1

Saat PostgreSQL Anda mulai menerima lebih banyak transaksi dan perlu ditingkatkan, harap pertimbangkan untuk menggunakan Load Balancer untuk cluster PostgreSQL. Ini akan sangat bagus dan memberi Anda peningkatan performa pada saat pengambilan data pada PostgreSQL Anda.

Apa itu PGPOOL-II?

Pgpool-II adalah middleware yang bekerja antara server PostgreSQL dan Client database PostgreSQL. Ini didistribusikan di bawah lisensi yang mirip dengan BSD dan MIT. Pgpool-II menyediakan fitur-fitur berikut.

  • Penyimpanan Koneksi
    Pgpool-II menyimpan koneksi ke server PostgreSQL, dan menggunakannya kembali setiap kali koneksi baru dengan properti yang sama (yaitu nama pengguna, database, versi protokol). Ini dapat mengurangi koneksi berlebih, dan meningkatkan throughput sistem secara keseluruhan.
  • Pembagian Beban
    Jika database direplikasi, mengeksekusi kueri SELECT di server mana pun akan mengembalikan hasil yang sama. Pgpool-II memanfaatkan fitur replikasi untuk mengurangi beban pada setiap server PostgreSQL dengan mendistribusikan kueri SELECT di antara beberapa server, meningkatkan throughput sistem secara keseluruhan. Dan baiknya, kinerja meningkat secara proporsional dengan jumlah server PostgreSQL. Keseimbangan beban berfungsi paling baik dalam situasi di mana ada banyak pengguna yang menjalankan banyak kueri secara bersamaan.
  • Membatasi Koneksi Berlebih
    Ada batasan jumlah maksimum koneksi bersamaan yang ada di PostgreSQL, dan koneksi akan ditolak setelah mencapai jumlah yang dibatasi. Mengatur jumlah koneksi maksimum, bagaimanapun akan meningkatkan konsumsi sumber daya dan mempengaruhi kinerja sistem. pgpool-II juga memiliki batasan jumlah koneksi maksimum, tetapi koneksi tambahan akan diantrekan alih-alih segera mengembalikan pesan galat.
  • Memori Cache dalam Kueri
    Dalam cache memori memungkinkan untuk menyimpan sepasang pernyataan SELECT dan hasilnya. Jika SELECT yang identik masuk, Pgpool-II mengembalikan nilai dari cache. Karena tidak ada penguraian SQL atau akses ke PostgreSQL yang terlibat, penggunaan cache memori sangat cepat. Di sisi lain, mungkin lebih lambat dari jalur normal dalam beberapa kasus, karena menambahkan beberapa nilai penyimpanan data cache.

Pgpool-II berkomunikasi dengan protokol backend dan frontend PostgreSQL, dan menyampaikan pesan antara backend dan frontend. Oleh karena itu, aplikasi database (frontend) berpikir bahwa Pgpool-II adalah server PostgreSQL yang sebenarnya, dan server (backend) melihat Pgpool-II sebagai salah satu kliennya. Pgpool-II transparan untuk server dan klien, aplikasi database yang ada dapat digunakan dengan Pgpool-II hampir tanpa mengubah sumbernya.

Bagaimana Pgpool-II Melakukan Pembagian Beban?

Pgpool II blogImg 2

Pgpool-II terletak di antara klien dan server PostgreSQL, Ia mampu memahami protokol backend dan frontend PostgreSQL dan menyampaikan permintaan klien ke server PostgreSQL. Karena Pgpool-II telah mengadopsi parser dari PostgreSQL, yang dapat melakukan cara parsing permintaan klien. Pgpool-II merutekan kueri sebagai berikut:

  1. Pgpool-II menerima permintaan klien.
  2. Pgpool-II mengurai permintaan query di latar belakang.
  3. Jika query menghasilkan transaksi Delete/Update/Insert, Pgpool-II mengirimkannya ke Database Utama.
  4. Jika kueri menghasilkan transaksi Select, Pgpool-II mengirimkannya ke server Load Balance yang dipilih dari semua server PostgreSQL yang tersedia terkait dengan parameter konfigurasi backend_weight.

Untuk mengaktifkan Load Balancing di Pgpool-II, Anda harus mengaktifkan parameter load_balance_mode dan juga parameter backend_weight. Seperti yang saya sebutkan di bagian sebelumnya, untuk melakukan load balancing, Pgpool-II memilih node load balancing dan mengarahkan kueri SELECT ke node tersebut. Node load balancing dipilih secara acak sesuai dengan bobot yang ditentukan di backend_weight.
Misalnya, ada tiga node PostgreSQL dalam replikasi PostgreSQL, dan node 0 adalah yang utama. Jika bobot semua node PostgreSQL sama, query didistribusikan secara merata (node 0 – node 2 akan menerima kueri pemilihan sebesar 33,33% setiap node).

backend_weight0 = 1
backend_weight1 = 1
backend_weight2 = 1

Jika Node Utama didedikasikan untuk mengeksekusi kueri WRITE, Anda dapat menentukan bobot node 1 hingga node 2:

backend_weight0 = 0
backend_weight1 = 1
backend_weight2 = 1

Jika primer digunakan untuk mengeksekusi kueri WRITE dan SELECT juga, Anda dapat menentukan bobot node 0 hingga node 2:

backend_weight0 = 0,2
backend_weight1 = 0,4
backend_weight2 = 0,4

Mode Pembagian Beban di Pgpool-II

Saat load balancing diaktifkan, setiap sesi pengguna ke server PostgreSQL melalui Pgpool-II menggunakan dua atau lebih server database untuk melayani permintaan klien. Salah satunya adalah server utama (untuk pernyataan INSERT/UPDATE/DELETE) sementara yang lain adalah load_balance_node yang digunakan untuk mengirimkan kueri SELECT untuk mendistribusikan beban.

A. Mode Sessio-Level Load Balancing pada Pgpool-II
Secara default, mode distribusi beban pada Pgpool-II adalah “Session Level” yang berarti permintaan yang dikirim akan ditentukan saat klien terhubung ke Pgpool-II. Misalnya, jika kita memiliki node 0 dan node 1, salah satu node dipilih secara acak setiap kali sesi baru dibuat. Dalam jangka panjang, kemungkinan node mana yang dipilih akan semakin mendekati rasio yang ditentukan oleh backend_weight0 dan backend_weight1. Jika kedua nilai tersebut sama, peluang terpilihnya setiap simpul adalah sama.

Pgpool II blogImg 3

B. Mode Statement-Level Load Balancing pada Pgpool-II
Jika statement_level_load_balance di hidupkan ke “on”, node Load Balance ditentukan pada saat setiap query dimulai. Ini berguna jika aplikasi memiliki pool koneksi sendiri yang terus terhubung ke Pgpool-II dan node penyeimbang beban tidak akan berubah setelah aplikasi dimulai. Kasus penggunaan lainnya adalah aplikasi batch. Ini mengeluarkan banyak sekali permintaan tetapi hanya ada 1 sesi. Dengan statement level load balancing, ia dapat menggunakan banyak server.
Pgpool II blogImg 4

Manakah mode terbaik untuk aplikasi Anda?
Memilih mode penyeimbangan beban yang tepat adalah penting. Beberapa pertimbangan untuk memilih mode dapat berupa:

  • Jika cluster hanya memiliki satu server primer dan satu server replika, tidak perlu mengaktifkan statement level load balance.
  • Jika server memiliki lebih dari satu server replika dan aplikasi memiliki pool koneksi sendiri, maka statement level load balance adalah pilihan terbaik.
  • Jika aplikasi dalam konfigurasi mengeluarkan beberapa kueri untuk setiap sesi dan membuat banyak sesi, maka mode session level load balance adalah cara yang tepat. Sementara untuk pemrosesan batch dan sesi pengguna yang lama, statement level load balance berperforma lebih baik.

Arsitektur yang baik untuk Pgpool-II

Umumnya, Anda tidak akan menginstal Pgpool-II di server backend. Pgpool-II adalah server mandiri yang pada dasarnya berada di depan database. Kedua server Postgres sering dikonfigurasi dengan replikasi streaming dengan satu menjadi server utama dan yang lainnya sebagai server Siaga.

Pgpool II blogImg 5

Anda juga dapat memiliki beberapa server Pgpool-II untuk mencapai ketersediaan tinggi (HA) yang lebih baik. Secara teknis Anda dapat menginstal Pgpool-II pada server database dalam konfigurasi ini, tetapi ini akan menjadi praktik yang buruk. Untuk menerapkan ketersediaan tinggi dari seluruh sistem, pgpool-II sendiri juga perlu dibuat redudansi. Fitur untuk redundansi ini disebut Watchdog. Berikut adalah cara kerjanya:

  1. Watchdog menautkan beberapa instance Pgpool-II dalam pengaturan aktif/siaga. Kemudian, instans Pgpool-II yang tertaut melakukan pemantauan heartbeat dan berbagi informasi server (nama host, nomor port, status Pgpool-II, informasi IP virtual, waktu startup).
  2. Jika Pgpool-II (aktif) menyediakan layanan gagal, Pgpool-II (standby) secara otomatis mendeteksinya dan melakukan failover. Saat melakukan ini, Pgpool-II (aktif) baru memulai antarmuka IP virtual, dan Pgpool-II lama (aktif) menghentikan antarmuka IP virtualnya.
  3. Hal ini memungkinkan sisi aplikasi untuk menggunakan Pgpool-II dengan alamat IP yang sama bahkan setelah pergantian server. Dengan menggunakan Watchdog, semua instance Pgpool-II bekerja sama untuk melakukan pemantauan server database dan operasi failover – pgpool-II (aktif) berfungsi sebagai koordinator.

Beberapa Parameter Pgpool-II yang perlu diperhatikan

Terkadang kita bertanya bagaimana cara mengkonfigurasi jumlah parameter koneksi atau parameter siklus hidup Pgpool-II yang perlu kami konfigurasikan terkait spesifikasi PostgreSQL kami. Perhatikan bahwa Pgpool-II dapat membuat koneksi num_init_children * max_pool ke setiap server PostgreSQL. Dan PostgreSQL memungkinkan koneksi bersamaan untuk non-superuser hingga max_connections – superuser_reserved_connections.

Selain itu, membatalkan kueri akan membuat koneksi lain ke PostgreSQL. Oleh karena itu, max_pool, num_init_children, max_connections, superuser_reserved_connections harus memenuhi rumus berikut:

  • (Jika Pgpool-II tidak memerlukan pembatalan query)
    max_pool*num_init_children <= (max_connections – superuser_reserved_connections)
  • (Jika Pgpool-II memerlukan pembatalan kueri)
    max_pool*num_init_children*2 <= (max_connections – superuser_reserved_connections) parameter lain yang dapat kita konfigurasikan berdasarkan kebutuhan dan koneksi kita adalah:
  • Child_life_time
    Parameter ini menunjukkan pemutusan klien dari durasi maksimum, untuk menghindari kebocoran memori yang disebabkan oleh tidak keluarnya sesi dalam waktu yang lama. Setelah klien memutuskan database, subproses mengubah status permintaan, jika child_life_time dikonfigurasi dalam rentang waktu tertentu. Jika tidak, klien akan membuat koneksi dengan subproses baru, subproses akan dimatikan dan membuat ulang proses dan menunjukkan bahwa session tidak akan pernah keluar.
  • Client_idle_limit
    Menentukan waktu dalam detik, untuk memutuskan sambungan klien jika tetap tidak beraktifitas sejak kueri terakhir dijalankan. Ini berguna untuk mencegah client Pgpool-II ditempati oleh klien yang idle atau koneksi TCP/IP yang terputus antara klien dan Pgpool-II. Jika klien idle setelah menjalankan kueri terakhir, koneksi klien ini akan mulai terputus. Parameter ini dapat mencegah koneksi idle mengambil jumlah koneksi untuk waktu yang lama. Makalah ini juga menggunakan parameter ini untuk mengoptimalkan database. Yang artinya tidak pernah putus.
  • Child_max_connection
    Parameter ini mewakili jumlah maksimum koneksi Pgpool-II yang diizinkan, ketika koneksi yang dibuat Pgpool-II mencapai child_max_connections Setelah nomor yang dikonfigurasi, subproses tertua akan keluar terlebih dahulu. Parameter ini terutama digunakan dalam skenario dengan konkurensi besar dan tidak dapat dipicu dalam waktu singkat.
  • Connection_life_time
    Parameter ini mewakili waktu maksimum untuk membuat koneksi dengan backend database. Hal ini terutama digunakan untuk caching dan meningkatkan kinerja database.

Rabu, 27 Agustus 2025

BARMAN-web backup psql

 https://github.com/clmntpllr/barman-web-app

Repository files navigation

barman-web-app

A Python Flask web app to use as an UI for pgbarman. This is a really small and simple project using the python Flask framework.

Installation

  • create a virtualenv
virtualenv barman-web-app
cd barman-web-app
source bin/activate
  • clone this projet
git clone https://github.com/clmntpllr/barman-web-app.git
  • then install requirements
cd barman-web-app
python -m pip install pip --upgrade
python -m pip install -r requirements.txt
  • config the app by editing config.py to suits your needs
  • to generate a new secret key :
import secrets; 
print(secrets.token_hex())
  • try the app by launching it as a test server
python barman-web-app.py
  • or deploy with gunicorn
gunicorn "barman_app:create_app()"
# or
gunicorn -w 4 -b 0.0.0.0:4000 "barman_app:create_app()"
  • or use a uwsgi server with nginx
uwsgi -s /tmp/barman-web-app.sock  --virtualenv /yourvenvdir --manage-script-name --mount /barman_app=wsgi:app

Senin, 04 Agustus 2025

RESET-epson l3210

 

Resetter Epson L3210

Sering mengalami trouble saat hendak mencetak dokumen menggunakan printer epson L3210? Bisa saja itu tandanya bahwa printer tersebut sudah waktunya untuk direset. Umumnya setiap printer memiliki batasan penggunaan yang telah ditentukan oleh pabrikan, dalam hal ini adalah Epson.

Pada saat pengguna printer mencapai batasan tersebut maka printer akan menunjukkan indikator yang berbeda pada tiap serinya. Pada epson L3210 indikator yang muncul bisa dilihat dari lampu yang berkedip-kedip atau adanya pesan notifikasi saat menggunakan printer. Maka dari itu kita harus mereset printer agar masalah tersebut bisa teratasi, salah satunya yakni dengan memanfaatkan aplikasi resetter epson L3210.

Nah, kami akan share resetter terbaru yang bisa anda gunakan di Windows anda.

Download Resetter Epson L3210

Nama ResetterEpson Adjustment Program L3210
VersiL3210
SupportWindows 7, 8, 8.1, 10, 11 (32bit/64bit)
Download LinkResetter L3210 dari MF

Password RAR = itkoding.com
Jika link tersebut tidak berfungsi atau error silahkan hubungi kami melalui link ini atau kirim melalui kolom komentar. Jika gagal download, coba gunakan browser lain seperti Firefox.

Peringatan: Silahkan matikan Antivirus terlebih dahulu sebelum mengunduh dan mengekstrak file resetter. File tersebut aman dan telah kami test pada komputer kami.

Cara Reset Printer Epson L3210

  1. Hidupkan laptop dan printer serta hubungkan keduanya menggunakan kabel USB printer,
  2. Download aplikasi resetter Epson L3210, dalam hal ini kita akan menggunakan aplikasi resetter Epson Adjusment Program,
  3. Ekstrak hasil download ke tempat yang diinginkan,
  4. Buka aplikasinya,
  5. Masukkan passwordnya jika diminta (password sudah disertakan di dalam pada file Password.txt),
  6. Klik tombol Select,
  7. Pilih jenis printer sesuai dengan yang digunakan pada bagian Model Name, yakni L3210,
  8. Klik tombol OK,
  9. Pilih Particular adjustment mode, setelah itu akan muncul berbagai pilihan adjustment dan maintenance yang bisa dipilih,
  10. Pilih Waste Ink pad counter pada bagian Maintenance,
  11. Klik tombol OK, kemudian jendela Waste ink pad counter akan terbuka,
  12. Aktifkan tombol centang pada bagian Main pad counterPlaten pad counter, dan Ink System pad counter,
  13. Klik tombol Check yang ada di bagian Check the current counter value,
  14. Tunggu proses pengecekan hingga selesai, jika lancar maka jumlah point dan prosentase pada bagian yang telah dicentang akan ditampilkan,
  15. Centang semua bagian kembali,
  16. Klik tombol Initialize pada bagian Initialize the selected counters,
  17. Pilih tombol OK jika muncul notifikasi information, kemudian proses akan berjalan,
  18. Tunggu proses hingga selesai yang ditandai dengan munculnya notifikasi untuk disuruh mematikan printer,
  19. Matikan printer dengan menekan tombol power printer,
  20. Nyalakan printer kembali,
  21. Klik tombol OK pada notifikasi yang muncul,
  22. Klik tombol Finish untuk menutup jendela waste ink pad counter,
  23. Tes printer dengan cara pilih Head cleaning yang ada di bagian Maintenance,
  24. Masukkan kertas kosong ke dalam printer,
  25. Klik tombol Print di bagian Nozzle check print,
  26. Tunggu proses print selesai, jika printer dapat mencetak dengan normal maka proses reset sudah terbilang berhasil.
Tampilan resetter printer epson l3210

Apabila terjadi error saat melakukan pengecekan, cobalah centang pada bagian Platen pad counter dan Main pad counter saja, kemudian klik tombol Check untuk melakukan pengecekan kembali.

Hasil pengecekan akan menampilkan angka prosentase, jika prosentase pada main pad counter mencapai 100 persen maka itu tandanya printer sudah harus direset.

Jika terjadi error saat mengeklik tombol Initialize, coba ulangi langkah dari awal tanpa melakukan Check. Jadi langsung lakukan Initialize.

Proses head cleaning melalui aplikasi resetter tersebut bersifat opsional, sebagai gantinya kita bisa langsung mencoba printer dengan mencetak dokumen sesuai dengan yang diinginkan.

Baca juga: Nada Dering iPhone dan Nada Dering WA

Masalah apa saja yang menyebabkan harus reset printer l3210?

  1. Lampu indikator tinta dan kertas berkedip bersamaan

Gejala umum yang terjadi jika printer minta direset adalah berkedipnya lampu indikator kertas dan tinta secara bersamaan ketika printer dalam kondisi menyala.

  1. Ada notifikasi yang menyatakan bahwa masa bantalan kadaluwarsa/ masa bantalan habis

Ketika hendak mencetak dokumen dan muncul pesan yang isinya masa bantalan kadaluwarsa/ masa bantalan habis maka tandanya printer tersebut sudah mencapai batasan-nya dan harus direset.

  1. Muncul kode error/error code

Munculnya notifikasi error code yang mengakibatkan printer tidak bisa berjalan dengan normal juga besar kemungkinan bahwa printer sudah harus dilakukan reset agar dapat berfungsi kembali.

Lihat juga: resetter epson l3110.