Unterstützung für MySQL-Memcached - Amazon Relational Database Service

Unterstützung für MySQL-Memcached

Amazon RDS unterstützt die Verwendung der Schnittstelle memcached für InnoDB-Tabellen, die in MySQL 5.6 eingeführt wurde. Die API memcached erlaubt Anwendungen, InnoDB-Tabellen zu verwenden, ähnlich wie es in NoSQL-Schlüsselwert-Datenspeichern möglich ist.

Die memcached-Benutzeroberfläche ist ein einfacher, schlüsselbasierter Cache. Anwendungen verwenden memcached, um im Cache Schlüsselwert-Datenpaare einzufügen, zu manipulieren oder abzurufen. Mit MySQL 5.6 wurde ein Plugin eingeführt, das einen Daemon-Service implementiert, der Daten von InnoDB-Tabellen über das memcached-Protokoll freigibt. Weitere Informationen zum MySQL-memcached-Plug-in finden Sie unter InnoDB Integration with memcached.

Unterstützung für Amazon RDS in MySQL 5.6 oder eine neuere Instance aktivieren

  1. Bestimmen der Sicherheitsgruppe, die für den kontrollierten Zugriff auf die memcached-Schnittstelle verwendet werden soll. Wenn die vom Anwendungs-Set bereits verwendete SQL-Schnittstelle dieselbe ist, die auf die memcached-Schnittstelle zugreifen wird, können Sie die bestehende VPC- oder DB-Sicherheitsgruppe verwenden, die von der SQL-Schnittstelle verwendet wird. Wenn ein anderes Anwendungs-Set auf die memcached-Schnittstelle zugreifen wird, definieren Sie eine neue VPC- oder DB-Sicherheitsgruppe. Weitere Informationen über das Verwalten von Sicherheitsgruppen finden Sie unter Zugriffskontrolle mit Sicherheitsgruppen.

  2. Erstellen einer benutzerdefinierten DB-Optionsgruppe, Auswählen von MySQL als Engine-Typ und Version 5.6 oder neuer. Weitere Informationen zum Erstellen einer Optionsgruppe finden Sie unter Erstellen einer Optionsgruppe.

  3. Fügen Sie die Option MEMCACHED zur Optionsgruppe hinzu. Angeben des Ports, den die memcached-Schnittstelle verwenden soll, und der Sicherheitsgruppe, die für die Kontrolle des Zugriffs auf die Schnittstelle verwendet werden soll. Weitere Informationen über das Hinzufügen von Optionen finden Sie unter Hinzufügen einer Option zu einer Optionsgruppe.

  4. Ändern der Optionseinstellungen, um die memcached-Parameter zu konfigurieren, falls notwendig. Weitere Informationen über das Ändern von Optionseinstellungen finden Sie unter Ändern einer Optionseinstellung.

  5. Wenden Sie die Optionsgruppe auf eine Instance an. Amazon RDS aktiviert die memcached-Unterstützung für diese Instance, wenn die Optionsgruppe angewendet wurde:

    • Sie können die memcached-Unterstützung für eine neue Instance aktivieren, indem Sie beim Starten der Instance die benutzerdefinierte Optionsgruppe angeben. Weitere Informationen über das Starten einer MySQL-Instance finden Sie unter Erstellen einer Amazon RDS-DB-Instance.

    • Sie können die memcached-Unterstützung für eine bestehende Instance aktivieren, indem Sie beim Ändern der Instance eine benutzerdefinierte Optionsgruppe angeben. Weitere Informationen über das Ändern einer DB-Instance finden Sie unter Ändern einer Amazon RDS-DB-Instance.

  6. Angeben, auf welche Spalten in Ihren MySQL-Tabellen über die memcached-Schnittstelle zugegriffen werden darf. Das Plugin memcached erstellt eine Katalog-Tabelle mit dem Namen containers in einer dedizierten Datenbank mit dem Namen innodb_memcache. Sie können eine Zeile in der containers-Tabelle einfügen, um eine InnoDB-Tabelle für den Zugriff durch memcached zu berechtigen. Sie können eine Spalte in der InnoDB-Tabelle festlegen, die verwendet werden soll, um memcached-Schlüsselwerte zu speichern, und eine oder mehrere Spalten, die dazu verwendet werden sollen, um die Datenwerte zu speichern, die mit dem Schlüssel zusammenhängen. Sie können einen Namen angeben, den eine memcached-Anwendung verwenden soll, um sich auf diese Spalten zu beziehen. Weitere Details zum Einfügen von Zeilen in der containers-Tabelle finden Sie unter InnoDB memcached Plugin Internals. Ein Beispiel für die Zuordnung einer InnoDB-Tabelle und den Zugriff über memcached finden Sie unter Schreiben von Anwendungen für das InnoDB-Memcached Plugin.

  7. Wenn sich die Anwendungen, die auf die memcached-Schnittstelle zugreifen, auf anderen Computern oder EC2-Instances befinden als die Anwendungen, die die SQL-Anwendung verwenden, fügen Sie die Verbindungsinformationen für diese Computer zur VPC oder DB-Sicherheitsgruppe hinzu, die mit der MySQL-Instance verknüpft ist. Weitere Informationen über das Verwalten von Sicherheitsgruppen finden Sie unter Zugriffskontrolle mit Sicherheitsgruppen.

