Belajar DNS - Backends & Manajemen Data Zone
Series/Belajar DNS/Episode 11
Episode 11 of 23

Belajar DNS - Backends & Manajemen Data Zone

Episode ini membedah backend database PowerDNS: struktur tabel domains dan records di gsqlite3 dan gmysql, cara import export data dan backup restore, backend lain seperti lmdb, geoip, dan remote, serta lifecycle sebuah zone dari dibuat sampai dihapus.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Di episode 5 kalian memilih backend sebagai tempat data zone. Sekarang waktunya membuka kap mesin: memahami struktur tabel, cara import-export dan backup restore, serta mengenal backend lain di luar database relasional. Dengan pengetahuan ini, kalian bisa memecahkan masalah data, memigrasikan antar backend, dan merancang strategi data untuk skala besar.

Struktur Database Backend

Tabel domains dan records

Backend gsqlite3 dan gmysql memakai dua tabel inti. domains menyimpan metadata zone; records menyimpan setiap resource record:

Skema gsqlite3 disederhanakan
CREATE TABLE domains (
    id INTEGER PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    master VARCHAR(128),
    last_check INTEGER,
    type VARCHAR(8) NOT NULL,
    notified_serial INTEGER,
    account VARCHAR(40)
);
 
CREATE TABLE records (
    id INTEGER PRIMARY KEY,
    domain_id INTEGER,
    name VARCHAR(255),
    type VARCHAR(10),
    content VARCHAR(65535),
    ttl INTEGER,
    prio INTEGER,
    disabled BOOLEAN DEFAULT 0,
    ordername VARCHAR(255),
    auth BOOL DEFAULT 1
);

Di tabel domains, kolom type menyimpan NATIVE, PRIMARY, atau SECONDARY. Kolom master menampung alamat primary untuk zone secondary. Di tabel records, kolom content menyimpan nilai record, prio untuk prioritas MX/SRV, dan auth menandai record yang dijawab sebagai otoritas.

Menjelajah Database Langsung

Karena gsqlite3 adalah file SQLite, kalian bisa memeriksa datanya langsung:

Lihat isi database gsqlite3
sqlite3 /var/lib/powerdns/pdns.sqlite3 "SELECT id, name, type FROM domains;"
sqlite3 /var/lib/powerdns/pdns.sqlite3 "SELECT name, type, content, ttl FROM records WHERE domain_id = 1;"

Perintah sqlite3 di atas menampilkan semua zone lalu seluruh record zone pertama. Ingat: mengubah database langsung melewati PowerDNS harus dilakukan dengan hati-hati, dan selalu jalankan pdnsutil rectify-zone setelahnya.

Import dan Export Data

Mengambil dan Memasukkan Zone

PowerDNS bisa mengubah data antara zone files dan database. Untuk memigrasikan zone dari BIND atau memindahkan antar server:

Export dan import zone
pdnsutil export-zone-dnssec example.com > /tmp/example.com.zone
pdnsutil import-zone example.com /tmp/example.com.zone

pdnsutil export-zone-dnssec mengekspor zone termasuk DNSKEY dan RRSIG yang ditandatangani — penting untuk memigrasikan zone DNSSEC tanpa mematahkan tanda tangan. Untuk memigrasikan seluruh database, gunakan tool database bawaan:

Backup database gsqlite3
sqlite3 /var/lib/powerdns/pdns.sqlite3 ".backup '/tmp/pdns-backup.sqlite3'"

Restore

Pulihkan dengan menyalin backup dan memastikan kepemilikan file benar:

Restore database
sudo systemctl stop pdns
sudo cp /tmp/pdns-backup.sqlite3 /var/lib/powerdns/pdns.sqlite3
sudo chown pdns:pdns /var/lib/powerdns/pdns.sqlite3
sudo systemctl start pdns

Untuk gmysql, backup memakai mysqldump dan restore dengan mysql. Prinsipnya sama: matikan service, pulihkan data, perbaiki permission, hidupkan kembali.

Backend Lain

lmdb: Kinerja Tinggi Built-in

lmdb adalah database embedded berkinerja tinggi yang dibangun di dalam PowerDNS. Dia mendukung RRset comments dan cocok untuk beban tinggi tanpa server database terpisah:

Aktifkan lmdb
launch=lmdb
lmdb-filename=/var/lib/powerdns/lmdb

geoip dan remote

  • geoip: menjawab berdasarkan lokasi klien memakai database MMDB. Cocok untuk content distribution dan split-horizon regional.
  • remote: menghubungkan PowerDNS ke sistem lain lewat HTTP API. Menjembatani DNS ke CMDB, IPAM, atau platform cloud internal.
Backend remote
launch=remote
remote-connection-string=http:127.0.0.1:8085

Lifecycle Sebuah Zone

Dari Lahir sampai Hapus

Keseluruhan siklus yang sudah kalian kenal, dirangkum menjadi satu alur:

Lifecycle zone
create-zone -> add-record -> rectify -> update serial
   -> transfer ke secondary -> DNSSEC (ep 13) -> delete

Untuk memperbarui zone yang sudah ada, pdnsutil edit-zone tetap cara paling nyaman. Penghapusan dilakukan dengan pdnsutil delete-zone:

Hapus zone
pdnsutil delete-zone example.com

Strategi Data di Skala Besar

Di skala besar, beberapa praktik yang terbukti: pisahkan database per region, monitor ukuran tabel records agar query SQL tetap cepat, rutin backup dan uji restore, serta gunakan lmdb atau gmysql dengan replikasi untuk beban tinggi. API (episode 20) kemudian menjadi pintu masuk tunggal untuk semua perubahan data.

Penutup

Episode 11 menutup sisi data PowerDNS: kalian memahami struktur domains dan records, bisa ekspor-import serta backup-restore, mengenal backend lmdb, geoip, dan remote, dan melihat lifecycle zone sebagai alur yang utuh.

Inti yang harus dibawa pulang:

  • domains menyimpan metadata zone; records menyimpan setiap resource record.
  • Ekspor memakai pdnsutil export-zone-dnssec; backup database dengan tool database bawaan.
  • Selalu pdnsutil rectify-zone setelah perubahan data manual.
  • lmdb adalah backend embedded berkinerja tinggi; geoip dan remote menambah kemampuan khusus.
  • Lifecycle zone berjalan dari create, edit, rectify, transfer, hingga delete.

Di episode 12 selanjutnya kita akan membahas dynamic updates dan automation — RFC 2136 dan pengaktifan DNS update dengan pdnsutil enable-dnsupdate, penggunaan nsupdate untuk update otomatis, serta integrasi dari DHCP, Docker, dan skrip provisioning.

Belajar DNS - Backends & Manajemen Data Zone | Belajar DNS