10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册 本手册摘录

15.20.3设置InnoDB memcached插件

介绍如何设置daemon_memcachedMySQL服务器上的插件。因为memcacheddaemon与MySQL服务器紧密集成,以避免网络流量和最小化延迟,您可以在使用此特性的每个MySQL实例上执行此进程。

笔记

在设置之前daemon_memcached插件,请咨询第15.20.5节“InnoDB Memcached Plugin的”安全考虑“了解防止未经授权访问所需的安全程序。

先决条件

  • daemon_memcached插件仅支持Linux,Solaris和MacOS平台。不支持其他操作系统。

  • 在从源代码构建MySQL时,必须使用-dwith_innodb_memcached = On..此构建选项在MySQL插件目录中生成两个共享库(plugin_dir)来运行daemon_memcached插入:

    • libmemcached.so: 这memcached守护程序插件到mysql。

    • innodb_engine.so:一个InnoDBAPI的插件memcached

  • libevent必须安装。

    • 如果您没有从源代码构建MySQL,那么libevent库未包含在您的安装中。请使用操作系统的安装方法进行安装libevent1.4.12或更高版本。例如,根据操作系统,您可以使用apt-get百胜,或端口安装.例如,在Ubuntu Linux上,使用:

      sudo apt-get安装libevent-dev
    • 如果你从源代码版本安装MySQL,libevent1.4.12是与包捆绑的,位于MySQL源代码目录的顶层。如果使用捆绑版本libevent,无需操作。如果要使用本地系统版本libevent,你必须构建MySQL与-DWITH_LIBEVENT生成选项设置为系统是的

安装和配置InnoDB memcached Plugin

  1. 配置daemon_memcached插件,所以它可以与InnoDB表,通过运行innodb_memcached_config.sql配置脚本,位于MYSQL_HOME/分享.此脚本安装innodb_memcache数据库包含三个必需的表(cache_policies.config_options,容器).它也安装了demo_test样本表测试数据库。

    mysql>来源MYSQL_HOME/分享/ innodb_memcached_config.sql

    innodb_memcached_config.sql脚本是一次性操作。如果稍后卸载并重新安装daemon_memcached插件。

    MySQL>使用InnoDB_Memcache;mysql>显示表格;+ ------------------------ + |tables_in_innodb_memcache |+ ------------------------ + |cache_policies ||config_options ||容器| +---------------------------+ mysql> USE test; mysql> SHOW TABLES; +----------------+ | Tables_in_test | +----------------+ | demo_test | +----------------+

    这些表格,innodb_memcache.containers桌子是最重要的。中的条目容器表提供到的映射InnoDB表列。每一个InnoDBdaemon_memcached控件中的条目容器表格

    innodb_memcached_config.sql脚本插入单个条目容器的映射demo_test表格对象中插入单行数据demo_test表格此数据允许您在安装完成后立即验证安装。

    mysql> SELECT * FROM innodb_memcache。容器\G *************************** 1. row *************************** name: aaa db_schema: test db_table: demo_test key_columns: c1 value_columns: c2 flags: c3 cas_column: c4 expire_time_column: c5 unique_idx_name_on_key: PRIMARY mysql> SELECT * FROM test.demo_test; +----+------------------+------+------+------+ | c1 | c2 | c3 | c4 | c5 | +----+------------------+------+------+------+ | AA | HELLO, HELLO | 8 | 0 | 0 | +----+------------------+------+------+------+

    有关的更多信息innodb_memcache桌子和桌子demo_test样表,请参阅章节15.20.8,“InnoDB memcached Plugin Internals”

  2. 激活daemon_memcached插件,通过运行安装插件声明:

    mysql> INSTALL PLUGIN daemon_memcached soname "libmemcached.so";

    安装插件后,每次重新启动MySQL Server时会自动激活它。

验证InnoDB和memcached配置

