MySQL memcached 支援 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

MySQL memcached 支援

Amazon RDS 支援透過 memcached 界面,藉此使用 MySQL 5.6 所推出的 InnoDB 資料表。藉由 memcached API,應用程式即可以類似 NoSQL 索引鍵/值資料儲存的方式,使用 InnoDB 資料表。

memcached 界面是簡單的索引鍵型快取。應用程式使用 memcached 來插入、操控及擷取快取的索引鍵-值資料對。MySQL 5.6 引進一個實作協助程式服務的外掛程式,該服務透過 memcached 通訊協定公開 InnoDB 資料表中的資料。如需有關 MySQL memcached 外掛程式的詳細資訊,請參閱 InnoDB 與 Memcached 的整合

如要啟用 RDS for MySQL 資料庫執行個體的 memcached 支援
  1. 決定要用於控制 memcached 界面存取的安全群組。如果已經在使用此 SQL 界面的應用程式和將會存取 memcached 界面的應用程式是同一批,您可以使用此 SQL 界面使用的現有 VPC 安全群組。如果是不同的應用程式將存取 memcached 界面,請定義新的 VPC 或資料庫安全群組。如需管理安全群組的詳細資訊,請參閱 使用安全群組控制存取

  2. 請建立自訂資料庫選項群組,選取 MySQL 做為引擎類型和版本。如需建立選項群組的相關資訊,請參閱建立選項群組

  3. MEMCACHED 選項新增至選項群組。指定 memcached 界面將使用的連接埠,以及指定安全群組來控制對界面的存取。如需新增選項的詳細資訊,請參閱將選項新增至選項群組

  4. 如有需要,修改選項設定以便設定 memcached 參數。如需如何修改選項設定的詳細資訊,請參閱修改選項設定

  5. 將選項群組套用至執行個體。一旦套用選項群組,Amazon RDS 即會啟用該執行個體的 memcached 支援。

    • 當您在啟動新執行個體時指定自訂選項群組,即啟用了新執行個體的 memcached 支援。如需有關啟動 MySQL 執行個體的詳細資訊,請參閱建立 Amazon RDS 資料庫執行個體

    • 當您在修改現有執行個體時指定自訂選項群組,即啟用了現有執行個體的 memcached 支援。如需修改 資料庫執行個體的詳細資訊,請參閱修改 Amazon RDS 資料庫執行個體

  6. 指定可以透過 memcached 界面存取 MySQL 資料表中的哪幾欄。memcached 外掛程式會在名為 containers 的專用資料庫中建立名為 innodb_memcache 的目錄資料表。您在 containers 資料表中插入一個資料列,以映射透過 memcached 存取的 InnoDB 資料表。指定 InnoDB 資料表中的一欄用於存放 memcached 索引鍵值,並指定一或多欄用於存放與此索引鍵相關聯的資料值。也要指定名稱,讓 memcached 應用程式可用來指向這幾欄。如需在 containers 資料表中插入資料列的詳細資訊,請參閱 InnoDB Memcached 外掛程式內部。如需映射 InnoDB 資料表以及透過 memcached 存取它的範例,請參閱撰寫 InnoDB Memcached 外掛程式的應用程式

  7. 如果存取 memcached 界面的應用程式所在的電腦或 EC2 執行個體,和使用 SQL 界面的應用程式所在的不同,請為這些電腦新增連線資訊,以連線至與 MySQL 執行個體關聯的 VPC 安全群組。如需管理安全群組的詳細資訊,請參閱 使用安全群組控制存取

修改執行個體並指定您的 MySQL 版本的預設選項群組,即可關閉執行個體的 memcached 支援。如需修改 資料庫執行個體的詳細資訊,請參閱修改 Amazon RDS 資料庫執行個體

MySQL memcached 安全考量

memcached 通訊協定不支援使用者驗證。如需 MySQL memcached 安全性考量的詳細資訊,請參閱 MySQL 文件中的 InnoDB Memcached 外掛程式的安全性考量

您可採取以下動作幫助增加 memcached 界面的安全:

  • 在將 MEMCACHED 選項新增至選項群組時,指定非預設 (11211) 的連接埠。

  • 確保您將 memcached 界面與 VPC 安全群組 (會限制對已知信任用戶端地址或 EC2 執行個體的存取) 相關聯。如需管理安全群組的詳細資訊,請參閱 使用安全群組控制存取

MySQL memcached 連線資訊

應用程式必須同時指定 Amazon RDS 執行個體的 DNS 名稱與 memcached 連接埠號碼,才能存取 memcached 界面。例如,如果執行個體的 DNS 名稱是 my-cache-instance.cg034hpkmmjt.region.rds.amazonaws.com,且 memcached 界面使用 11212 連接埠,則在 PHP 中指定的連線資訊就是:

<?php $cache = new Memcache; $cache->connect('my-cache-instance.cg034hpkmmjt.region.rds.amazonaws.com',11212); ?>
尋找 MySQL 資料庫執行個體的 DNS 名稱及 Memcached 連接埠
  1. 登入 AWS Management Console 並開啟 Amazon RDS 主控台,網址為 https://console.aws.amazon.com/rds/

  2. 在的右上角 AWS Management Console,選取包含資料庫執行個體的區域。

  3. 在導覽窗格中,選擇 Databases (資料庫)。

  4. 選擇 MySQL 資料庫執行個體名稱以顯示其詳細資訊。

  5. 請注意 Connect (連線) 區段中 Endpoint (端點) 欄位的值。DNS 名稱與端點名稱相同。此外,請注意 Connect (連線) 區段中的連接埠不是用於存取 memcached 界面。

  6. Details (詳細資訊) 區段中,注意 Option Group (選項群組) 欄位中列出的名稱。

  7. 在導覽窗格中,選擇 Option groups (選項群組)。

  8. 選擇 MySQL 資料庫執行個體使用的選項群組名稱,以顯示選項群組的詳細資訊。在 Options (選項) 區段中,請注意 MEMCACHED 選項的 Port (連接埠) 設定值。

