您的位置:首页 > 其它

OneProxy并发查询

2015-09-16 16:15 381 查看

OneProxy并发查询

1、OneProxy安装

[root@redhat Desktop]# mv oneproxy-rhel6-linux64-v5.7-ga.tar.gz/usr/local[root@redhat Desktop]# cd /usr/local/[root@redhat local]# tar zxvf oneproxy-rhel6-linux64-v5.7-ga.tar.gz[root@redhat local]# cd oneproxy/[root@redhat oneproxy]# cat demo.sh#/bin/bash#exportONEPROXY_HOME=/data/oneproxy#valgrind --leak-check=full --show-reachable=yes \${ONEPROXY_HOME}/oneproxy--keepalive --proxy-address=:3307 \ --vip-address=192.168.1.120/eth0:0 \ --proxy-master-addresses=192.168.1.20:3306@server1 \ --proxy-slave-addresses=192.168.1.119:3306@server1 \ --proxy-user-list=test/1378F6CC3A8E8A43CA388193FBED5405982FBBD3@test \ --proxy-part-tables=${ONEPROXY_HOME}/part.txt\ --proxy-charset=gbk_chinese_ci \ --event-threads=4--proxy-group-security=server1:0 \ --log-file=${ONEPROXY_HOME}/oneproxy.log \ --pid-file=${ONEPROXY_HOME}/oneproxy.pid修改相关语句
[root@redhat oneproxy]# cat demo.sh#/bin/bash#export ONEPROXY_HOME=/usr/local/oneproxy#valgrind --leak-check=full --show-reachable=yes \${ONEPROXY_HOME}/oneproxy--keepalive --proxy-address=:3307 \ --vip-address=192.168.1.120/eth0:0 \ --proxy-master-addresses=192.168.1.128:3306@data1 \ --proxy-master-addresses=192.168.1.132:3306@data2\ --proxy-user-list=test/1378F6CC3A8E8A43CA388193FBED5405982FBBD3@test \ --proxy-part-tables=${ONEPROXY_HOME}/hashpart.txt \ --proxy-charset=gbk_chinese_ci \ --proxy-group-security=server1:0 \ --proxy-group-policy=data1:master-only\ --proxy-group-policy=data2:master-only \ --log-file=${ONEPROXY_HOME}/oneproxy.log \ --pid-file=${ONEPROXY_HOME}/oneproxy.pid注释: A) --proxy-user-list=test/1378F6CC3A8E8A43CA388193FBED5405982FBBD3@test其中第一个test为连接proxy的用户名,该用户名也是用来连接后端数据库的用户名;1378F6CC3A8E8A43CA388193FBED5405982FBBD3为test用户的加密口令;最后一个test为各个数据库节点中的test数据库。 B)口令加密。启动OneProxy之后,进入管理端口,然后键入passwd<string>。
# mysql -uadmin -h 127.0.0.1 -P4041 -pOneProxymysql> passwd test;+------+------------------------------------------+| TEXT | PASSWORD |+------+------------------------------------------+| test | 1378F6CC3A8E8A43CA388193FBED5405982FBBD3 |+------+------------------------------------------+1 row in set (0.00 sec)C) 分表文件hashpart.txt [root@redhatoneproxy]# cat hashpart.txt [ { "table" :"bigtable", "pkey" : "id", "type" : "int", "method" : "hash", "partitions": 256, "groups":["data1","data2"] }]其中table:拆分的表;pkey:分表列;type:分表列类型,目前支持的类型为int和char;method:分区方法,目前支持hash,range,list,global 4)安装数据节点,并赋予用户相应权限。A)MySQL安装(安装步骤略)B)权限分配 登录到各个底层数据库所在的linux主机上,运行如下命令:mysql-uroot -p -e "grant all privileges on *.* to test@'%' identified by 'test'"
5)启动sh ./demo.sh6)检查后端数据库节点状态 进入管理端口(默认端口为4041)
mysql -uadmin -h 127.0.0.1 -P4041 -pOneProxy
然后键入 list backend;




status这一栏为UP,表示集群正常。 7)创建表 登录OneProxy的转发端口 mysql-h<OneProxyIP> -P3307 -utest –ptest注意:端口3307需要打开C:\Users\jing>mysql -h192.168.1.120 -P3307 -utest-ptest

DDL语句:
CREATE TABLE `bigtable` (`id` bigint(20) NOT NULL,`start` datetime DEFAULT NULL,`icol3` int(11) DEFAULT NULL COMMENT ' 1-10 ',`icol4` int(11) DEFAULT NULL COMMENT ' 1-100 ',`icol5` int(11) DEFAULT NULL COMMENT ' 1-1000 ',`icol6` int(11) DEFAULT NULL,`vcol7` varchar(20) DEFAULT NULL,`vcol8` varchar(20) DEFAULT NULL,`vcol9` varchar(30) DEFAULT NULL,`vcol10` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`) ) ;执行这个语句,会看到报错: ERROR 1044 (42000): Access denied due to securitypolicy, DDL disabled or DML restricted!
解释:由于OneProxy为了安全起见,默认是禁止DDL语句的。 解决办法:从OneProxy管理端口,运行如下命令C:\Users\jing>mysql -h192.168.1.120 -P4041-uadmin -pOneProxy -e "set gaccess data1:master-only"C:\Users\jing>mysql -h192.168.1.120 -P4041-uadmin -pOneProxy -e "set gaccess data2:master-only"再次登录到OneProxy的转发端口,运行DDL命令即可成功。 经过上面的步骤之后,256个表就在2个底层数据库中创建好了,分别为bigtable_0 , bigtable_1.....bigtable_255。2、OneProxy测试
2.1、order by排序测试

2.1.1插入测试数据
在redhat(192.168.1.128)主机下的test数据库下的表bigtable_0插入测试数据



在master(192.168.1.132)主机下的test数据库下的表bigtable_1插入测试数据



测试排序结果
CMD下连接上vip地址
C:\Users\jing> mysql -h192.168.1.120 -P3307 -utest -ptest2.1.2、没有使用oreder by排序的情况
使用order by排序的情况(使用id号进行排序):



id号是主键,不同的表有相同的id号也不会发生冲突



2.1.3、使用order by排序的情况(使用icol3号进行排序)




2.2、group by分组测试



2.3、已经建好的两个表,OneProxy实现并发查询
已经建好的两个表(不通过OneProxy进行分库分表),OneProxy要实现并发查询,对表名的格式有要求,表名后缀必须以“_0”、“_1”……结尾。可以通过建立视图的方法(相当于给原来的表建立一个表别名)来解决这个问题。测试过程:1)在主机为192.168.1.128 apex_db库下,有一个表名为apex_tb,给表名apex_tb建立一个视图apex_tb_0,

2)在主机为192.168.1.132 apex_db库下,有一个表名为apex_tb,给表名apex_tb建立一个视图apex_tb_1

3)通过以上的操作OneProxy就可以并发查询已经建好的两个表(要求表结构相同)。2.4、存储过程测试—结论:不支持存储过程


可以建立存储过程,但是不能用call进行调用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oneproxy