最近在使用阿里雲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...