【问题标题】:How to identify if create read replica action is complete and finished如何识别创建只读副本操作是否已完成并完成
【发布时间】:2022-02-09 04:42:11
【问题描述】:

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

我已使用此 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 管道中执行此操作,因此必须以编程方式对其进行检查。

请多多指教。

【问题讨论】:

    标签: amazon-web-services amazon-rds aws-cli


    【解决方案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" ]] \
            && (echo $db_status; sleep 5) \
            || break    
    done
    
    echo "Finally ${db_status}"
    

    上面将每 5 秒检查一次 test-database 的状态,直到其 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" ]] \
              && (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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-13
        • 1970-01-01
        相关资源
        最近更新 更多