tipos tipo services instancias instancia ec2 caracteristicas aws amazon-web-services amazon-rds

amazon-web-services - services - tipo de instancia amazon



Amazon RDS: ¿solo en línea cuando es necesario? (4)

Amazon actualizó recientemente su CLI para incluir una forma de iniciar y detener instancias de RDS. stop-db-instance y start-db-instance detallan los pasos necesarios para realizar estas operaciones.

Tenía una pregunta sobre Amazon RDS. Solo necesito la base de datos en línea durante aproximadamente 2 horas por día, pero estoy tratando con una base de datos bastante grande de alrededor de 1 gb.

Tengo dos preguntas principales:

  1. ¿Puedo automatizar el uso de mi base de datos RDS en línea y fuera de línea a través de scripts para ahorrar dinero?

  2. Cuando desconecto un RDS para detener el contador de "horas de trabajo" ejecutándose y facturándome, cuando lo vuelvo a poner en línea todavía tendrá el mismo contenido (es decir, todos mis datos permanecerán allí, o tendrá que ser un DB en blanco ?). Si es así, ¿hay alguna forma de evitar esto en lugar de retroceder a S3 y volver a importarlo todo el tiempo?


Aquí hay una secuencia de comandos que detendrá / comenzará / reiniciará una instancia de RDS

#!/bin/bash # usage ./startStop.sh lhdevices start INSTANCE="$1" ACTION="$2" # export vars to run RDS CLI export JAVA_HOME=/usr; export AWS_RDS_HOME=/home/mysql/RDSCli-1.15.001; export PATH=$PATH:/home/mysql/RDSCli-1.15.001/bin; export EC2_REGION=us-east-1; export AWS_CREDENTIAL_FILE=/home/mysql/RDSCli-1.15.001/keysLightaria.txt; if [ $# -ne 2 ] then echo "Usage: $0 {MySQL-Instance Name} {Action either start, stop or reboot}" echo "" exit 1 fi shopt -s nocasematch if [[ $ACTION == ''start'' ]] then echo "This will $ACTION a MySQL Instance" rds-restore-db-instance-from-db-snapshot lhdevices --db-snapshot-identifier dbStart --availability-zone us-east-1a --db-instance-class db.m1.small echo "Sleeping while instance is created" sleep 10m echo "waking..." rds-modify-db-instance lhdevices --db-security-groups kfarrell echo "Sleeping while instance is modified for security group name" sleep 5m echo "waking..." elif [[ $ACTION == ''stop'' ]] then echo "This will $ACTION a MySQL Instance" yes | rds-delete-db-snapshot dbStart echo "Sleeping while deleting old snapshot " sleep 10m #rds-create-db-snapshot lhdevices --db-snapshot-identifier dbStart # echo "Sleeping while creating new snapshot " # sleep 10m # echo "waking...." #rds-delete-db-instance lhdevices --force --skip-final-snapshot rds-delete-db-instance lhdevices --force --final-db-snapshot-identifier dbStart echo "Sleeping while instance is deleted" sleep 10m echo "waking...." elif [[ $ACTION == ''reboot'' ]] then echo "This will $ACTION a MySQL Instance" rds-reboot-db-instance lhdevices ; echo "Sleeping while Instance is rebooted" sleep 5m echo "waking...." else echo "Did not recognize command: $ACTION" echo "Usage: $0 {MySQL-Instance Name} {Action either start, stop or reboot}" fi shopt -u nocasematch


Puede iniciar instancias EC2 * utilizando scripts de shell, así que supongo que también puede hacerlo para RDS. (ver http://docs.aws.amazon.com/AmazonRDS....html )

Pero a diferencia de EC2 *, no puede "detener" una instancia de RDS sin "destruirla". Debe crear una instantánea de base de datos cuando finalice su base de datos. Utilizará esta instantánea DB al reiniciar la base de datos.

* EC2: Computación elástica, alquiler de un servidor virtual o un servidor.


Si desea hacer esto programáticamente,

  1. Realice una instantánea de la instancia de RDS utilizando rds-create-db-snapshot http://docs.aws.amazon.com/AmazonRDS/latest/CommandLineReference/CLIReference-cmd-CopyDBSnapshot.html

  2. Elimine la instancia en ejecución usando rds-delete-db-instance http://docs.aws.amazon.com/AmazonRDS/latest/CommandLineReference/CLIReference-cmd-DeleteDBInstance.html

  3. Restaure la base de datos de la instantánea usando rds-restore-db-instance-from-db-snapshot http://docs.aws.amazon.com/AmazonRDS/latest/CommandLineReference/CLIReference-cmd-RestoreDBInstanceFromDBSnapshot.html

También puede hacer todo esto desde la consola web de AWS, si desea hacerlo manualmente.