FEDERATED adalah storage engine pada MySQL yang memungkinkan Anda mengakses data dari database MySQL jarak jauh (remote) seolah-olah data tersebut berada di database lokal. Konsep ini mirip seperti database link (dblink) pada Oracle. Data tidak disimpan secara fisik di tabel lokal; yang ada hanya struktur tabelnya. Setiap kali Anda melakukan query ke tabel FEDERATED, MySQL akan mengambil data secara langsung dari tabel remote yang dituju .
FEDERATED sangat berguna untuk:
Menggabungkan data dari beberapa server MySQL tanpa replikasi.
Melakukan query lintas database/server.
Mengakses data dari server lain untuk keperluan reporting atau analisis sementara.
Pengecekan Status FEDERATED Engine
Secara default, FEDERATED engine sudah tersedia dalam instalasi MySQL (terutama untuk versi 5.5 ke atas), tetapi dalam keadaan tidak aktif (NO) . Untuk mengecek statusnya, jalankan perintah SQL berikut:
SHOW ENGINES;Perhatikan kolom Support pada baris FEDERATED. Jika nilainya NO, berarti engine belum diaktifkan. Jika YES, engine sudah siap digunakan.
Cara Mengaktifkan FEDERATED Engine
Untuk mengaktifkan FEDERATED, Anda perlu menambahkan opsi federated pada file konfigurasi MySQL (my.cnf atau my.ini) dan merestart layanan MySQL.
Langkah-langkah:
Buka file konfigurasi MySQL
Di Linux:
/etc/my.cnfatau/etc/mysql/my.cnfDi Windows:
C:\ProgramData\MySQL\MySQL Server X.X\my.ini
Tambahkan baris berikut di dalam bagian
[mysqld][mysqld] federated
Atau bisa juga dengan format lengkapnya:
[mysqld] federated=1
Restart layanan MySQL
Di Linux (systemd):
sudo systemctl restart mysqldatau
sudo systemctl restart mariadbDi Windows: Restart service MySQL melalui
Services.msc
Verifikasi kembali
Jalankan ulang perintahSHOW ENGINES;dan pastikan kolomSupportuntuk FEDERATED sekarang bernilaiYES.
Cara Membuat Tabel FEDERATED
Setelah engine aktif, Anda dapat membuat tabel FEDERATED. Pastikan tabel yang dituju di server remote sudah ada terlebih dahulu .
Sintaks Dasar:
CREATE TABLE nama_tabel_lokal ( kolom1 tipe_data, kolom2 tipe_data, ... ) ENGINE=FEDERATED CONNECTION='mysql://user:password@host:port/nama_database/nama_tabel_remote';
Contoh:
Misalkan Anda memiliki server remote dengan alamat 192.168.1.100, database db_remote, tabel data_pegawai, username user1, password pass123.
CREATE TABLE pegawai_federated ( id INT NOT NULL AUTO_INCREMENT, nama VARCHAR(100), jabatan VARCHAR(50), PRIMARY KEY (id) ) ENGINE=FEDERATED CONNECTION='mysql://user1:pass123@192.168.1.100:3306/db_remote/data_pegawai';
Menggunakan CREATE SERVER (Alternatif)
Jika Anda tidak ingin mencantumkan password secara eksplisit dalam CONNECTION, gunakan CREATE SERVER .
CREATE SERVER remote_server FOREIGN DATA WRAPPER mysql OPTIONS ( HOST '192.168.1.100', DATABASE 'db_remote', USER 'user1', PASSWORD 'pass123', PORT 3306 ); CREATE TABLE pegawai_federated ( ... kolom ... ) ENGINE=FEDERATED CONNECTION='remote_server/data_pegawai';
Hal yang Perlu Diperhatikan (Catatan Penting)
Sebelum menggunakan FEDERATED di lingkungan produksi, perhatikan keterbatasan berikut :
Tidak Ada Data Lokal: Tabel FEDERATED hanya menyimpan struktur (file .frm). File data (.MYD) tidak ada. Jika server remote mati, tabel lokal tidak bisa diakses.
Performa Tergantung Jaringan: Karena setiap query melakukan request ke server remote, performa sangat dipengaruhi oleh kecepatan dan stabilitas jaringan.
Indeks: Tabel FEDERATED tidak bisa memiliki indeks sendiri. Pencarian akan mengandalkan indeks di tabel remote. Query tanpa indeks dapat menyebabkan penarikan seluruh data (full scan) melalui jaringan .
Tidak Mendukung DDL: Anda tidak bisa menjalankan
ALTER TABLEpada tabel FEDERATED. Untuk mengubah struktur, lakukan langsung di tabel remote.Tidak Mendukung Transaksi: FEDERATED tidak mendukung transaksi (ACID).
DROP TABLE: Menghapus tabel FEDERATED di lokal tidak akan menghapus tabel di remote.
Batasan Password: Jangan gunakan karakter
@dalam password jika menggunakanCONNECTIONstring. GunakanCREATE SERVERsebagai solusinya .
Jika FEDERATED Tidak Ada (Compile dari Source)
Untuk kasus yang jarang terjadi (misalnya Anda melakukan kompilasi MySQL dari sumber), pastikan Anda menyertakan opsi berikut saat menjalankan CMake:
cmake . -DWITH_FEDERATED_STORAGE_ENGINE=1Kesimpulan
FEDERATED
engine adalah solusi ringan untuk mengakses data lintas server MySQL
tanpa perlu replikasi. Proses aktivasi sangat mudah, cukup dengan
menambahkan kata federated ke file
konfigurasi dan merestart server. Meskipun memiliki keterbatasan pada
sisi performa dan fitur DDL, FEDERATED tetap menjadi pilihan praktis
untuk integrasi data sementara atau reporting antar basis data yang
terpisah.










