sql >> Base de Datos >  >> RDS >> PostgreSQL

Configuración y uso de pgmemcache

La carga previa o el almacenamiento en caché de la tabla en PostgreSQL es una tarea difícil, porque PostgreSQL no ofrece una sola administración de memoria de gran nivel de sincronización. Todas las memorias son independientes. El almacenamiento en caché es posible con herramientas de terceros como memcached.

pgmemcache es un conjunto de funciones definidas por el usuario (API) de PostgreSQL que proporcionan una interfaz para Memcached. pgmemcache, los requisitos previos recomiendan tener libmemcached, sin embargo, también se recomienda instalar memcached junto con él. Mi presentación consiste en la instalación/almacenamiento en caché/supervisión mediante las API de pgmemcache. Como no soy el desarrollador o el pirata informático :), mi forma de implementación es un método muy simple.

Puntos:

  • Almacena el valor en la memoria caché sobre la base de los medios clave/valor, se recomienda mantener la tabla con clave principal/clave única.
  • Sin redundancia de datos:si Memcached se cae o se queda sin espacio, se perderán los registros nuevos y las actualizaciones.
  • Admite todos los comandos de Memcached (set/get(simple/multi)/delete/replace/incr/stats)
  • Después de mantener los datos en Memcached y si quitas la tabla del backend, Memcached no arrojará ningún error. Es toda su administración cómo la mantiene.
  • No hay capacidad para iterar sobre los datos o determinar qué claves se han almacenado.
  • Nunca puede desactivar un servidor Memcached ni agregar uno nuevo al grupo mientras las personas están jugando o conectadas.
  • Si el proceso de actualización en segundo plano se detiene por algún motivo, no se realizarán actualizaciones y existe la posibilidad de que el servidor Memcached se llene.
  • Cada backend de PostgreSQL tiene que vincularse al puerto Memcached antes de acceder a los datos.
  • Memcached se ejecuta en el puerto predeterminado 11211

Requisitos previos:

  1. PostgreSQL 8.4. o superior
  2. libevent
  3. Memcached
  4. libmemcached
  5. pgmemcache
  6. Herramientas de monitorización (herramientas de monitorización, damemtop, etc.)

Instalación:
Paso 1. (liberación)

La API de Libevent es importante al configurar pgmemcache, prefiero tener bibliotecas como primer paso de la instalación. Entonces, comencemos con la configuración de la biblioteca libevent en la ubicación predeterminada.

Download link for libevent:
http://www.monkey.org/~provos/libevent-2.0.12-stable.tar.gz
tar -xvf libevent-2.0.12-stable.tar.gz
cd libevent-2.0.12-stable
./configure
make
make install

Paso 2 (Memcached)

Instale Memcached habilitando el evento libevent.

Download link for memcached:
http://memcached.googlecode.com/files/memcached-1.4.6.tar.gz
cd /usr/local/src/memcached-1.4.6
------on 32-bit
export LD_LIBRARY_PATH=/usr/lib:/opt/PostgreSQL/9.0/lib:$LD_LIBRARY_PATH
./configure --prefix=/opt/PostgreSQL/9.0/bin/ --with-libevent=/usr/lib
------on 64-bit
export LD_LIBRARY_PATH=/usr/lib64:/opt/PostgreSQL/9.0/lib:$LD_LIBRARY_PATH
./configure --prefix=/opt/PostgreSQL/9.0/bin/ --with-libevent=/usr/lib64
make
make install

Paso 3. (libmemcached)

pgmemcache está construido sobre libmemcached. Libmemcached busca la ubicación binaria de Memcache, así que establezca la ruta a los binarios de Memcached antes de continuar.

export PATH=/opt/PostgreSQL/9.0/bin/bin:$PATH
export LD_LIBRARY_PATH=/usr/lib:/opt/PostgreSQL/9.0/lib:$LD_LIBRARY_PATH
Download link:
http://launchpad.net/libmemcached/1.0/0.50/+download/libmemcached-0.50.tar.gz
cd libmemcached-0.50
./configure
make
make install

