#amazon-web-services #amazon-rds #aws-cli
#amazon-web-services #amazon-rds #aws-cli
Вопрос:
Я пытаюсь создать реплику чтения рабочей базы данных, а затем хочу продвинуть реплику чтения в тестовую базу данных.
Я использовал эту команду awscli для создания реплики чтения
aws rds create-db-instance-read-replica --db-instance-identifier test-database --source-db-instance-identifier production-database --region eu-central-1
Я знаю, что не могу немедленно выполнить команду promote read replica, поскольку я получу сообщение об ошибке.
bash-3.2$ aws rds promote-read-replica --db-instance-identifier test-database --region eu-central-1
An error occurred (InvalidDBInstanceState) when calling the PromoteReadReplica operation: DB Instance is not in an available state.
Как я могу проверить, успешно ли создана реплика чтения, чтобы я мог выполнить команду promote read replica?
Я попытался запросить события для базы данных, но они возвращаются пустыми.
bash-3.2$ aws rds describe-events --source-identifier test-database --source-type db-instance
{
"Events": []
}
Я пытаюсь сделать это в конвейере Дженкинса, поэтому его нужно проверять программно.
Пожалуйста, сообщите.
Ответ №1:
Вы можете использовать describe-db-instances и создать простой официант на основе while, чтобы реплика была доступна.
Например:
while true; do
db_status=$(aws rds describe-db-instances
--db-instance-identifier test-database
--query 'DBInstances[0].DBInstanceStatus'
--output text)
[[ $db_status != "available" ]]
amp;amp; (echo $db_status; sleep 5)
|| break
done
echo "Finally ${db_status}"
Вышеуказанное будет проверять статус test-database
каждые 5 секунд, пока его available
.
Ответ №2:
я пытаюсь продолжить приведенный выше сценарий, добавив группу параметров и перезагрузив реплику чтения.
db_status=$(aws rds describe-db-instances
--db-instance-identifier db-replica
--profile xxx
--region us-west-2
--query 'DBInstances[0].DBInstanceStatus'
--output text)
[[ $db_status != "available" ]]
amp;amp; (echo $db_status; sleep 15)
|| break
echo "Finally ${db_status}"
if [ $db_status == "available" ]
then
echo "replica created successfully"
echo "Rebooting replica"
aws rds reboot-db-instance --db-instance-identifier db-replica
sleep 5;
else
echo "replica rebooted successfully"
fi
exit 1