本节描述如何设置daemon_memcached
在MySQL服务器插件。因为memcached与MySQL服务器守护进程紧密集成,以避免网络流量和减少延迟,你每个MySQL实例上执行这个过程,使用这个特性。
之前的设置daemon_memcached
插件,请咨询部分14.21.4,InnoDB memcached插件“安全注意事项”理解所需的安全程序,以防止未经授权的访问。
的
daemon_memcached
插件仅支持在Linux、Solaris和macOS平台。不支持其他操作系统。当从源代码构建MySQL,您必须建立
-DWITH_INNODB_MEMCACHED =对
。这个构建选项生成两个MySQL插件目录中的共享库(plugin_dir
),需要运行daemon_memcached
插件:libmemcached.so
:memcached守护进程MySQL插件。innodb_engine.so
:一个InnoDB
API的插件memcached。
libevent
必须安装。如果你没有从源代码构建MySQL,
libevent
图书馆是不包括在您的安装。使用您的操作系统的安装方法安装libevent
1.4.12或更高版本。例如,根据不同的操作系统,你可以使用apt-get
,百胜
,或端口安装
。例如,在Ubuntu Linux,使用:sudo apt-get安装libevent-dev
如果你从源代码安装MySQL版本,
libevent
1.4.12捆绑包和位于顶层的MySQL源代码目录。如果你使用捆绑的版本libevent
,没有行动是必需的。如果你想使用一个本地系统的版本libevent
,你必须建立MySQL-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
插件。mysql >使用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
表。这些数据可以立即验证安装后设置完成。从innodb_memcache mysql > SELECT *。容器\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
样表,请参阅部分14.21.7”,InnoDB memcached插件内部“。激活
daemon_memcached
插件通过运行安装插件
声明:mysql >安装插件daemon_memcached soname“libmemcached.so”;
一旦安装了插件,它会自动激活每次重新启动MySQL服务器。
来验证daemon_memcached
插件安装,使用远程登录会议问题memcached命令。默认情况下,memcached守护进程监听端口11211。
检索的数据
test.demo_test
表。数据的行demo_test
表的键值AA
。telnet localhost 11211尝试127.0.0.1…连接到localhost。转义字符“^]”。得到AA AA价值8 12你好,你好
插入数据使用
集
命令。存储组BB 10 0 16再见,再见
地点:
集
命令来存储一个值吗BB
是关键10
操作是一个国旗;忽视了memcached但可能使用的客户端显示任何类型的信息;指定0
如果未使用0
过期时间(TTL);指定0
如果未使用16
提供的值的长度是在字节块吗再见,再见
存储的值吗
验证数据插入存储在由连接到MySQL服务器和MySQL查询
test.demo_test
表。从test.demo_test mysql > SELECT *;+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - c1 + | | c2 | c3 | c4 | c5 | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - AA + | |你好,你好| 8 | 0 | 0 | | BB |再见,再见| 10 | 1 | 0 | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - +
回到telnet会话之前插入和检索的数据使用的关键
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_id VARCHAR(32),名字VARCHAR(1024),国家VARCHAR(1024),国家VARCHAR(1024),旗帜INT,中科院的BIGINT无符号,INT到期,主键(city_id))引擎= InnoDB;
添加一个条目
innodb_memcache.containers
表,这样daemon_memcached
知道如何访问插件InnoDB
表。条目必须满足innodb_memcache.containers
表定义。每个字段的描述,请参阅部分14.21.7”,InnoDB memcached插件内部“。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.containers
表条目的城市表的定义是:mysql >插入“innodb_memcache”。“容器”(‘名’,‘db_schema’,‘db_table’,‘key_columns’,‘value_columns’,“旗帜”,‘cas_column’,‘expire_time_column’,‘unique_idx_name_on_key’)值(“违约”、“测试”,“城市”,“city_id”,“名字| |国家状态”,“旗帜”,“中科院”,“到期”,“主要”);
默认的
被指定为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 >卸载插件daemon_memcached;mysql >安装插件daemon_memcached soname“libmemcached.so”;
使用telnet,将数据插入
城市
表的使用memcached集
命令。telnet localhost 11211尝试127.0.0.1…连接到localhost。转义字符“^]”。设置B 0 0 22班加罗尔班加罗尔| |存储
使用MySQL,查询
test.city
表来验证您插入的数据存储。从test.city mysql > SELECT *;+ - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - + + | city_id | |名称状态| |国家国旗| cas | |到期+ - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - -班加罗尔班加罗尔B + | | | | | 0 | 3 | 0 | + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - + +
使用MySQL,插入额外的数据
test.city
表。mysql >插入城市值(“C”、“奈”、“泰米尔纳德邦”,“在”,0,0,0);mysql >插入城市值(“D”,“新德里”,“新德里”,“在”,0,0,0);mysql >插入城市值(“H”,海德拉巴,建邦者“纳”,“在”,0,0,0);mysql >插入城市值(“米”、“孟买”,“马哈拉施特拉邦”,“在”,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插件。默认为空,表示插件的目录。daemon_memcached_r_batch_size
读操作:定义批量提交大小(得到
)。它指定的数量memcached一个后读操作提交发生。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(如NDBmemcached引擎)。
daemon_memcached
插件配置参数可能或MySQL中指定的配置文件mysqld启动字符串。他们加载时生效daemon_memcached
插件。
当更改daemon_memcached
插件配置,重新加载插件应用更改。为此,发出以下语句:
mysql >卸载插件daemon_memcached;mysql >安装插件daemon_memcached soname“libmemcached.so”;
配置设置,要求表和数据保存插件时重新启动。
关于启用和禁用插件的更多信息,请参阅5.5.1部分,“安装和卸载插件”。