Paso 4 (pgmemcache)

La API pgmemcache ayudará, interactuando con memcached como almacenamiento en caché/recuperación de datos.

Download link:
http://pgfoundry.org/frs/download.php/3018/pgmemcache_2.0.6.tar.bz2
cd pgmemcache
PATH=/opt/PostgreSQL/9.0/bin:$PATH make USE_PGXS=1 install
or
make
make install

La instalación creará un archivo pgmemcache.sql con todas las API para interactuar con Memcache en la ubicación de contribución de PG. Para crear las API de pgmemcache, simplemente ejecute el archivo pgmemcache.sql en toda la base de datos.

psql -p PGPORT -d PGDATABASE -f /opt/PostgreSQL/9.0/share/postgresql/contrib/pgmemcache.sql

Lista de API de pgmemcache:

Nota: Al ejecutar el archivo .sql, puede encontrar un error como "ISTFATAL:no se pudo cargar la biblioteca"/opt/PostgreSQL/9.0/lib/postgresql/pgmemcache.so":libmemcached.so.8:no se puede abrir el archivo de objeto compartido:No existe tal archivo o directorio". Significa que la instancia de PG no se cargó con la biblioteca recién creada. Resolución, configure PATH y LD_LIBRARY_PATH y reinicie la instancia para reconocer las bibliotecas.

Eg:-
export PATH=/opt/PostgreSQL/9.0/bin/bin:$PATH
export LD_LIBRARY_PATH=/usr/lib:/opt/PostgreSQL/9.0/lib:$LD_LIBRARY_PATH
$pg_ctl -D $PGDATA restart

Si desea cargar pgmemcache de forma predeterminada en su instancia de PG, edite el archivo postgresql.conf, cambie los siguientes parámetros y reinicie el clúster.

shared_preload_libraries='pgmemcache'
custom_variable_classes='pgmemcache'

Configuración:
Paso 1.

Para almacenar datos en caché, primero debe inicializar la memoria, una vez que se asigna la memoria, luego PG respalda la responsabilidad de vincular e insertar los datos en el caché. Aquí, comencé mi Memcache en localhost con 512 MB en el puerto predeterminado 11211. -d significa iniciar el demonio. Todo mi ejercicio está en localhost.

$./memcached -d -m 512 -u postgres -l localhost -p 11211

Nota:para recuperar datos de la memoria caché, cada servidor de PostgreSQL primero debe enlazar y recuperar los datos.

Paso 2.

Vincula la instancia al puerto de Memcache en ejecución. Después de vincular, verifique las estadísticas de Memcached.

Paso 3.

Ahora, es hora de almacenar datos en caché en Memcached, Memcached usa claves/valores para residir datos en su memoria, así que asegúrese de que su tabla tenga una clave principal/única para que la recuperación sea fácil. Como se mencionó, hay API muy buenas para jugar manteniendo el valor y accediendo a ellos, en mi ejemplo, uso memcache_set() para mantener el valor y memcache_get() para recuperar datos.

Una vez que el valor se establece en Memcached, ahora es su responsabilidad vincular su backend a Memcached y, con la ayuda de las API de pgmemcache, puede acceder a los datos. Cada backend de Postgres debe vincularse antes de acceder. Encuentre el ejemplo a continuación.

Obtener datos del caché

Supervisión

Si es muy bueno en Linux, puede obtener la máxima información sobre la memoria memcached, sin embargo, hay pocas herramientas que vienen junto con el paquete fuente de memcached, como herramientas de monitoreo, damemtop, etc. Estoy usando la utilidad de herramientas de monitoreo para monitorear Memcache.

usage:-
memcached-tool localhost display
memcached-tool localhost dump
memcached-tool localhost stats | grep bytes

Ejemplo:

Un pequeño esfuerzo de mi parte para configurar pgmemcache y comprender los conceptos básicos. Espero que haya sido útil. Siga publicando sus comentarios o sugerencias, que son muy apreciados.