来验证daemon_memcached插件设置,使用telnet.会议发行memcached命令。默认情况下,memcached守护程序在端口11211上侦听。

  1. test.demo_test.表格中的单行数据demo_test表的键值为AA.

    telnet localhost 11211 Trying 127.0.0.1…连接到localhost。转义字符是'^]'。get AA VALUE AA 8 12 HELLO, HELLO END
  2. 使用命令。

    设置BB 10 0 16再见,再见储存

    在哪里:

    • 是存储值的命令吗

    • BB.是关键

    • 10是操作的标志;忽视了memcached但是客户可以用来指示任何类型的信息;指定0.如果未使用

    • 0.为过期时间(TTL);指定0.如果未使用

    • 16所提供的值块的长度是否以字节为单位

    • 再见,再见是存储的值

  3. 通过连接到MySQL服务器并查询test.demo_test.表格

    mysql> SELECT * FROM test.demo_test;+----+------------------+------+------+------+ | c1 | c2 | c3 | c4 | c5  | +----+------------------+------+------+------+ | AA |你好,你好| 8 | 0 | 0 | | BB |再见,再见| 10 | 1 | 0  | +----+------------------+------+------+------+
  4. 返回到telnet会话并检索您先前使用键插入的数据BB.

    得到BB值BB 10 16再见,再见结束退出

如果您关闭了MySQL服务器,也会关闭集成的服务器memcached服务器,进一步尝试访问memcached数据失败,出现连接错误。通常情况下,memcached此时数据也消失了,您需要应用程序逻辑将数据加载回内存中memcached重新启动。然而,InnoDBmemcached插件为您自动化这个过程。

当你重启MySQL时,得到操作再次返回先前存储的键值对memcached会话。当一个键被请求时,关联的值还没有在内存缓存中,这个值会自动从MySQL查询test.demo_test.表格

创建一个新的表和列映射

这个例子展示了如何设置你自己的InnoDBdaemon_memcached插件。

  1. 创建一个InnoDB表格表必须具有具有惟一索引的键列。城市表的键列为city_id,定义为主键。表还必须包括旗帜中科院,到期值。可能有一个或多个值列。这城市表有三个值列(的名字状态国家).

    笔记

    属性中添加了有效的映射,对于列名没有特殊要求innodb_memcache.containers表格

    MySQL> Create Table City(City_ID varchar(32),名称varchar(1024),状态varchar(1024),country varchar(1024),标志int,cas bigint unsigned,Expiry int,主键(City_ID))引擎= InnoDB;
  2. 控件中添加一个条目innodb_memcache.containers表格,以便daemon_memcached插件知道如何访问InnoDB表格条目必须满足innodb_memcache.containers表定义。有关每个字段的描述,请参阅章节15.20.8,“InnoDB memcached Plugin Internals”

    mysql >描述innodb_memcache.containers;+------------------------+--------------+------+-----+---------+-------+ | 字段默认零关键| | | | |类型多  | +------------------------+--------------+------+-----+---------+-------+ | 名字| varchar (50) | | PRI零| | | | db_schema | varchar(250) | | |零| | | db_table | varchar(250) | | |零| | | key_columns |varchar(250) | | |零| | | value_columns | varchar(250) |是| |零| | | |旗帜varchar (250) | | | 0 | | | cas_column | varchar(250) |是| |零| | | expire_time_column | varchar(250) |是| |零| | | unique_idx_name_on_key | varchar(250) | | |零| |+------------------------+--------------+------+-----+---------+-------+

    innodb_memcache.containerscity表的表项定义为:

    mysql> INSERT INTO ' innodb_memcache '。VALUES ('default', 'test', 'city', 'city_id', 'name|state|country', 'flags','cas','expiry','PRIMARY');
    • 默认的containers.name列,以配置城市表作为默认值InnoDB要与表一起使用daemon_memcached插件。

    • InnoDB表列(的名字状态国家)映射为containers.value_columns用一个|分隔符。

    • 旗帜cas_column,expire_time_column的字段innodb_memcache.containers表在使用daemon_memcached插件。然而,一个指定的InnoDB每个都需要表列。插入数据时,请指定0.对于这些列,如果它们未使用。

  3. 更新后innodb_memcache.containers表,重新启动daemon_memcache插件来应用更改。

    mysql>卸载PLUGIN daemon_memcachedmysql> INSTALL PLUGIN daemon_memcached soname "libmemcached.so";
  4. 使用telnet将数据插入城市表的使用memcached命令。

    telnet localhost 11211 Trying 127.0.0.1…连接到localhost。转义字符是'^]'。set B 0 0 22 BANGALORE|BANGALORE|IN STORED .设置B 0 0 22 BANGALORE|
  5. 使用MySQL查询test.city表来验证插入的数据是否已存储。

    mysql>从test.city中选择*;+ --------- + ---------- + ----------- + --------- + ------  + ------ + -------- + |city_id |名称|国家|国家|标志|CAS |到期+ --------- + ---------- + ----------- + --------- + ------  + ------ + -------- + | B | BANGALORE | BANGALORE | IN | 0 | 3 | 0 | +---------+-----------+-----------+---------+-------+------+--------+
  6. 使用MySQL将其他数据插入到test.city表格

    mysql> INSERT INTO city VALUES ('C','钦奈','泰米尔纳德邦','IN', 0, 0,0);mysql> INSERT INTO city VALUES ('D','德里','德里','IN', 0, 0, 0);mysql> INSERT INTO city VALUES ('H','HYDERABAD','TELANGANA','IN', 0, 0, 0);mysql> INSERT INTO city VALUES ('M','MUMBAI','MAHARASHTRA','IN', 0, 0, 0);
    笔记

    建议您指定一个值0.旗帜cas_column,expire_time_column字段,如果它们未被使用。

  7. 使用telnet,发出amemcached得到命令检索使用MySQL插入的数据。

    获取H值H 0 22海德拉巴| Telangana |在结束时