Sie können die memcached-Unterstützung für eine Instance deaktivieren, indem Sie die Instance ändern und die Standard-Sicherheitsgruppe für Ihre MySQL-Version angeben. Weitere Informationen über das Ändern einer DB-Instance finden Sie unter Ändern einer Amazon RDS-DB-Instance.

Sicherheitsüberlegungen zu MySQL-Memcached

Das memcached-Protokoll unterstützt keine Benutzer-Authentifizierung. Weitere Informationen über Sicherheitsüberlegungen zu MySQL-memcached finden Sie unter memcached Deployment und Using memcached as a MySQL Caching Layer.

Sie können folgende Aktionen durchführen, um die Sicherheit der memcached-Schnittstelle zu erhöhen:

  • Geben Sie einen anderen Port als den Standard-Port 11211 an, wenn Sie die Option MEMCACHED Ihrer Sicherheitsgruppe hinzufügen.

  • Stellen Sie sicher, dass Sie die memcached-Schnittstelle mit einer VPC oder DB-Sicherheitsgruppe verknüpfen, die den Zugriff auf bekannte und vertrauenswürdige Client-Adressen oder EC2-Instances beschränkt. Weitere Informationen über das Verwalten von Sicherheitsgruppen finden Sie unter Zugriffskontrolle mit Sicherheitsgruppen.

Verbindungsinformationen zu MySQL-Memcached

Um auf eine memcached-Schnittstelle zuzugreifen, müssen in einer Anwendung der DNS-Name der Amazon RDS-Instance und die memcached-Portnummer angegeben sein. Wenn eine Instance beispielsweise den DNS-Namen my-cache-instance.cg034hpkmmjt.region.rds.amazonaws.com trägt und die Memcached-Schnittstelle den Port 11212 verwendet, würde die Verbindungsinformation in PHP wie folgt aussehen:

<?php $cache = new Memcache; $cache->connect('my-cache-instance.cg034hpkmmjt.region.rds.amazonaws.com',11212); ?>

So finden Sie den DNS-Namen und den Memcached-Port einer Amazon RDS-MySQL-Instance

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon RDS-Konsole unter https://console.aws.amazon.com/rds/.

  2. Wählen Sie in der rechten oberen Ecke der AWS Management Console die Region aus, in der sich die DB-Instance befindet.

  3. Wählen Sie im Navigationsbereich Databases (Datenbanken) aus.

  4. Wählen Sie den Namen der MySQL DB-Instance, um deren Details anzuzeigen.

  5. Beachten Sie im Bereich Verbinden den Wert im Feld Endpunkt. Der DNS-Name stimmt mit dem Endpunkt überein. Beachten Sie ebenfalls, dass der Port im Bereich Verbinden nicht für den Zugriff auf die memcached-Schnittstelle verwendet wird.

  6. Achten Sie im Bereich Details auf den aufgeführten Namen im Feld Optionsgruppe.

  7. Wählen Sie im Navigationsbereich Option groups (Optionsgruppen) aus.

  8. Wählen Sie den Namen der Optionsgruppe aus, die von der MySQL-DB-Instance verwendet wird, um die Details für die Optionsgruppe anzuzeigen. Achten Sie im Bereich Optionen auf den Wert der Einstellung Port für die Option MEMCACHED.

