Amazon RDS - ¿En línea solo cuando sea necesario?


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

Tengo dos preguntas principales:

  1. ¿Puedo automatizar la conexión y desconexión de mi base de datos RDS a través de scripts para ahorrar dinero?

  2. Cuando pongo un RDS fuera de línea para detener el contador de" horas de trabajo " funcionando y facturándome, cuando lo vuelvo a poner en línea seguirá teniendo el mismo contenido (es decir, todos mis datos quédate ahí, o tendrá que ser un DB en blanco?). Si es así, ¿hay alguna manera de evitar esto en lugar de retroceder a S3 y reimportarlo cada vez?

Author: John Rotenstein, 2013-02-17

4 answers

Aquí hay un script que detendrá/iniciará/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
 9
Author: kevin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-10 20:40:56

Si desea hacer esto programáticamente,

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

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

  3. Restaurar la base de datos desde 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.

 30
Author: BestPractices,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-18 00:40:00

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

Pero a diferencia de EC2*, no se puede "detener" una instancia RDS sin "destruirla". Es necesario crear una instantánea de la base de datos al finalizar la base de datos. Utilizará esta instantánea de la base de datos cuando reinicie la base de datos.

*EC2 : Elastic Computing, renting a virtual server or a server.

 9
Author: Thibault D.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-17 21:24:29

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

 5
Author: Richard Hurt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-01 19:53:38