Mengelola server database dan middleware di produksi: administrasi PostgreSQL dan MySQL, cache dengan Redis, antrean pesan dengan RabbitMQ, beserta backup, monitoring, dan tuning dasarnya

Sampai episode 11 kita mengelola infrastruktur: OS, jaringan, storage, otomasi, monitoring, dan backup. Sekarang kita naik satu lapisan ke workload yang melayani aplikasi: database dan middleware. Ini adalah komponen yang paling sensitif terhadap kesalahan operasi — salah tuning, salah backup, atau salah konfigurasi di sini berdampak langsung ke pengguna akhir.
Mengapa episode ini penting? Karena System Engineer bukan hanya "tukang pasang server" — ia ikut bertanggung jawab atas kesehatan database dan middleware yang menjadi tulang punggung aplikasi. Episode ini membekali kalian administrasi praktis PostgreSQL/MySQL, Redis (cache), dan RabbitMQ (queue): operasi harian, backup, monitoring, dan tuning dasar.
PostgreSQL adalah database relasional paling populer di ekosistem modern. Operasi harian yang wajib dikuasai:
sudo systemctl status postgresql
sudo -u postgres psql -c "\l" # daftar database
sudo -u postgres psql -c "\du" # daftar roles
sudo -u postgres psql -c "\dt" # daftar tabel di database aktifMembuat database dan user aplikasi:
sudo -u postgres psql <<'SQL'
CREATE USER appuser WITH PASSWORD 'rahasia-kuat';
CREATE DATABASE appdb OWNER appuser;
GRANT ALL PRIVILEGES ON DATABASE appdb TO appuser;
SQLDatabase punya tool backup spesifik — pg_dump (logis) dan pg_basebackup (fisik). Untuk database kecil-menengah, pg_dump cukup:
pg_dump -U appuser -d appdb -Fc -f /backup/appdb.dump
pg_restore -U appuser -d appdb_restore /backup/appdb.dumpAturan penting: jangan backup dengan pg_dump langsung di atas database produksi tanpa jendela maintenance untuk database besar — pertimbangkan pg_basebackup + WAL archiving (mendukung point-in-time recovery). Detail strategi backup database mengikuti prinsip episode 11 (RPO/RTO, verifikasi, drill).
Parameter penting di postgresql.conf:
| Parameter | Peran | Aturan praktis |
|---|---|---|
shared_buffers | Cache data di memory | ~25% dari RAM server |
work_mem | Memory untuk operasi sort/hash | 4-64 MB per operasi |
max_connections | Batas koneksi | Sesuaikan workload & memori |
effective_cache_size | Estimasi cache OS | ~75% dari RAM |
Ubah parameter, lalu reload tanpa restart: sudo systemctl reload postgresql. Episode 16 akan membahas tuning performa lebih dalam; mulai sekarang pahami bahwa database yang sering "lambat" seringnya adalah masalah konfigurasi + query, bukan hardware.
MySQL dan MariaDB (varian open source) masih mendominasi aplikasi web klasik. Operasi dasarnya paralel dengan PostgreSQL:
sudo mysql
CREATE DATABASE webdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'webuser'@'localhost' IDENTIFIED BY 'rahasia-kuat';
GRANT ALL PRIVILEGES ON webdb.* TO 'webuser'@'localhost';
FLUSH PRIVILEGES;Backup:
mysqldump -u root -p webdb > /backup/webdb.sql
mysql -u root -p webdb < /backup/webdb.sqlCatatan: mysqldump saat database aktif bisa menghasilkan backup yang tidak konsisten; gunakan --single-transaction (InnoDB) untuk snapshot konsisten tanpa mengunci tabel.
Redis adalah in-memory store paling populer untuk cache dan session. Sebagai System Engineer, kalian mengelola siklus hidupnya: install, konfigurasi memori, backup, dan persistensi.
redis-cli ping # -> PONG
redis-cli INFO memory # statistik memori
redis-cli -n 0 DBSIZE # jumlah key di database 0
sudo systemctl reload redis # terapkan config barubind 127.0.0.1 # JANGAN bind 0.0.0.0 tanpa proteksi
requirepass sangat-rahasia # wajib jika bind selain localhost
maxmemory 512mb # batas memori cache
maxmemory-policy allkeys-lru # eviction saat penuh
appendonly yes # persistensi AOF untuk data pentingRedis tanpa maxmemory bisa memakan seluruh RAM server — salah satu penyebab server "mendadak lemot" yang paling umum di produksi. Selalu batasi memori dan tentukan policy eviction.
RabbitMQ adalah message broker berbasis AMQP yang menjadi tulang punggung arsitektur berantrean (task processing, event-driven). Operasi yang perlu dikuasai:
sudo systemctl status rabbitmq-server
sudo rabbitmqctl status
sudo rabbitmqctl list_queues name messages
sudo rabbitmqctl list_connectionsrabbitmqctl atau export dari management UI.Skenario: siapkan dan amankan tumpukan database + cache + queue di satu server lab.
# 1. Install PostgreSQL, Redis, RabbitMQ
sudo apt install -y postgresql redis-server rabbitmq-server
# 2. Konfigurasi Redis: batasi memori & aktifkan AOF
echo -e "maxmemory 256mb\nmaxmemory-policy allkeys-lru\nappendonly yes" \
| sudo tee -a /etc/redis/redis.conf
sudo systemctl restart redis
# 3. Set password RabbitMQ untuk user default
sudo rabbitmqctl change_password guest 'rahasia-baru'
# 4. Verifikasi semua service
systemctl is-active postgresql redis-server rabbitmq-servermaxmemory — server kehabisan RAM karena cache tak terbatas.mysqldump tanpa --single-transaction bisa menghasilkan data tidak konsisten.postgresql.conf tanpa reload/tes — parameter tuning butuh pengukuran sebelum dan sesudah.Inti yang harus dibawa pulang:
pg_dump/mysqldump), dan tuning bertahap.maxmemory + policy eviction, dan jangan pernah expose tanpa autentikasi.Di episode 13 selanjutnya kita pindah ke paradigma modern: cloud system engineering — VM/compute, security groups, dan managed services. Sampai jumpa di episode 13!