Install MySQL FEDERATED engine
20 Views

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:

sql
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:

  1. Buka file konfigurasi MySQL

    • Di Linux: /etc/my.cnf atau /etc/mysql/my.cnf

    • Di Windows: C:\ProgramData\MySQL\MySQL Server X.X\my.ini

  2. Tambahkan baris berikut di dalam bagian [mysqld]

    ini
    [mysqld]
    federated

    Atau bisa juga dengan format lengkapnya:

    ini
    [mysqld]
    federated=1

    Cara ini berlaku untuk MySQL versi 5.5 hingga 8.x .

  3. Restart layanan MySQL

    • Di Linux (systemd):

      bash
      sudo systemctl restart mysqld

      atau

      bash
      sudo systemctl restart mariadb
    • Di Windows: Restart service MySQL melalui Services.msc

  4. Verifikasi kembali
    Jalankan ulang perintah SHOW ENGINES; dan pastikan kolom Support untuk FEDERATED sekarang bernilai YES .

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:

sql
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.

sql
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 .

sql
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 :

  1. 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.

  2. Performa Tergantung Jaringan: Karena setiap query melakukan request ke server remote, performa sangat dipengaruhi oleh kecepatan dan stabilitas jaringan.

  3. 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 .

  4. Tidak Mendukung DDL: Anda tidak bisa menjalankan ALTER TABLE pada tabel FEDERATED. Untuk mengubah struktur, lakukan langsung di tabel remote.

  5. Tidak Mendukung Transaksi: FEDERATED tidak mendukung transaksi (ACID).

  6. DROP TABLE: Menghapus tabel FEDERATED di lokal tidak akan menghapus tabel di remote.

  7. Batasan Password: Jangan gunakan karakter @ dalam password jika menggunakan CONNECTION string. Gunakan CREATE SERVER sebagai 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:

bash
cmake . -DWITH_FEDERATED_STORAGE_ENGINE=1

Kesimpulan

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.