如何确定创建只读副本操作是否完成并完成

How to identify if create read replica action is complete and finished

我正在尝试创建生产数据库的只读副本,然后我想将只读副本提升为测试数据库。

我已经使用这个 awscli 命令创建了一个只读副本

aws rds create-db-instance-read-replica --db-instance-identifier test-database --source-db-instance-identifier production-database --region eu-central-1

我知道我不能立即发出升级只读副本命令,因为我会收到错误消息。

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.

如何检查只读副本是否已成功创建,以便发出升级只读副本命令?

我试图查询数据库的事件,但它返回的是空的。

bash-3.2$ aws rds describe-events --source-identifier test-database --source-type db-instance
{
    "Events": []
}

我正在尝试在 Jenkins 管道中执行此操作,因此必须以编程方式对其进行检查。

请指教。

您可以使用 describe-db-instances 并创建一个简单的 while-based 等待程序以使副本可用。

例如:

while true; do 

    db_status=$(aws rds describe-db-instances \
                --db-instance-identifier test-database \
                --query 'DBInstances[0].DBInstanceStatus' \
                --output text)
                
    [[ $db_status != "available" ]] \
        && (echo $db_status; sleep 5) \
        || break    
done

echo "Finally ${db_status}"

以上将每 5 秒检查一次 test-database 的状态,直到其 available

我正在尝试通过添加参数组并重新启动只读副本来继续上述脚本。

 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" ]] \
        && (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