Optionseinstellungen in MySQL-Memcached

Amazon RDS gibt die MySQL-memcached-Parameter als Optionseinstellungen in der Amazon RDS-MEMCACHED-Option frei.

MySQL-Memcached Parameter

  • DAEMON_MEMCACHED_R_BATCH_SIZE – Eine Zahl, die angibt, wie viele memcached-Leseoperationen durchgeführt (erhalten) werden müssen, bevor ein COMMIT ausgeführt wird, um eine neue Transaktion zu starten. Der erlaubte Wertebereich liegt zwischen 1 und 4294967295; der Standardwert ist 1. Die Option wird nicht angewendet, bis die Instance neu gestartet wird.

  • DAEMON_MEMCACHED_W_BATCH_SIZE – Eine Zahl, die angibt, wie viele memcached-Schreiboperationen, wie Addition, Set oder Erhöhung, durchgeführt werden müssen, bevor ein COMMIT ausgeführt wird, um eine neue Transaktion zu starten. Der erlaubte Wertebereich liegt zwischen 1 und 4294967295; der Standardwert ist 1. Die Option wird nicht angewendet, bis die Instance neu gestartet wird.

  • INNODB_API_BK_COMMIT_INTERVAL – Eine Zahl, die angibt, wie oft für Verbindungen im Leerlauf, die die InnoDB-memcached-Schnittstelle verwenden, ein Auto-Commit durchgeführt werden muss. Der erlaubte Wertebereich liegt zwischen 1 und 1073741824; der Standardwert ist 5. Die Option wird angewendet, ohne dass ein Neustart der Instance notwendig ist.

  • INNODB_API_DISABLE_ROWLOCK – Ein boolescher Wert, der die Verwendung von Zeilensperren aktiviert (1 (wahr)) oder deaktiviert (0 (falsch)), wenn die InnoDB-memcached-Schnittstelle verwendet wird. Der Standardwert lautet 0 (falsch). Die Option wird nicht angewendet, bis die Instance neu gestartet wird.

  • INNODB_API_ENABLE_MDL – Ein boolescher Wert, der, wenn auf 0 (falsch) festgelegt, die vom InnoDB-memcached-Plug-in verwendete Tabelle sperrt, damit diese durch DDL über die SQL-Schnittstelle nicht verworfen oder geändert werden kann. Der Standardwert lautet 0 (falsch). Die Option wird nicht angewendet, bis die Instance neu gestartet wird.

  • INNODB_API_TRX_LEVEL – Eine Zahl, die das Level der Transaktionsisolation für Abfragen festlegt, die von der memcached-Schnittstelle verarbeitet werden. Zulässige Werte liegen zwischen 0 und 3. Der Standardwert ist 0. Die Option wird nicht angewendet, bis die Instance neu gestartet wird.

Amazon RDS konfiguriert diese MySQL-memcached-Parameter und sie können nicht geändert werden: DAEMON_MEMCACHED_LIB_NAME, DAEMON_MEMCACHED_LIB_PATH und INNODB_API_ENABLE_BINLOG. Die Parameter, die MySQL-Administratoren mithilfe von daemon_memcached_options festlegen, sind als einzelne MEMCACHED-Optionseinstellung in Amazon RDS verfügbar.

