在测试或生产中使用 ScaleArc 的经验?

pot*_*tto 2 mysql replication clustering scalability

有没有人有使用ScaleArc 的经验?

我的 CTO 询问了我对此的看法,但我没有看到有关现实世界体验的任何信息。

Rol*_*DBA 6

哈哈哈哈真是巧合。我被要求自己评估它。

这是迄今为止所做的......

  • 我的主管安装了它
  • 我创建了两个 EC2 实例
  • 我在他们之间创建了主/从状态
  • 我在 ScaleArc EC2 上创建集群
    • 我提交了 Master EC2 作为 ScaleArc Master
    • 我提交了 Slave EC2 作为 ScaleArc Sl​​ave
  • 我在集群上调整了端口 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'"
Run Code Online (Sandbox Code Playgroud)

结果如下:

[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 |
+----------+------------------+
Run Code Online (Sandbox Code Playgroud)

嘿,还不错。10 次中有 7 次到达从站。

至少,这就是人们想要的:只使用一个地址,连接到 MySQL 并让一些漫游智能决定连接到哪个数据库服务器。这一直是 MySQL 代理的所有狂热预测者的白日梦:

无论他们是使用 LUA 实现 MySQL 代理还是以某种专有方式编写脚本,底线是:ScaleArc 已经实现了这一点,并为我们所有人(至少在 AWS 领域)完成了繁重的工作。

我会说:继续玩它,如下所示:

  • 设置一主三从
  • 在 ScaleArc 中注册 Master 和 Slaves
  • 编写一些针对集群的基准测试
  • 使用提供的图表,看看它是否智能地进行负载平衡

抱歉,我不是 ScaleArc 的专家,这不是您的完整答案。试驾它并踢一些轮胎。

更新 2013-01-14 16:32 EDT

我下载了 sakila 数据库并将其加载到集群中。

wget http://downloads.mysql.com/docs/sakila-db.tar.gz
Run Code Online (Sandbox Code Playgroud)

然后,我运行了这个查询

SELECT actor_id FROM sakila.actor
ORDER BY MD5(CONCAT(last_name,first_name))
Run Code Online (Sandbox Code Playgroud)

并将结果存储在 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
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 !!!