Ketika membangun arsitektur database terdistribusi atau melakukan sinkronisasi data dari edge device (seperti Mini PC di lokasi lokal) ke laptop pengembangan/server pusat, kendala paling umum yang ditemui adalah ketiadaan IP Publik Statis.
Pada panduan teknis kali ini, kita akan mengonfigurasi Replikasi MariaDB Multi-Source Real-Time menggunakan Cloudflare Tunnel (Zero Trust TCP Access) tanpa perlu membuka port forwarding pada router lokal.
Topologi Sistem
[ Mini PC (Master) ] ---> (MariaDB :3306)
│
▼
[ Cloudflare Tunnel Client ] ---> [ Cloudflare Zero Trust Network ] (db.domain.id)
│
▼
[ Laptop (Replica) ] <--- access="" cloudflared="" code="" mariadb="" tcp="">--->
Bagian A: Konfigurasi Master (Mini PC)
1. Setup Cloudflare Tunnel (Zero Trust Dashboard)
Masuk ke Zero Trust Dashboard dan tambahkan Public Hostname dengan parameter berikut:
- Public Hostname:
db.domain.id - Service Type:
TCP - URL Target:
localhost:3306(diarahkan ke Service MariaDB lokal)
2. Persiapan Folder Binary Log di OS
Buka terminal Mini PC, buat folder penampung binary log dan atur kepemilikan user ke mysql:
sudo mkdir -p /var/log/mysql
sudo chown -R mysql:mysql /var/log/mysql
sudo chmod 750 /var/log/mysql
3. Konfigurasi MariaDB Master
Edit file konfigurasi MariaDB di /etc/mysql/mariadb.conf.d/50-server.cnf:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Tambahkan parameter berikut di bawah blok [mysqld]:
[mysqld]
server-id = 1
log_bin = /var/log/mysql/mariadb-bin.log
binlog_format = ROW
expire_logs_days = 7
Simpan file, lalu restart service MariaDB:
sudo systemctl restart mariadb
4. Pembuatan User Replikasi
Jalankan query SQL berikut untuk membuat user replikasi. Buat otentikasi untuk host %, localhost, dan 127.0.0.1 (karena lalu lintas dari tunnel diidentifikasi masuk via interface loopback):
CREATE USER IF NOT EXISTS 'repl_user'@'%' IDENTIFIED BY 'PasswordMasterAnda';
CREATE USER IF NOT EXISTS 'repl_user'@'localhost' IDENTIFIED BY 'PasswordMasterAnda';
CREATE USER IF NOT EXISTS 'repl_user'@'127.0.0.1' IDENTIFIED BY 'PasswordMasterAnda';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl_user'@'%';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl_user'@'localhost';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl_user'@'127.0.0.1';
FLUSH PRIVILEGES;
5. Verifikasi Status Log Master
Periksa posisi log biner aktif dengan query:
SHOW MASTER STATUS;
Catat nama file di kolom
File (contoh: mariadb-bin.000001) dan nomor di kolom Position (contoh: 70661). Nilai ini dibutuhkan saat menyambungkan Replica di Laptop.
Bagian B: Konfigurasi Replica (Laptop)
1. Konfigurasi Filter & Multi-Source Replikasi
Edit file konfigurasi MariaDB di Laptop (/etc/mysql/mariadb.conf.d/50-server.cnf):
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Tambahkan baris berikut di bawah blok [mysqld]:
[mysqld]
server-id = 2
read_only = 1
# Format: nama_koneksi.replicate_rewrite_db = db_sumber->db_tujuan
minipc_1.replicate_rewrite_db = tes_replikasi->tes_replikasi_pc1
# 2. FILTER: Hanya terima database hasil belokan (semua database lain akan otomatis dibuang/diabaikan)
minipc_1.replicate_do_db = tes_replikasi_pc1
Restart service MariaDB Laptop:
sudo systemctl restart mariadb
2. Aktifkan Listener Cloudflare Access TCP
Jalankan perintah ini di terminal Laptop untuk menjembatani domain remote ke port lokal (contoh: port 3307):
cloudflared access tcp --hostname db.domain.id --url 127.0.0.1:3307
3. Sinkronisasi Data Awal
- Ekspor Data Master: Buka phpMyAdmin / Terminal di Mini PC > Export database
tes_replikasike format.sql. - Impor ke Laptop: Buat database baru bernama
tes_replikasi_pc1di Laptop > Import file.sqltersebut.
4. Hubungkan Channel Replikasi
Buka SQL tab di phpMyAdmin Laptop atau terminal MariaDB, lalu jalankan query:
STOP SLAVE 'minipc_1';
RESET SLAVE 'minipc_1';
CHANGE MASTER 'minipc_1' TO
MASTER_HOST='127.0.0.1',
MASTER_PORT=3307,
MASTER_USER='repl_user',
MASTER_PASSWORD='PasswordMasterAnda',
MASTER_LOG_FILE='mariadb-bin.000001',
MASTER_LOG_POS=70661,
MASTER_SSL=0;
START SLAVE 'minipc_1';
Verifikasi & Pengujian Real-Time
Jalankan perintah berikut pada MariaDB Laptop untuk mengecek status saluran replikasi:
SHOW SLAVE 'minipc_1' STATUS;
Pastikan parameter utama bernilai:
Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Rewrite_DB:tes_replikasi -> tes_replikasi_pc1
Prosedur Pengujian Sinkronisasi:
- Uji Tambah Data: Masukkan 1 baris data baru pada database di Mini PC. Data akan langsung terduplikasi ke Laptop secara instant.
- Uji Database Filter: Buat tabel baru pada database lain di Mini PC. Tabel tersebut tidak akan masuk ke Laptop karena tidak terdaftar pada filter
replicate_rewrite_db.
Jika status
Slave_IO_Running bernilai Connecting atau No, pastikan service cloudflared access tcp di Laptop masih aktif running di terminal background dan port 3307 tidak terhalang firewall/UFW.
