[英]How to configure memcached for mysql innodb?
目前,我們有一個運行在帶有Direct Admin的Centos 6.5網絡服務器上的網站。 APC在過去配置並且運行良好,但是一些閱讀建議也實現memcached來緩存一些靜態表(例如菜單)。
從MySQL 5.6開始,innoDB表與mysql memcache deamon兼容,所以我開始關注本指南: http : //dev.mysql.com/doc/refman/5.6/en/innodb-memcached-installing.html 。 運行配置腳本並安裝deamon。
但是Drupal memcache插件沒有看到memcache正在運行。 該模塊顯然正在檢查php memcached deamon,而我的deamon已經在mysql中運行了。
由於這兩個擴展名都稱為memcached.so
,因此我們強烈認為這是相同的事情。 實際上有兩個不同的東西,Drupal不支持InnoDB memcached deamon,我是否需要兩個(php擴展來訪問mysql擴展?),或者這應該是有效的,我們做錯了什么?
更新
狀態報告顯示“不運行”之類的內容,但我的一位同事現在已經安裝了PHP PECL擴展程序,它似乎正在運行。 但后來我仍然不明白MySQL innodb deamon插件的作用。 是不是需要它,還是它改進了數據庫訪問,甚至PHP擴展會更多?
InnoDB的Memcached接口是MySQL支持memcached協議的一個特性,但InnoDB作為后端存儲。 似乎很多人都對這意味着什么感到困惑,所以我會試着解釋一下。
真正的memcached守護進程將數據存儲在內存中,而MySQL將數據持久存儲在InnoDB表中。 PHP應用程序可以使用memcached擴展讀取和寫入數據,就像它們使用標准的memcached內存存儲一樣。 但是,它們實際上是在從InnoDB表中讀取和寫入行。
這比標准的memcached慢一些,因為它寫入磁盤的開銷大於訪問內存。 但它比使用SQL讀取和寫入這些行要快一些,因為它會省略SQL解析器和查詢優化器的復雜性。
這實際上是MySQL中的新功能:繞過SQL,並通過簡單但熟悉的界面直接訪問InnoDB存儲引擎。 他們在理論上選擇了memcached,許多開發人員都熟悉它,並且已經為它提供了工具和語言支持。
InnoDB的memcached的界面類似於所謂的早期實驗插件HandlerSocket的在2010年開發的http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-story-for.html
這是一個Percona博客,顯示了InnoDB memcached與SQL查詢的相對速度測試: http : //www.percona.com/blog/2013/03/29/mysql-5-6-innodb-memcached-plugin-as-一個緩存層/
在評論中回答你的問題:
你可能會誤解。 數據永遠不會在Memcached中。 MySQL和Memcached之間沒有自動同步。 唯一的問題是MySQL正在模仿Memcached的API和協議。 除了讓開發人員熟悉API之外,他們沒有理由這樣做。
當您使用“Memoached API for InnoDB”時,您將應用程序連接到mysqld
守護程序進程偵聽的端口。 您對此連接的請求直接在InnoDB存儲引擎中讀取和寫入行。 兩者之間沒有Memcached實例。
InnoDB Memcached插件是MySQL> = 5.6中的一個功能,它在現有的mysqld
進程中運行Memcached守護進程,支持在不同端口(默認為11211 )上偵聽Memcached API。 因為它在與InnoDB相同的進程空間中運行,所以您可以通過現有的,廣泛可用的Memcached客戶端,對InnoDB表中存儲的數據進行低延遲訪問。
這有一些有趣的用例:
案例#3特別值得注意:盡管默認情況下Memcached插件配置為直接讀取/寫入底層InnoDB表( innodb_only
緩存策略),但它可以配置為使用自己獨立的本地內存緩存,就像獨立的Memcached實例一樣或者,根本不使用InnoDB存儲( cache-only
),或者使用InnoDB作為后備存儲( caching
)。 (請注意,此時當前接受的答案不正確。)
請參閱文檔中的體系結構圖 (請注意“本地緩存(可選)”組件,該組件由cache-only
caching
或caching
緩存策略使用):
在設置/安裝方面,如果您將Memcached插件用於獨立鍵值緩存(案例#1)以外的任何其他內容,則需要創建從Memcached鍵/值到InnoDB表/列的映射。在特殊的innodb_memcache.containers
表中寫一行。 有關詳細信息,請參閱創建新表和列映射 。
這里有一點側面軌道,但現在你最好使用memcache_storage模塊。 模塊頁面有很多很好的指示,如何使用該模塊以及它與其他模塊很好地集成,以便為您的站點提供更好,更快的緩存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.