Amazon web services 亚马逊RDS-仅在需要时在线?
我有一个关于亚马逊RDS的问题。我只需要一天大约2小时的在线数据库,但我正在处理一个大约1gb的大型数据库 我有两个主要问题:Amazon web services 亚马逊RDS-仅在需要时在线?,amazon-web-services,amazon-rds,Amazon Web Services,Amazon Rds,我有一个关于亚马逊RDS的问题。我只需要一天大约2小时的在线数据库,但我正在处理一个大约1gb的大型数据库 我有两个主要问题: 我是否可以通过脚本自动使我的RDS数据库联机和脱机以节省资金 当我将RDS脱机以停止“工作时间”计数器运行并向我计费时,当我将其重新联机时,它是否仍具有相同的内容(即,我的所有数据是否都保留在那里,或者它是否必须是一个空白数据库?)。如果是这样的话,除了每次都备份到S3并重新导入它之外,还有什么方法可以解决这个问题吗 您可以使用shell脚本启动EC2*实例,因此我想您
您可以使用shell脚本启动EC2*实例,因此我想您也可以为RDS启动EC2*实例。 (见附件) 但与EC2*不同的是,您不能在不“销毁”RDS实例的情况下“停止”RDS实例。终止数据库时,需要创建数据库快照。您将在重新启动数据库时使用此数据库快照
*EC2:弹性计算,租用虚拟服务器或服务器 如果您希望以编程方式执行此操作
如果希望手动执行,也可以从AWS Web控制台执行所有这些操作 下面是一个脚本,用于停止/启动/重新启动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
Amazon最近更新了CLI,以包括启动和停止RDS实例的方法。并详细说明执行这些操作所需的步骤。如下所述,您可以快照/删除/还原到“启动/停止”RDS实例。我认为在EC2实例上安装mysql可能更容易,您可以根据需要启动和停止。亚马逊感到羞耻,截至2016年6月,还没有这样的功能快照是一个糟糕的选择。快照存储在S3上。因此,当您创建快照时,您将为存储付费。亚马逊非常聪明,它没有实施停止/启动功能,强迫你无论如何付费。从2016年6月起,可以创建
db.t2.micro
实例作为免费层用于测试。从2017年6月1日起,RDS支持大多数发动机类型的启动和停止实例。您可以通过控制台或CLI执行此操作。更多信息可以在中找到,这样他就可以将这些步骤编写到cron作业中?嗯……也许不是,因为他怎么能通过编程知道DB服务器的实例ID呢?RDS实例的实例ID是基于创建实例时的名称。这也是我的理解。所以他可以编写一个作业脚本,上面写着1)创建“i-75gh”的快照,然后2)杀死“i-75gh”……但他会将快照恢复到哪里?他必须手动运行流程的后半部分(创建新实例,记录id,将快照恢复到其中),不是吗?然后他必须用新id更新快照/kill脚本。必须有其他方法…数据库DBInstanceId是用户指定的。它没有被分配。您可能会想到EC2实例ID。来自RDS API上的AWS API文档:“DBInstanceId用户提供的数据库标识符;这是标识DB实例的唯一键”。DBInstanceId是传递到大多数AWS RDS API调用中以识别要与之交互的数据库的对象。我想到的是EC2实例ID——我使用的是Postgres,因此没有使用RDS的乐趣。请简要说明如何启用它!新闻稿可在此处找到:您可以: