介绍如何设置daemon_memcached
MySQL服务器上的插件。因为memcached守护进程与MySQL服务器紧密集成,以避免网络流量和最小化延迟,您可以在每个使用此特性的MySQL实例上执行此过程。
在设置daemon_memcached
插件,请咨询章节15.20.5,InnoDB memcached插件的安全注意事项了解防止未经授权的访问所需的安全程序。
的
daemon_memcached
该插件仅支持Linux、Solaris和macOS平台。不支持其他操作系统。从源代码构建MySQL时,必须使用
-DWITH_INNODB_MEMCACHED =对
.此构建选项在MySQL插件目录(plugin_dir
),以运行daemon_memcached
插件:libmemcached.so
:memcachedMySQL的daemon插件。innodb_engine.so
:一个InnoDB
API插件memcached.
libevent
必须安装。如果您不是从源代码构建MySQL,则
libevent
库不包含在您的安装中。请使用操作系统的安装方法进行安装libevent
1.4.12及以上版本。例如,您可能使用的操作系统不同apt-get
,百胜
,或端口安装
.例如,在Ubuntu Linux上,使用:安装libevent-dev
如果你从源代码版本安装MySQL,
libevent
1.4.12与软件包捆绑在一起,位于MySQL源代码目录的顶层。如果您使用的是捆绑版libevent
,无需处理。的本地系统版本libevent
,您必须使用-DWITH_LIBEVENT
生成选项设置为系统
或是的
.
配置
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
插件。使用innodb_memcache;mysql>显示表+---------------------------+ | Tables_in_innodb_memcache | +---------------------------+ | cache_policies | | config_options | |容器 | +---------------------------+ mysql >使用测试;mysql>显示表+----------------+ | Tables_in_test | +----------------+ | demo_test | +----------------+
在这些表中,
innodb_memcache.containers
表是最重要的。在容器
表提供到的映射InnoDB
表列。每一个InnoDB
表与daemon_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插件内部简介”.激活
daemon_memcached
插件通过运行安装插件
声明:mysql> INSTALL PLUGIN libmemcached soname
插件安装完成后,每次MySQL服务器重启时都会自动激活。
验证daemon_memcached
插件设置,使用远程登录要发布的会话memcached命令。默认情况下,memcached守护进程监听端口11211。
从
test.demo_test
表格中的单行数据demo_test
表的键值为AA
.telnet localhost 11211正在尝试127.0.0.1…已连接到本地主机。转义字符是'^]'。获取AA值AA 8 12 HELLO, HELLO结束
使用
集
命令。设置BB 10 0 16 GOODBYE, GOODBYE存储
地点:
集
该命令是用来存储值的吗BB
是关键10
操作的标志;忽视了memcached但可被客户用来表明任何类型的信息;指定0
如果未使用0
为过期时间(TTL);指定0
如果未使用16
提供的值块的长度以字节为单位吗再见,再见
是存储的值吗
通过连接MySQL服务器,查询
test.demo_test
表格mysql> SELECT * FROM test.demo_test+----+------------------+------+------+------+ | c1 | c2 | c3 | c4 | c5 | +----+------------------+------+------+------+ | AA |你好,你好| 8 | 0 | 0 | | BB |再见,再见| 10 | 1 | 0 | +----+------------------+------+------+------+
返回到telnet会话并检索之前使用key插入的数据
BB
.得到BB值BB 10 16再见,再见结束退出
如果关闭了MySQL服务器,也就同时关闭了集成memcached服务器,进一步尝试访问memcached数据失败,连接错误。通常情况下,memcached此时数据也会消失,当数据被加载回内存时,您将需要应用程序逻辑memcached重新启动。然而,InnoDB
memcached插件为您自动化这个过程。
当你重启MySQL时,得到
操作再次返回您在前面存储的键-值对memcached会话。当一个键被请求并且相关的值还没有在内存缓存中,这个值会自动从MySQL中查询test.demo_test
表格
这个例子展示了如何设置您自己的InnoDB
表的daemon_memcached
插件。
创建一个
InnoDB
表格表必须有一个索引唯一的键列。城市表的关键列为city_id
,它被定义为主键。表还必须包括列旗帜
,中科院
,到期
值。可能有一个或多个值列。的城市
表有三个值列(的名字
,状态
,国家
).请注意类中添加了有效的映射,因此对列名没有特殊要求
innodb_memcache.containers
表格mysql> CREATE TABLE city (city_id VARCHAR(32), name VARCHAR(1024), state VARCHAR(1024), country VARCHAR(1024), flags INT, cas BIGINT UNSIGNED, expiry INT, primary key(city_id))
属性中添加一个条目
innodb_memcache.containers
表,这样daemon_memcached
插件知道如何访问InnoDB
表格条目必须满足innodb_memcache.containers
表定义。有关每个字段的描述,请参见章节15.20.8,“InnoDB memcached插件内部简介”.描述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) | | | NULL | | +------------------------+--------------+------+-----+---------+-------+
的
innodb_memcache.containers
城市表的表项定义为:mysql> INSERT INTO innodb_memcache' containers ' (' name ',' db_schema ',' db_table ',' key_columns ',' value_columns ',' flags',' flags',' cas_column ',' expire_time_column ',' unique_idx_name_on_key ') 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
如果这些列未使用。
更新
innodb_memcache.containers
表,重新启动daemon_memcache
插件来应用更改。mysql>卸载插件mysql> INSTALL PLUGIN libmemcached soname
使用telnet,将数据插入
城市
表使用memcached集
命令。telnet localhost 11211正在尝试127.0.0.1…已连接到本地主机。转义字符是'^]'。set B 0 0 22 BANGALORE|BANGALORE|IN STORED
使用MySQL,查询
test.city
表,以验证插入的数据是否已存储。mysql> SELECT * FROM test.city+---------+-----------+-----------+---------+-------+------+--------+ | city_id名字| | | |国家国旗| cas |到期 | +---------+-----------+-----------+---------+-------+------+--------+ | 班加罗尔班加罗尔B | | | | 0 | 3 | 0 | +---------+-----------+-----------+---------+-------+------+--------+
使用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
字段(如果未使用)。使用telnet,发出一个memcached
得到
命令检索您使用MySQL插入的数据。得到H值H 0 22海得拉巴|泰伦加纳|
传统的memcached
配置选项可以在MySQL配置文件中指定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
属性的共享库InnoDB
memcached插件。默认设置为innodb_engine.so
.daemon_memcached_engine_lib_path
方法的共享库所在目录的路径InnoDB
memcached插件。默认值是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
:定义写操作的批提交大小(集
,取代
,附加
,预谋
,增加
,12月
,等等)。daemon_memcached_w_batch_size
默认设置为1,以便在停机时不会丢失未提交的数据,并且底层表上的SQL查询可以访问最新的数据。当该值大于1时,每个写操作的计数器都增加添加
,集
,增加
,12月
,删除
调用。一个flush_all
调用重置读和写计数器。
缺省情况下,不需要修改daemon_memcached_engine_lib_name
或daemon_memcached_engine_lib_path
.您可以配置这些选项,例如,如果您想使用不同的存储引擎memcached(比如新开发银行memcached引擎)。
daemon_memcached
插件配置参数可以在MySQL配置文件中指定mysqld启动字符串。它们生效时,你加载daemon_memcached
插件。
当对daemon_memcached
插件配置,重新加载插件以应用更改。为此,发出以下声明:
mysql>卸载插件mysql> INSTALL PLUGIN libmemcached soname
当插件重新启动时,配置设置、所需的表和数据将被保留。
有关启用和禁用插件的其他信息,请参见章节5.6.1,“安装和卸载插件”.