Setting Up InnoDB Memcached Plugin in MySQL

Jika biasanya Memcached digunakan sebagai plugin WordPress untuk Object Cache, Pada panduan ini akan membahas cara menggunakan Memcached sebagai plugin di dalam MySQL sehingga menyediakan database NoSQL dengan kinerja yang lebih cepat.

Prerequisites

Untuk menggunakan plugin memcached, Anda perlu menginstall MySQL minimal versi 5.7 atau 8.0 yang bisa Anda dapatkan melalui repository atau mengunduh packagenya di situs resmi MySQL Community

Selanjutnya install package libevent

yum -y install libevent libevent-devel

Configure InnoDB memcached Plugin

Konfigurasikan daemon_memcached agar dapat berinteraksi dengan tabel InnoDB dengan menjalankan skrip innodb_memcached_config.sql

Akses MySQL sebagai user root

mysql -u root -p

Lalu jalankan perintah berikut.

source /usr/share/mysql-8.0/innodb_memcached_config.sql

Ini akan membuat database innodb_memcache yang diperlukan daemon_memcached serta database test untuk pengujian.

Kemudian aktifkan plugin daemon_memcached dengan perintah.

INSTALL PLUGIN daemon_memcached soname "libmemcached.so";

Setelah plugin terinstall maka daemon memcached sudah dapat digunakan. Cek listen IP dan port memcached dengan netstat

# netstat -plntu | grep -i mysql
tcp        0      0 0.0.0.0:11211           0.0.0.0:*               LISTEN      1938/mysqld
tcp6       0      0 :::11211                :::*                    LISTEN      1938/mysqld
tcp6       0      0 :::33060                :::*                    LISTEN      1938/mysqld
tcp6       0      0 :::3306                 :::*                    LISTEN      1938/mysqld
udp        0      0 0.0.0.0:11211           0.0.0.0:*                           1938/mysqld
udp6       0      0 :::11211                :::*                                1938/mysqld

Untuk membuatnya lebih aman, Anda dapat mengatur listen IP dan port pada file konfigurasi MySQL /etc/my.cnf

daemon_memcached_option="-p11222 -l 127.0.0.1"

Cek kembali listen IP dan port memcached.

# netstat -plntu | grep -i mysql
tcp        0      0 127.0.0.1:11222         0.0.0.0:*               LISTEN      2316/mysqld
tcp6       0      0 :::33060                :::*                    LISTEN      2316/mysqld
tcp6       0      0 :::3306                 :::*                    LISTEN      2316/mysqld
udp        0      0 127.0.0.1:11222         0.0.0.0:*                           2316/mysqld

Test memcached Plugin

Akses memcached dengan telnet

telnet localhost 11211

Untuk mengambil data dari tabel demo_test dengan nilai kunci AA.

get AA

Output

VALUE AA 8 12
Hello, Hello
END

Insert data menggunakan perintah set

set BB 10 0 16
GOODBYE, GOODBYE

Penjelasan:

  • set adalah perintah untuk menyimpan atau menambah data.
  • BB adalah nilai kunci
  • 10 adalah flag untuk menunjukan jenis informasi ke klient memcached. beri nilai 0 jika tidak digunakan.
  • 0 adalah waktu kadaluwarsa (TTL). beri nilai 0 jika tidak digunakan.
  • 16 adalah panjang blok nilai yang ditentukan dalam byte.
  • GOODBYE, GOODBYE adalah data yang akan disimpan.

Verifikasi bahwa data telah tersimpan di MySQL pada table test.demo_test.

mysql> select * from test.demo_test;
+----+------------------+------+------+------+
| c1 | c2               | c3   | c4   | c5   |
+----+------------------+------+------+------+
| AA | Hello, Hello     |    8 |    0 |    0 |
| BB | GOODBYE, GOODBYE |   10 |    6 |    0 |
+----+------------------+------+------+------+
2 rows in set (0.00 sec)

Kembali ke telnet lalu test pengambilan data dengan nilai kunci BB

get BB
VALUE BB 10 16
GOODBYE, GOODBYE
END

Creating a New Table and Column Mapping

Untuk membuat database dan tabel Anda sendiri agar dapat digunakan dengan plugin daemon_memcached.

Buat database store

CREATE DATABASE `store`;

Selanjutnya buat tabel seperti berikut.

CREATE TABLE `user` (
  `username` varchar(64) NOT NULL,
  `password` varchar(64) DEFAULT NULL,
  `secret_key` varchar(64) DEFAULT NULL,
  `flags` int DEFAULT NULL,
  `cas` bigint unsigned DEFAULT NULL,
  `ttl` int DEFAULT NULL,
  PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Tabel yang dibuat harus menyertakan kolom flags,cas,ttl.

Tambahkan tabel dan database yang telah dibuat ke dalam innodb_memcache.containers.

use innodb_memcache
delete from containers;
insert into containers values ('user','store','user','username','password|secret_key','flags','cas','ttl','PRIMARY');

Setelah update table innodb_memcache.containers, selanjutnya restart plugin daemon_memcache untuk menerapkan perubahan.

UNINSTALL PLUGIN daemon_memcached;
INSTALL PLUGIN daemon_memcached soname "libmemcached.so";

Test memcached

Menambah data.

set parman 0 0 14
123|123_admin
STORED

Mengambil data.

get parman
VALUE parman 0 14
123|123_admin