2011-10-06 21 views
9

Actualmente estamos almacenando nuestras sesiones de usuario en memcached, nuestras aplicaciones web se ejecutan con PHP 5.3.6 y Apache 2.2.3.Transferir datos de un servidor memcached a otro

Vamos a reemplazar nuestro servidor de memcached, me pregunto si hay una manera en que podamos transferir los datos de un servidor de memcached a otro para que las sesiones de usuario todavía estén allí. (Para minimizar el tiempo de inactividad)

Aunque he leído de las preguntas frecuentes http://code.google.com/p/memcached/wiki/FAQ#How_can_you_dump_data_from_or_load_data_into_memcached? que probablemente no sea posible hacerlo ... pero espero que alguien tenga algunas herramientas o soluciones para lograrlo.

Gracias!

Saludos

+0

¿por qué tantos downvotes? –

+0

:(no estoy seguro de si he publicado esto en la sección equivocada? – forestclown

+2

+1 para la buena pregunta – servermanfail

Respuesta

3

Su mejor opción es añadir probablemente algún código en su sistema que, cuando un usuario visita, escribe la sesión tanto en el servidor nuevo y el antiguo, y luego dejarlos correr en paralelo para un tiempo, luego apague el servidor anterior. De esta forma puede "calentar" el nuevo servidor sin realmente depender de él, y luego cambiarlo una vez que la mayoría de las sesiones se hayan cambiado.

Todavía perderá algunas sesiones, pero los visitantes más frecuentes no notarán nada porque sus sesiones se habrán movido.

+0

Gracias Amber, es una gran sugerencia. Pero dudo que podamos sintonizar nuestros códigos en este punto para lograrlo. – forestclown

+1

Entonces ' Probablemente tenga que cambiarlo. Memcache no está diseñado para ser una tienda persistente: lo mejor es diseñar su sitio web para que pueda manejar la pérdida de los contenidos de Memcache (o si no, ejecutar un clúster de Memcache de varias máquinas) para que pueda rotar los servidores individuales de entrada y salida sin perder todo el clúster). – Amber

+1

Es posible que desee consultar tcpcopy (http://code.google.com/p/tcpcopy/) que le permitirá dividir una secuencia de tcp a ambos servidores memcached, nuevos y antiguos. – mikewied

12

Es posible con memcached-tool.

memcached-tool 10.1.2.30:11211 dump | nc 127.0.0.1 11211 
+1

en caso de que necesite encontrarlo, memcached-tool se encuentra en '/ usr/share/memcached/scripts' en debian. – phirschybar

+0

Escribí algunos sc ripts para automatizar este proceso al inicio usando systemd. https://github.com/ticpu/tools/tree/master/memcached-replicate – TiCPU

+0

Esto funcionó, moví con éxito mis datos de Memcache a un nuevo servidor sin ningún problema. – rayhan

Cuestiones relacionadas