Categories
Tutorial, Manual, Tips dan Trik

Join Tabel Lebih Dari Satu Server di MySQL

Pada suatu saat mungkin programmer ingin membuat join antar tabel yang letaknya tidak hanya berbeda database, tetapi juga berbeda server. Bisa dua sistem yang dibuat sendiri, maupun salah satu atau keduanya sistem yang tidak dibuat sendiri, seperti Open Source. Misalnya menghubungkan Sistem Informasi Universitas dengan Elearning yang dibangun dengan Moodle, seperti pada gambar di bawah ini:

Join Antar Server MySQL
Join Antar Server MySQL

CREATE TABLE `server1`.`detail_sampel` (
`iddetailsampel` INT(10) UNSIGNED NOT NULL,
`detailsampel` VARCHAR(100) NOT NULL,
`idsampel` INT(10) UNSIGNED NOT NULL,
PRIMARY KEY (`iddetailsampel`));

CREATE TABLE `server2`.`sampel` (
`idsampel` INT(10) UNSIGNED NOT NULL,
`sampel` VARCHAR(100) NOT NULL,
PRIMARY KEY (`idsampel`));

FEDERATED

Pada MySQL, hal tersebut tidak dapat dilakukan, kecuali menggunakan tabel dengan jenis FEDERATED.

The FEDERATED storage engine lets you access data from a remote MySQL database without using replication or cluster technology. Querying a local FEDERATED table automatically pulls the data from the remote (federated) tables. No data is stored on the local tables. The FEDERATED storage engine is not enabled by default in the running server; to enable FEDERATED, you must start the MySQL server binary using the –federated option. (sumber: https://dev.mysql.com/doc/refman/8.0/en/federated-storage-engine.html)

Join Antar Server MySQL Federated
Join Antar Server MySQL Federated

CREATE TABLE `server1`.`kopisampel` (
`idsampel` INT(10) UNSIGNED NOT NULL,
`sampel` VARCHAR(100) NOT NULL,
PRIMARY KEY (`idsampel`))
ENGINE=FEDERATED
CONNECTION=’mysql://userdbserver2:passworddbserver2@192.168.1.2:3306/server2/sampel’;

Sekarang join antar tabel lebih dari satu tabel dapat dilakukan dengan cara membuat tabel berjenis FEDERATED yang sama persis strukturnya dengan tabel yang letaknya berbeda server. Oleh karena itu, jika melakukan query seperti di bawah ini:

SELECT * FROM `server1`.`detailsampel` ds JOIN `server1`.`kopisampel` ks ON ks.idsampel=ds.idsampel;

maka seolah-olah melakukan query seperti di bawah ini:

SELECT * FROM `server1`.`detailsampel` ds JOIN `server2`.`sampel` s ON s.idsampel=ds.idsampel;

Mengaktifkan Federated (Ubuntu)

Pada definisi tipe tabel Federated di atas, disebutkan bahwa untuk memulai agar Federated dapat digunakan maka gunakan –federated pada saat memulai Mysql. Oleh karena itu, lakukan perintah di bawah ini:

  1. nano /lib/systemd/system/mysql.service
    ubah ExecStart=/usr/sbin/mysqld menjadi ExecStart=/usr/sbin/mysqld –federated
  2. systemctl daemon-reload
  3. service mysql restart
https://pdsi.unisayogya.ac.id/feed/rss2/

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.