MySQL memcached 選項設定

Amazon RDS 會公開 MySQL memcached 參數,並將其做為 Amazon RDS MEMCACHED 選項中的選項設定。

MySQL memcached 參數

  • DAEMON_MEMCACHED_R_BATCH_SIZE – 整數,指定要執行多少個 memcached 讀取操作 (get) 之後才 COMMIT (遞交) 開始新交易。允許的值為 1 到 4294967295;預設值是 1。此選項要在執行個體重新啟動後才會生效。

  • DAEMON_MEMCACHED_W_BATCH_SIZE – 整數,指定要執行多少個 memcached 寫入操作 (例如 add、set 或 incr) 之後才 COMMIT (遞交) 開始新交易。允許的值為 1 到 4294967295;預設值是 1。此選項要在執行個體重新啟動後才會生效。

  • INNODB_API_BK_COMMIT_INTERVAL – 整數,指定自動遞交使用 InnoDB memcached 界面的閒置連線的遞交頻率。允許的值為 1 到 1073741824;預設值是 5。此選項會立即生效,不需要重新啟動執行個體。

  • INNODB_API_DISABLE_ROWLOCK – 布林值,用於停用 (1 (true)) 或啟用 (0 (false)) 使用 InnoDB memcached 界面時的資料列鎖定。預設值為 0 (false)。此選項要在執行個體重新啟動後才會生效。

  • INNODB_API_ENABLE_MDL – 布林值,設為 0 (false) 可鎖定 InnoDB memcached 外掛程式所使用的資料表,使您無法透過 SQL 界面刪除資料表或以 DDL 更改資料表。預設值為 0 (false)。此選項要在執行個體重新啟動後才會生效。

  • INNODB_API_TRX_LEVEL – 整數,指定 memcached 界面處理的查詢的交易隔離層級。允許的值為 0 到 3。預設為 0。此選項要在執行個體重新啟動後才會生效。

Amazon RDS 會設定這些 MySQL memcached 參數,並且無法修改以下項目:DAEMON_MEMCACHED_LIB_NAMEDAEMON_MEMCACHED_LIB_PATHINNODB_API_ENABLE_BINLOG。MySQL 管理員使用 daemon_memcached_options 所設定的參數,在 Amazon RDS 中皆為個別的 MEMCACHED 選項設定。

MySQL daemon_memcached_options 參數

  • BINDING_PROTOCOL – 字串,指定要使用的繫結通訊協定。允許的值為 autoasciibinary。預設值是 auto,表示伺服器會自動與用戶端交涉通訊協定。此選項要在執行個體重新啟動後才會生效。

  • BACKLOG_QUEUE_LIMIT – 整數,指定可以有幾個等待 處理的網路連線。memcached增加此限制可能會減少無法連線到 memcached 執行個體的用戶端收到的錯誤,但不會提高伺服器的效能。允許的值為 1 到 2048;預設值是 1024。此選項要在執行個體重新啟動後才會生效。

  • CAS_DISABLED – 布林值,可啟用 (1 (true)) 或停用 (0 (false)) 比較與交換 (CAS),CAS 可將每個項目的大小減少 8 個位元組。預設值為 0 (false)。此選項要在執行個體重新啟動後才會生效。

  • CHUNK_SIZE – 整數,指定可為最小項目的金鑰、值、標記配置的區塊大小下限 (位元組)。允許的值為 1 到 48。預設值為 48,使用較小的值可大幅增進記憶體效能。此選項要在執行個體重新啟動後才會生效。

  • CHUNK_SIZE_GROWTH_FACTOR – 浮動數值,控制新區塊的大小。新區塊的大小是先前區塊大小乘以 CHUNK_SIZE_GROWTH_FACTOR。允許的值為 1 到 2;預設值是 1.25。此選項要在執行個體重新啟動後才會生效。

  • ERROR_ON_MEMORY_EXHAUSTED – 布林值,設為 1 (true) 即指定在已經沒有記憶體可儲存項目時,memcached 要傳回錯誤而不是移出項目。如果設為 0 (false),memcached 會在沒有記憶體時移出項目。預設值為 0 (false)。此選項要在執行個體重新啟動後才會生效。

  • MAX_SIMULTANEOUS_CONNECTIONS – 整數,指定並行連線的數量上限。設為小於 10 的值可阻止 MySQL 啟動。允許的值為 10 到 1024;預設值是 1024。此選項要在執行個體重新啟動後才會生效。

  • VERBOSITY – 字串,指定 memcached 服務在 MySQL 錯誤日誌中記錄的資訊層級。預設值為 v。此選項要在執行個體重新啟動後才會生效。允許的值為:

    • v – 在執行主要事件迴圈時,記錄錯誤並發出警告。

    • vv – 除了 v 記錄的資訊之外,也記錄每個用戶端命令和回應。

    • vvv – 除了 w 記錄的資訊之外,也記錄內部狀態轉換。

Amazon RDS 會自行設定以下不可修改的 MySQL DAEMON_MEMCACHED_OPTIONS 參數:DAEMON_PROCESSLARGE_MEMORY_PAGESMAXIMUM_CORE_FILE_LIMITMAX_ITEM_SIZELOCK_DOWN_PAGE_MEMORYMASKIDFILEREQUESTS_PER_EVENTSOCKETUSER