配置InnoDB MEMCACHED插件

传统的memcached可以在MySQL配置文件或A中指定配置选项mysqld.的参数中编码的启动字符串daemon_memcached_option.配置参数。memcached配置选项在插件加载时生效,每次MySQL服务器启动时都会发生。

例如,制作memcached请指定监听端口11222,而不是默认端口11211-p11222作为一个论点daemon_memcached_option.配置选项:

mysqld……——daemon_memcached_option = " -p11222 "

其他memcached选项可以被编码到daemon_memcached_option.字符串。例如,您可以指定减少最大同时连接数的选项,更改键值对的最大内存大小,或为错误日志启用调试消息,等等。

还有特定于配置选项daemon_memcached插件。这些包括:

  • daemon_memcached_engine_lib_name:指定实现的共享库InnoDBmemcached插件。默认设置是innodb_engine.so

  • daemon_memcached_engine_lib_path:包含实现的共享库的目录的路径InnoDBmemcached插件。默认值为null,表示插件目录。

  • daemon_memcached_r_batch_size:定义读取操作的批处理提交大小(得到).它指定数量memcached读取操作后a提交发生。daemon_memcached_r_batch_size默认设置为1,所以每得到控件中最近提交的数据InnoDB表,是否通过更新数据memcached或SQL。当该值大于1时,读取操作的计数器将随着每一个值的增加而增加得到调用。一个Flush_all.调用将重置读和写计数器。

  • daemon_memcached_w_batch_size:定义写操作的批提交大小(取代附加预谋Inc.decr等等)。daemon_memcached_w_batch_size默认设置为1,以便在停机时不会丢失未提交的数据,并且在基础表上的SQL查询可以访问最近的数据。当该值大于1时,写操作的计数器每增加一次添加Inc.decr,删除调用。一个Flush_all.调用将重置读和写计数器。

缺省情况下,不需要修改daemon_memcached_engine_lib_namedaemon_memcached_engine_lib_path.例如,如果要使用其他存储引擎,您可能会配置这些选项memcached(比如新开发银行memcached引擎)。

daemon_memcachedMySQL插件的配置参数可以在MySQL配置文件中指定,也可以在mysqld.启动字符串。控件时生效daemon_memcached插件。

当对daemon_memcached插件配置,重新加载插件以应用更改。为此,请发表以下声明:

mysql>卸载PLUGIN daemon_memcachedmysql> INSTALL PLUGIN daemon_memcached soname "libmemcached.so";

当插件重新启动时,配置设置、必需的表和数据将被保留。

有关启用和禁用插件的其他信息,请参见第5.6.1节,“插件的安装和卸载”