MySQL-daemon_memcached_options-Parameters

  • BINDING_PROTOCOL – Ein String, der das zu verwendende verbindliche Protokoll angibt. Die zulässigen Werte sind auto, ascii oder binary. Der Standardwert lautet auto. Das bedeutet, dass der Server mit dem Client das Protokoll automatisch vereinbart. Die Option wird nicht angewendet, bis die Instance neu gestartet wird.

  • BACKLOG_QUEUE_LIMIT – Eine Zahl, die festlegt, wie viele Netzwerkverbindungen in der Warteschlange stehen dürfen, um von memcached verarbeitet zu werden. Das Erhöhen dieser Beschränkung könnte Fehler reduzieren, die ein Client erhält, wenn er nicht mit der memcached-Instance verbunden ist, aber es verbessert nicht die Leistung des Servers. Der erlaubte Wertebereich liegt zwischen 1 und 2048; der Standardwert ist 1024. Die Option wird nicht angewendet, bis die Instance neu gestartet wird.

  • CAS_DISABLED – Ein boolescher Wert, der die Verwendung von compare und swap (CAS) aktiviert (1 (wahr)) oder deaktiviert (0 (falsch)), welche die Pro-Element-Größe um 8 Bytes reduzieren. Der Standardwert lautet 0 (falsch). Die Option wird nicht angewendet, bis die Instance neu gestartet wird.

  • CHUNK_SIZE – Eine Zahl, die das Minimum der Chunk-Größe festlegt, um die kleinsten Schlüssel, Werte und Kennzeichnungen für ein Element bereitzustellen. Die zulässigen Werte liegen zwischen 1 und 48. Der Standardwert lautet 48. Mit einem niedrigeren Wert können Sie die Effizienz des Arbeitsspeichers signifikant verbessern. Die Option wird nicht angewendet, bis die Instance neu gestartet wird.

  • CHUNK_SIZE_GROWTH_FACTOR – Eine Float-Zahl, die die Größe neuer Chunks steuert. Die Größe eines neuen Chunks ist die Größe des Vielfachen des vorherigen Chunks CHUNK_SIZE_GROWTH_FACTOR. Der erlaubte Wertebereich liegt zwischen 1 und 2; der Standardwert ist 1,25. Die Option wird nicht angewendet, bis die Instance neu gestartet wird.

  • ERROR_ON_MEMORY_EXHAUSTED – Ein boolescher Wert, der, wenn auf 1 (wahr) festgelegt, angibt, dass memcached eine Fehlermeldung zurückgibt, anstatt Elemente zu entfernen, wenn kein freier Arbeitsspeicher mehr für die Elemente verfügbar ist. Wenn auf 0 (falsch) festgelegt, wird memcached Elemente exmittieren, falls kein freier Arbeitsspeicher mehr verfügbar ist. Der Standardwert lautet 0 (falsch). Die Option wird nicht angewendet, bis die Instance neu gestartet wird.

  • MAX_SIMULTANEOUS_CONNECTIONS – Eine Zahl, die die maximale Anzahl an gleichzeitigen Verbindungen angibt. Wenn dieser Wert unter dem von 10 festgelegt wird, kann MySQL nicht gestartet werden. Der erlaubte Wertebereich liegt zwischen 10 und 1024; der Standardwert ist 1024. Die Option wird nicht angewendet, bis die Instance neu gestartet wird.

  • VERBOSITY – Eine Zeichenfolge, die das Informationslevel des vom memcached-Service erstellten MySQL-Fehlerprotokolls angibt. Der Standardwert ist v. Die Option wird nicht angewendet, bis die Instance neu gestartet wird. Die zulässigen Werte lauten:

    • v – Protokolliert Fehler und Warnungen während der Ausführung der Hauptereignisschleife.

    • vv – Protokolliert zusätzlich zu den von v protokollierten Informationen auch jeden Client-Befehl und die Antwort.

    • vvv – Protokolliert zusätzlich zu den von vv protokollierten Informationen auch interne Zustandsübergänge.

Amazon RDS konfiguriert diese MySQL-DAEMON_MEMCACHED_OPTIONS-Parameter und sie können nicht geändert werden: DAEMON_PROCESS, LARGE_MEMORY_PAGES, MAXIMUM_CORE_FILE_LIMIT, MAX_ITEM_SIZE, LOCK_DOWN_PAGE_MEMORY, MASK, IDFILE, REQUESTS_PER_EVENT, SOCKET und USER.