Ketika jumlah pengguna aplikasi terus bertambah, beban kerja database juga akan meningkat. Pada kondisi seperti ini, ProxySQL menjadi salah satu solusi yang banyak digunakan untuk mengelola koneksi database, membagi beban query, serta meningkatkan ketersediaan layanan tanpa harus mengubah logika aplikasi secara langsung.
Meskipun banyak administrator telah menerapkan database replication atau database cluster, aplikasi tetap membutuhkan mekanisme untuk menentukan server mana yang menangani proses read dan write. Jika seluruh pengaturan tersebut dilakukan di dalam kode aplikasi, proses pengelolaan akan menjadi lebih rumit, terutama ketika infrastruktur database terus berkembang.
Melalui ProxySQL, proses read/write splitting, load balancing, hingga failover dapat dilakukan secara lebih mudah karena seluruh pengaturan berada di satu lapisan proxy. Pada artikel ini, Anda akan mempelajari cara install dan konfigurasi ProxySQL di Debian Server, mulai dari proses instalasi hingga konfigurasi dasar agar siap digunakan pada lingkungan database replication.
ProxySQL adalah open-source high-performance database proxy yang dirancang khusus untuk MySQL dan variannya (seperti MariaDB dan Percona Server). ProxySQL bekerja sebagai layer penengah yang berada di antara aplikasi website dan server cluster database.
Dengan ProxySQL, aplikasi Kita hanya perlu terhubung ke satu titik (yaitu IP/Port milik ProxySQL). Selanjutnya, ProxySQL yang akan menentukan ke mana query tersebut harus diarahkan secara otomatis berdasarkan rules yang sudah Kita tentukan sebelumya.
Sebelum mengimplementasikannya di lingkungan produksi, penting untuk memahami nilai plus dan minus dari ProxySQL :
Kelebihan
Kapan sebaiknya Kita menggunakan ProxySQL pada infrastruktur Server VPS? Berikut beberapa skenario umumnya :
Sebelum melakukan instalasi, pastikan bahwa server Anda telah memenuhi system requirements berikut ini.
Informasi kebutuhan sistem di atas update tertanggal 27 Juli 2026.
Dalam panduan ini, kami menggunakan layanan VPS KVM paket L dari Rumahweb Indonesia. Selain itu, kami menggunakan OS Debian 12 (Bookworm). Berikut cara install dan konfigurasi ProxySQL di debian.
ProxySQL menyediakan repository resmi agar Kita mendapatkan versi stabil terbaru.
sudo apt update && sudo apt install -y lsb-release gnupg2 curl ca-certificates Copy
curl -fsSL https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/repo_pub_key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/proxysql.gpg echo "deb https://repo.proxysql.com/ProxySQL/proxysql-3.0.x/$(lsb_release -sc)/ ./" | sudo tee /etc/apt/sources.list.d/proxysql.list Copy
sudo apt update
sudo apt install proxysql mariadb-client -yCopy
sudo systemctl enable --now proxysql
sudo systemctl status proxysqlCopy
ProxySQL dikelola menggunakan protokol MySQL melalui port khusus (6032 untuk Admin Interface, dan 6033 untuk jalur lalu lintas data aplikasi).
Login ke admin interface menggunakan kredensial default (admin/admin):
Skenario contoh :
Jalankan perintah berikut di dalam prompt ProxySQL Admin :
-- Tambahkan Server Master
INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (10, '192.168.1.10', 3306);
-- Tambahkan Server Slave
INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (20, '192.168.1.11', 3306);
-- Simpan konfigurasi ke Runtime dan Disk
LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;Copy
User yang terdaftar di ProxySQL harus sama dengan user yang ada di server MySQL/MariaDB backend Kita.
-- Tambahkan user 'app_user' dengan password 'password_db_anda' INSERT
Cara Install dan Konfigurasi ProxySQL di Debian ServerINTO mysql_users (username, password, default_hostgroup) VALUES ('app_user', 'password_db_anda', 10); -- Simpan konfigurasi LOAD MYSQL USERS TO RUNTIME; SAVE MYSQL USERS TO DISK;Copy

Buat aturan (rules) agar semua query SELECT diarahkan ke Hostgroup 20 (Slave), sedangkan query modifikasi data (INSERT, UPDATE, DELETE) secara otomatis masuk ke Hostgroup 10 (Master).
-- Rule 1: Arahkan semua query SELECT ... FOR UPDATE ke Master (Hostgroup 10) INSERT INTO mysql_query_rules (rule_id, active, match_pattern, destination_hostgroup, apply) VALUES (1, 1, '^SELECT.*FOR UPDATE$', 10, 1);
-- Rule 2: Arahkan semua query SELECT biasa ke Slave (Hostgroup 20)
INSERT INTO mysql_query_rules (rule_id, active, match_pattern, destination_hostgroup, apply) VALUES (2, 1, '^SELECT', 20, 1);
-- Simpan konfigurasi
LOAD MYSQL QUERY RULES TO RUNTIME;
SAVE MYSQL QUERY RULES TO DISK;Copy
Di sisi konfigurasi aplikasi (misalnya pada file .env Laravel atau wp-config.php WordPress), arahkan koneksi database ke alamat ProxySQL :
Uji koneksi melalui terminal untuk memastikan routing berjalan lancar :
mysql -u app_user -ppassword_db_anda -h 127.0.0.1 -P 6033 -e "SELECT @@hostname;"
Penutup
ProxySQL adalah solusi database proxy yang dapat membantu mengelola koneksi database secara lebih efisien melalui fitur load balancing, read/write splitting, dan failover. Dengan menerapkan ProxySQL, aplikasi tidak lagi perlu menangani logika distribusi query secara langsung sehingga pengelolaan infrastruktur database menjadi lebih sederhana dan mudah dikembangkan.
Apabila implementasi ProxySQL akan digunakan pada lingkungan production, pastikan server memiliki resource yang memadai agar performanya tetap optimal. Rumahweb menyediakan berbagai pilihan layanan VPS dan Dedicated Server yang dapat digunakan untuk membangun infrastruktur database yang stabil, aman, dan siap menangani kebutuhan aplikasi berskala besar.