Mysql
在測試或生產中使用 ScaleArc 的經驗?
有沒有人有使用ScaleArc的經驗?
我的 CTO 詢問了我對此的看法,但我沒有看到任何關於現實世界經驗的資訊。
哈哈哈哈真是巧合。我被要求自己評估它。
這是到目前為止所做的…
我的主管安裝了它
我創建了兩個 EC2 實例
我在它們之間創建了主/從狀態
我在 ScaleArc EC2 上創建集群
- 我將 Master EC2 作為 ScaleArc Master 送出
- 我將 Slave EC2 作為 ScaleArc Slave 送出
我調整了集群上 3306 埠的安全選項
這是我執行的基本測試:我決定連接到 MySQL,不使用 Master EC2,也不使用 Slave EC2,而只使用 ScaleArc EC2。這是一個編寫測試連接性的腳本:
[redwards@lw-lts-155 ec2]$ cat master_select EC2_DNS=<ScaleArc-EC2-DNS Hidden> MYSQL_USER=<<Username Hidden> MYSQL_PASS=<Password Hidden> MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}" mysql -h${EC2_DNS} ${MYSQL_CONN} -ANe"show variables like 'hostname'"
結果如下:
[redwards@lw-lts-155 ec2]$ ./master_select +----------+------------------+ | hostname | ip-10-242-47-176 | +----------+------------------+ [redwards@lw-lts-155 ec2]$ ./master_select +----------+------------------+ | hostname | ip-10-205-21-233 | +----------+------------------+ [redwards@lw-lts-155 ec2]$ ./master_select +----------+------------------+ | hostname | ip-10-242-47-176 | +----------+------------------+ [redwards@lw-lts-155 ec2]$ ./master_select +----------+------------------+ | hostname | ip-10-242-47-176 | +----------+------------------+ [redwards@lw-lts-155 ec2]$ ./master_select +----------+------------------+ | hostname | ip-10-242-47-176 | +----------+------------------+ [redwards@lw-lts-155 ec2]$ ./master_select +----------+------------------+ | hostname | ip-10-242-47-176 | +----------+------------------+ [redwards@lw-lts-155 ec2]$ ./master_select +----------+------------------+ | hostname | ip-10-205-21-233 | +----------+------------------+ [redwards@lw-lts-155 ec2]$ ./master_select +----------+------------------+ | hostname | ip-10-242-47-176 | +----------+------------------+ [redwards@lw-lts-155 ec2]$ ./master_select +----------+------------------+ | hostname | ip-10-205-21-233 | +----------+------------------+ [redwards@lw-lts-155 ec2]$ ./master_select +----------+------------------+ | hostname | ip-10-242-47-176 | +----------+------------------+
嘿,還不錯。10 次中有 7 次到達奴隸。
至少,這是人們想要的:只使用一個地址,連接到 MySQL,並讓一些流動的智能決定連接到哪個 DB 伺服器。這是所有狂熱的 MySQL Proxy 預言家的夢想:
Dec 17, 2012
: MySQL 代理複製配置Apr 19, 2012
: MySQL Proxy 的最新進展是什麼?Jan 24, 2012
:使用複制進行橫向擴展無論他們是使用 LUA 實現 MySQL 代理還是以某種專有方式編寫腳本,最重要的是:ScaleArc 已經實現了這一點,並為我們所有人完成了繁重的工作(至少在 AWS 世界中)。
我會說:繼續玩它,如下所示:
- 設置一主三從
- 在 ScaleArc 中註冊 Master 和 Slave
- 寫一些針對集群的基準
- 使用提供的圖表,看看它是否智能地進行負載平衡
抱歉,我不是 ScaleArc 的專家,這不是你的完整答案。試駕它並踢一些輪胎。
更新 2013-01-14 16:32 EDT
我下載了 sakila 數據庫並將其載入到集群中。
wget http://downloads.mysql.com/docs/sakila-db.tar.gz
然後,我執行了這個查詢
SELECT actor_id FROM sakila.actor ORDER BY MD5(CONCAT(last_name,first_name))
並將結果儲存在
actor_id.txt
接下來,我建構了以下腳本以在測試平台中多次啟動 mysql..
EC2_DNS=<ScaleArc-EC2-DNS Hidden> MYSQL_USER=<Username Hidden> MYSQL_PASS=<Password Hidden> MYSQL_CONN="-h${EC2_DNS} -u${MYSQL_USER} -p${MYSQL_PASS} -Dsakila" NUMBER_OF_TESTBEDS=${1} PARALLEL_TESTS=${2} if [ "${1}" == "" ] ; then NUMBER_OF_TESTBEDS=1 ; fi if [ "${2}" == "" ] ; then PARALLEL_TESTS=1 ; fi ACTOR_LIST="" for ACTOR_ID in `cat actor_id.txt` do ACTOR_LIST="${ACTOR_LIST} ${ACTOR_ID}" done SQLPREFIX="SELECT F.film_id,F.title FROM actor A" SQLPREFIX="${SQLPREFIX} INNER JOIN film_actor FA USING (actor_id)" SQLPREFIX="${SQLPREFIX} INNER JOIN film F USING (film_id) WHERE A.actor_id=" for (( X = 1 ; X <= NUMBER_OF_TESTBEDS ; X++ )) do echo -n "Launching TestBed #${X} (" for (( Y = 1 ; Y <= PARALLEL_TESTS ; Y++ )) do echo -n " ${Y}" for ACTOR_ID in `echo "${ACTOR_LIST}"` do SQLSTMT="${SQLPREFIX}${ACTOR_ID}" mysql ${MYSQL_CONN} -ANe"${SQLSTMT}" /dev/null 2>/dev/null & done done echo -n ")" wait echo done
希望這可以幫助 !!!