El backup es una copia de la informacion sensible de un sistema informatico disponible en otro medio para proteccion de la misma.
En un servidor en produccion normalmente es parte de la planificacion inicial del mismo, por lo que a la hora de tener datos generados los mismos ya estan protegidos. Esta planificacion tiene varios aspectos a considerar siendo algunos de ellos:
1- Programa o aplicacion con que se lleva adelante la tarea
2- Tratamiento que se le efectual a las copias
3- medios en los que se almacenan las copias
4- metodos de recuperacion de los datos
5- documentacion que explique el proceso
En un servidor GNU/Linux se encuentran disponibles varias herramientas para generar copias de seguridad, cada una con mayor o menor complejidad en su funcionamiento.
-Tar, empaqueta directorios y archivos
-rsync, sistema de copia y sincronizacion de samba team
-rdiff-backup, para backups diferenciales e incrementales
-otras soluciones completas como Amanda o Bacula
Debe considerarse si los datos se van a comprimir, encriptar, dividir en tamaño de acuerdo al soporte donde se almacenaran, comprobacion de integridad de datos, etc.
Las copias pueden ser guardadas en Cds, DVDs, en discos remotos, etc. Datos replicados sin compresion ni empaquetado en discos locales para su pronta restauracion.
De acuerdo al volumen del backup en ocaciones puede resultar engorroso encontrar el archivo/s a restaurar, a la vez que en una situacion de daño total en el servidor es muy importante tener en cuenta el metodo de restauracion que posee nuestro sistema de backup
finalmente cuanto mejor documentado este nuestro sistema de backup, menos problematico terminara siendo su administracion
En mi caso particular tengo un servidor de bases de datos y otro de archivos. Para hacer la copia de seguridad me arme un simple script que vuelca las bases de datos a un temporal y lo comprime.
Se rota durante siete dias y empieza a eliminar el mas antiguo
Este backup se copia a una unidad nfs remota, se divide en partes para guardarlo en DVDs regrabables y al a vez tambien queda guardado en otra unidad de disco rigido en el mismo servidor.
Como el dump de la base se realiza todos los dias, un backup incremental no estaria funcionando dado el cambio de fecha y tamaño (o no) de los archivos. Entonces estoy probando si la opcion de backup diferencial funciona bien y solo detecta los agregado de las bases y actualiza esos archivos.
Esto lo realizo con DAR con el que tambien genero controles de integridad de archivos y es posible que mas adelante implemente la encriptacion de las copias.
Para el caso del servidor de archivos, tengo una unidad de disco en el servidor que solo se monta al efecto de sincronizar los datos con rsync y en caso de caidas, solo tengo que montar esa unidad en lugar de la que esta en produccion. Si el daño es total se recupera de la unidad remota por nfs o se recurre a las copias en DVD. Lo demas funciona como el anterior, con el DAR hago copias diarias con eliminacion de las antiguas en un periodo de 7 dias. Para mas adelante voy a implementar copias completas cada 30 dias pero por el momento solo tengo una copia completa inicial.
Las copias estan automatizadas con el Cron y periodicamente hago chequeos manuales de integridad de datos. Esto podria hacerlo en forma automatica tambien, pero he preferido dedicarle un tiempo en persona ya que al mismo tiempo que monto la unidad de disco local para backup para copiarlo a DVD le paso el chequeo CRC.
Scrip de backup de bases:
#!/bin/bash
# Realiza el respaldo de la base de datos en localhost
FECHA=`date -I -d today`
USER="-u user"
CLAVE="-pclave"
MYSQL_DATABASES="OpenBiblio biblioteca geeklog libros webbiblio2 webbiblio3"
# Comprueba que existe el temporal
! test -d /tmp/bases && mkdir --parent /tmp/bases
# dump de bases al temporal
for base in $MYSQL_DATABASES
{
mysqldump --opt $USER $CLAVE $base > /tmp/bases/$base.sql
}
# genera el tarball en la unidad remota nfs
cd /tmp/bases
/bin/tar -zcvf /backup/databases.$FECHA.tgz *
# borra el temporal
rm -f /tmp/bases/*
# borra el backup 7 dias mas viejo
rm -f /backup/databases.`date -d "$FECHA 7 day ago" +%Y-%m-%d`.tgz
# monta la unidad de backup local
mount /dev/sda4 /mnt/backup
dar -c /mnt/backup/databases -R /backup -A /mnt/backup/databases1/completo.dar
umount /mnt/backup
Este script este editado a partir de otros varios que he visto dando vueltas en internet y he tomado lo que necesitaba para cumplir con mis necesidades. He colocado solo algunas variables y no le incorpore avisos, ni exit codes ni logs, etc. que son los adicionales que finalmente me hicieron decidir por armar algo que haga solamente lo que necesito.
Hay conceptos que corregir lo que ire descubriendo con el uso, como por ejemplo de que manera se maneja los diferenciales, no comprimir el tarbal sino enviar los archivos planos al DAR, etc.
En una segunda oportunidad les traere la guia de como restaurar archivos, directorios, restaurar parcial o totalmente.
Sysadmin
Colegio San Esteban
Bariloche
Felicitaciones Jorge!!! Un post excelene, la verdad que no encontre mucha documentacion de AWS en español y sintetizado, me viene barbaro, vamos a empezar a probar. Un abrazo.
Que maravilla! Yo estoy usando Amazon para hospedar videos, y es excelente alternativa al server en el Datacenter!
Yo estoy usando S3 para servir los videos, cual es la diferencia entre usar eso o el CDN?
Saludos
Si pero el soporte ? por lo que veo te cobran y lindo si queres un soporte rapido ante eventuales emergencias. O no Jorge ?
Hola Dan, el CDN, que en Amazon se llama CloudFront, pone los contenidos que tenes en S3, más cerca de los usuarios, en cachés ubicados en los ISP de los usuarios. Un CDN muy conocido es Akamai. El setup de CloudFront en Amazon es muy sencillo:
1. Adherir al servicio
2. Especificar el bucket S3 de donde se van a servir archivos
3. Listo, si queres, por medio de un registro CNAME del archivo de zona de tu dominio, podes usar el CDN bajo tu propio dominio.
El costo es casi identico a usar solamente S3.
Hola Sebastián. muy buena pregunta. El soporte es de dos tipos: autoservicio, en cuyo caso vos sos tu propio soporte, o premium, cuyo costo está entre 100 y 400 dólares mensuales.
http://aws.amazon.com/premiumsupport/
Luego hay un nuevo tipo de proveedores de hosting, que te dan un servicio por sobre AWS, es decir subcontratando AWS y manejandolos ellos, unificando recursos, optimizando el soporte, donde hay cuentas desde USD 25 mensuales, con soporte incluido.
http://www.engineyard.com
La idea detras de empresas como esta es : "ocupate solo de tu negocio, nosotros nos ocupamos de lo que necesites de hosting, con soporte incluido"
Que tema este del Cloud Computing. Me sería mucho mas claro si tarifaran el bandwidth en mbps. Tengo unos proyectos personales que mueven mucho trafico (500.000 únicas diarias) y mi proveedor, que no es de Argentina, me factura con el método 95th percentile. (http://en.wikipedia.org/wiki/Burstable_billing). Estoy usando en los servidores de imágenes que son el 90% del consumo unos 70mbps. Me pregunto cuanto costará esto en números de AWS...
je, voy a tener que analizarlo para mis proyectos nuevos, hasta 5k visitas y 90Gb de trasnfer me bancan, ahora si llego a duplicar eso ya pinta para este tipo de servicios?
Hola Fabio. Con esta calculadora podés prever exactamente cuanto va a ser el costo de cualquier proyecto.
http://calculator.s3.amazonaws.com/calc5.html
Sin embargo, el costo no es la única variable.
Cristian, modestamente te digo, estas equivocado, la forma de facturarte de AWS es mejor. Con el "95th percentile billing method there is potential for paying for bandwidth that is not used". Con AWS, el modo de facturar es mucho más claro: pagas por lo que usás, no pagas por lo que no usás.
Deberías usar esta calculadora:
http://calculator.s3.amazonaws.com/calc5.html
Ingresar los datos que te pide: storage, data transfer in/out, y cantidad de requests, para saber con certeza cuanto deberías haber pagado en meses anteriores. Asi te das una idea de cuánto demás estás pagando ahora. Por favor, avisame como te fue en la comparación.
Qué opinión te merece el hosteo de los MySQL versus el uso de SimpleDB?
Qué tanto te complica el mantenimiento de estos máquinas para la BD, y qué tanto cuesta pasar todo a SimpleDB?
Hola Sebastián, no he tenido tiempo todavía de usar SimpleDB, nisiquiera de leer la documentación. Trabajé con BigTable en Google Application Server, y creo entender que esto es parecido. Es muy cómodo trabajar con SimpleDB porque no es SQL. No hay schemas que definir por anticipado. Cuando necesitas un tuple o columna nueva, la usas y alli estará. Todas las columnas se indexan, asique realizar queries contra SimpleDB siempre es eficiente. Por otra parte no hay problemas de escalabilidad, porque no hay límite practicamente en la cantidad de data que pueden almacenar. Pero como te dije no tengo experiencia directa con SimpleDB. El mantenimiento de la BD en Amazon se hace más flexible, en mi opinión. El hecho de poder montar un volumen externo, sobre el cual hacer snapshots (backup), mientras el volumen está montado y el SQL server está en servicio, es algo que en sí mismo es de un valor increíble. Decime si no es siempre complicado hacer backups de las tablas. Bueno en AWS es tan fácil como apretar un botón en el dashboard de EC2 o programar un cron job para que lo haga periódicamente utilizando el API. Todos los esquemas de redundancia documentados en MySQL, incluyendo por supuesto replicación en todas sus variantes, es muy sencillo, económicamente viable y tremendamente potente en AWS. La performance es algo que voy a experimentar en lo que queda de agosto, ya que como expliqué tengo sitios pequeños por el momento, y estoy por mover uno grande en estos días. Pero gente mucho más experimentada que yo lo viene usando desde hace años. Te recomiendo el blog de alestic.com para interiorizarte a fondo de MySQL sobre AWS. Son genios.
Muy buena la calculadora, la estuve utilizando y a simple vista no creo que sea conveniente para lo que hago. No dudo de los beneficios de la infraestructura pero económicamente no me es viable. Tomando como ejemplo 50mbps (siento el promedio 70 mas o menos) hice unos calculos y mi consumo mensual en el sistema de Amazon son 16200GB al mes. Usando la calculadora del link, solo de transferencia sin poner espacio en disco ni requests ya me da un total de $2500 dolares mensuales. Actualmente por un dual xeon con discos SAS estoy pagando u$s10 aprox cada 1mbps.
Cristian, el data transfer no es el resultado de explotar la tasa de tranferencia en el tiempo como vos lo calculaste. Es algo asi como la suma de los tamaños de todos los archivos transferidos en la línea. Pensalo asi, en tu casa está el agua corriente, las cañerías y la canilla. Contar con un caudal de agua X no hace que el consumo sea igual a mantener la canilla abierta todo el tiempo, no?
Te animaría a intentar nuevamente con la calculadora, con los datos correctos.
¿Podes decirnos cual es el costo mensual en dólares de tu server, sumando todos los conceptos?
Jorge, el calculo lo baje de 70mbps para hacerlo mas aproximado, por eso lo puse en 50mbps que es mas bajo que el promedio o 95th percentile consumido actualmente. Pensa que usando 10mbps sostenidos las 24 horas del día serian unos 3140gb al mes. En mi ejemplo multiplique esos 10mbps x 5 que es un numero del que no baja ni en la peor hora del día durante todo el mes.
Los request ni los puse por que me da panico, eso exactamente es cada acceso a un item alojado en el servidor? Por que cada html de las webs que te hablo tiene incrustadas unas 180 imagenes. Eso sumado a los css y demas objetos podrian ser unos 190 request por visita.
Actualmente pago unos u$150 al mes por el server de htmls/php/mysql en The Planet y en promedio u$500 por server de imagenes.
Jorge, el calculo lo baje de 70mbps para hacerlo mas aproximado, por eso lo puse en 50mbps que es mas bajo que el promedio o 95th percentile consumido actualmente. Pensa que usando 10mbps sostenidos las 24 horas del día serian unos 3140gb al mes. En mi ejemplo multiplique esos 10mbps x 5 que es un numero del que no baja ni en la peor hora del día durante todo el mes.
Los request ni los puse por que me da panico, eso exactamente es cada acceso a un item alojado en el servidor? Por que cada html de las webs que te hablo tiene incrustadas unas 180 imagenes. Eso sumado a los css y demas objetos podrian ser unos 190 request por visita.
Actualmente pago unos u$150 al mes por el server de htmls/php/mysql en The Planet y en promedio u$500 por server de imagenes.
Muchas gracias Cristian por tu valiosa participación.
Hola,
Muy bueno tu artículo, recién ahora entiendo en detalle el tema de "la nube". En general yo utilizo servidores dedicados en Argentina y USA, y en general administrados, ya que no somos especialistas en configuración de servidores, a este respecto una consulta:
Cuando haces referencia a las AMI (Amazon Image) ¿Amazon dispone de algunas configuraciones "listas para usar" o es necesario armar una propia?
Gracias desde ya!
Hola de nuevo,
Me contesto yo solo, veo que existen cientos de AMIs a disposición. Entonces la consulta sería:
¿Para alguien acostumbrado a usar servidores administrados, o con panel de control (cpanel, plesk o incluso webmin) es factible pasarse a Amazon si volverse loco?
Gracias!
No Nestor, definitivamente Amazon AWS es para alguien que tenga perfil de sysadmin, es decir que se sienta cómodo instalando base de datos, web servers, y demás. El valor de Amazon AWS no está por alli, aunque hay compañías como
http://www.engineyard.com
que ofrecen justamente lo que estás sugiriendo, operando sobre plataforma Amazon AWS. Ellos te dicen, despreocupate de la tecnología, ocupate de tus negocios, nosotros te cuidamos tus servers en Amazon.
Cristian, que yo sepa, en Theplanet podes obtener un server dedicado por unos 150 u$, con una interface de 100 mbps para tener picos de esa velocidad. Pero de ninguna manera se puede hacer la cuenta de que tener disponibles 100 mbps impliquen 30 teras de trafico en tus manos. Por eso tenes un limite de banda de 2 o 3 teras (o poquito mas por alguna promo). Sumado a que el consumo tipico de internet es mas bien una campana (que la marcan tus usuarios mas la estacionalidad de la conectividad de tu carrier) y no una recta, lo comun es que un web server (o una granja de ellos) con una interface de 10 mbps pueda servir como MAXIMO 1 (un) tera/mes. o si tenes 100 mbps, 10 teras.
Por ejemplo, uno de los 2 diarios mas grandes del pais tiene un trafico de 80 mbps en su pico, y te aseguro que no pagan 150 u$ por un server en theplanet.
Un terabyte en bruto transferido via amazon costaria si mal no hago las cuentas unos 170 u$. Nada mal. Corrijanme si me equivoco. Daniel.