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:
¿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?
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,
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.htmlElimine la instancia en ejecución usando
rds-delete-db-instance
http://docs.aws.amazon.com/AmazonRDS/latest/CommandLineReference/CLIReference-cmd-DeleteDBInstance.htmlRestaure 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.