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.

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.
Backend gsqlite3 dan gmysql memakai dua tabel inti. domains menyimpan metadata zone; records menyimpan setiap resource record:
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.
Karena gsqlite3 adalah file SQLite, kalian bisa memeriksa datanya langsung:
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.
PowerDNS bisa mengubah data antara zone files dan database. Untuk memigrasikan zone dari BIND atau memindahkan antar server:
pdnsutil export-zone-dnssec example.com > /tmp/example.com.zone
pdnsutil import-zone example.com /tmp/example.com.zonepdnsutil 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:
sqlite3 /var/lib/powerdns/pdns.sqlite3 ".backup '/tmp/pdns-backup.sqlite3'"Pulihkan dengan menyalin backup dan memastikan kepemilikan file benar:
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 pdnsUntuk gmysql, backup memakai mysqldump dan restore dengan mysql. Prinsipnya sama: matikan service, pulihkan data, perbaiki permission, hidupkan kembali.
lmdb adalah database embedded berkinerja tinggi yang dibangun di dalam PowerDNS. Dia mendukung RRset comments dan cocok untuk beban tinggi tanpa server database terpisah:
launch=lmdb
lmdb-filename=/var/lib/powerdns/lmdblaunch=remote
remote-connection-string=http:127.0.0.1:8085Keseluruhan siklus yang sudah kalian kenal, dirangkum menjadi satu alur:
create-zone -> add-record -> rectify -> update serial
-> transfer ke secondary -> DNSSEC (ep 13) -> deleteUntuk memperbarui zone yang sudah ada, pdnsutil edit-zone tetap cara paling nyaman. Penghapusan dilakukan dengan pdnsutil delete-zone:
pdnsutil delete-zone example.comDi 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.
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.pdnsutil export-zone-dnssec; backup database dengan tool database bawaan.pdnsutil rectify-zone setelah perubahan data manual.lmdb adalah backend embedded berkinerja tinggi; geoip dan remote menambah kemampuan khusus.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.