t.marcusの外部記憶装置

忘備録とかちょっとした考えとかをつらつらと...

MySQL8を入れて、memcached pluginを使うための忘備録

$ yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
$ yum install -y mysql-community-server mysql-community-client
$ systemctl start mysqld
$ grep "password" /var/log/mysqld.log
$ mysql -uroot -p


rootで入ったらパスワードリセット

mysql> set password = 'P4$$w0rd';

mysql 5.7.6でpassword()でラップしなくて良くなったので



設定投入

mysql> create database innodb_memcache;
mysql> use innodb_memcache;


-- キャッシュポリシーの設定

mysql> CREATE TABLE IF NOT EXISTS `cache_policies` (
    `policy_name` VARCHAR(40) PRIMARY KEY,
    `get_policy` ENUM('innodb_only', 'cache_only', 'caching','disabled') NOT NULL ,
    `set_policy` ENUM('innodb_only', 'cache_only','caching','disabled') NOT NULL ,
    `delete_policy` ENUM('innodb_only', 'cache_only', 'caching','disabled') NOT NULL,
    `flush_policy` ENUM('innodb_only', 'cache_only', 'caching','disabled') NOT NULL
  ) ENGINE = innodb;

mysql> INSERT INTO cache_policies
VALUES("cache_policy", "innodb_only", "innodb_only", "innodb_only", "innodb_only");


-- テーブル/カラムとのマッピングを追加

mysql> CREATE  TABLE IF NOT EXISTS `containers` (
    `name` varchar(50) not null primary key,
    `db_schema` VARCHAR(250) NOT NULL,
    `db_table` VARCHAR(250) NOT NULL,
    `key_columns` VARCHAR(250) NOT NULL,
    `value_columns` VARCHAR(250),
    `flags` VARCHAR(250) NOT NULL DEFAULT "0",
    `cas_column` VARCHAR(250),
    `expire_time_column` VARCHAR(250),
    `unique_idx_name_on_key` VARCHAR(250) NOT NULL
  ) ENGINE = InnoDB;

mysql> INSERT INTO containers
  VALUES ("aaa", "test", "demo_test", "key", "value",  "flags", "cas", "expire", "PRIMARY");


-- 設定を追加

mysql> CREATE  TABLE IF NOT EXISTS `config_options` (
    `name` varchar(50) not null primary key,
    `value` varchar(50)
  ) ENGINE = InnoDB;

mysql> INSERT INTO config_options VALUES("separator", "|");
mysql> INSERT INTO config_options VALUES("table_map_delimiter", ".");

テストデータの投入

mysql> create database test;
mysql> use test;

mysql> CREATE TABLE demo_test (
    `key` VARCHAR(32) not null primary key,
    `value` VARCHAR(1024),
    `flags` INT,
    `cas` BIGINT UNSIGNED,
    `expire` INT
  ) ENGINE = InnoDB;

mysql> INSERT INTO demo_test VALUES ("AA", "HELLO, HELLO", 8, 0, 0);

memcached pluginのインストール

mysql> install plugin daemon_memcached soname "libmemcached.so";


さすれば、11211でLISTENしてるので

$ netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:11211           0.0.0.0:*               LISTEN
:
:
:

telnetでアクセスして試してみる

$ telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
get AA
VALUE AA 8 12
HELLO, HELLO
END
quit
Connection closed by foreign host.