關於阿里雲Rds介面呼叫的記錄

2021-07-10 20:17:20 字數 2384 閱讀 3726

最近在使用阿里雲open_api的rds實現database的建立和對建立的database的授權,在使用過程中存在一些使用的問題,在此記錄一下。

注:這裡使用的語言是php

阿里雲提供的rds介面在此貼上:

請求示例:

&charactersetname=gbk

&dbname=testdb02

&dbinstanceid=riauvjz6zajfiq6ba1370329449201

&<[公共請求引數]>

返回示例:

xml格式:

5a77d650-27a1-4e08-ad9e-59008edb6927requestid>

createdatabaseresponse>

json格式:

官方文件請看這裡

官方文件的介面實現是傳送請求,獲取響應,而sdk是對這個過程進行了封裝,簡單的請求類的例項化,傳送請求就完成了建立database和授權的過程。

例項**如下:

這是aliyun sdk中通用客戶端類

$c=new aliyunclient;

$c->accesskeyid =

$this

->accesskeyid;

$c->accesskeysecret =

$this

->accesskeysecret;

$c->serverurl=

$this

->serverurl;//根據不同產品選擇相應網域名稱,例如:rds

下面建立 database請求例項

$request

=new rds20140815createdatabaserequest();

$request

->setcharactersetname('utf8');

$request

->setdbinstanceid($this

->dbinstanceid);

$request

->setdbname($this

->completedatabase);

$request

->check();

$create=$c

->execute($request);//這是執行傳送請求的過程

再貼乙個授權的例項:

$grantrequest

=new rds20140815grantaccountprivilegerequest();

$grantrequest

->setdbname($this

->completedatabase);

$grantrequest

->setdbinstanceid($this

->dbinstanceid);

$grantrequest

->setaccountname($this

->accountname);

$grantrequest

->setaccountprivilege('readwrite');

$grantrequest

->check();

$res=$c

->execute($grantrequest);

這裡正常情況下就是 建庫成功 授權成功,但是在實現的過程中出現了問題:

建庫成功以後,授權不成功,所以無法操作database,糾結一段時間終於發現了,建庫完成後,阿里是返回了乙個requestid,但是這並不代表建庫完成,它只是告訴你可以建庫並且正在執行,如果拿到requestid就去執行授權,或者操作,就會失敗,所以在這個地方要注意:

建庫和授權的過程以及其他過程,是需要耗時的。建庫和授權,還有很多操作之間都存在時間差。

所以,建庫完成後,讓程式sleep,直到它完成這個過程

什麼時候才算這個過程完成,阿里雲提供了查詢database狀態的介面,通過這個 介面可以查詢要操作的database的狀態,阿里資料庫提供了三種:creating,running,deleting,上**:(方法是自己定義的,前面4句是介面呼叫的)

//獲取阿里雲資料庫狀態

protected function databasestatus($c)

break;

}else

}return

$status_temp;

}

關於兩個過程中間的時間差,php 可以 執行 sleep();

使用遞迴直到過程執行完成,這個自行完成就可以了。

這是在寫**過程中的一點記錄,有用拿走,無用輕噴。

我和阿里雲RDS的故事

於阿里雲的rds效能無法滿足我們公司系統的要求,資料庫偶爾出現莫名的查詢慢 索引等做了全面優化 經過好多次投訴,情況還是沒有改善。由於是類金融的系統,對這種情況是不能接受的。相信系統資料有5g以上有人遇到過問題。好吧,準備遷移到物理上面,選用了一家上海網際網路應用服務提供商的物理機 16核cpu,3...

阿里雲人臉識別介面呼叫。

1.阿里雲開通人臉識別 2.以人臉屬性識別為例 3.為了安全起見,我們需要搭建乙個伺服器,以nodejs為例 nodejs var request require request var url require url var crypto require crypto var date new d...

基於阿里雲RDS的MySql DDL使用指南

mysql u 資料庫名稱 h 內網ip p埠號 p密碼mysql quit byecreate database 資料庫名 create temporary table if not exists tbl name create definition,table options select st...