使用oneproxy水平切表

社会主义新天地 提交于 2019-12-26 12:47:35

准备:

onproxy 192.168.1.25
MySQL主 192.168.1.17
MySQL从 192.168.1.18
客户机 192.168.1.22

oneproxy 点此下载 提取码:tquu

安装:

[root@localhost root]# tar -zxf oneproxy-rhel5-linux64-v6.0.0-ga.tar.gz -C /usr/local/
[root@localhost root]# cd /usr/local/oneproxy/
[root@localhost oneproxy]# vim demo.sh
export ONEPROXY_HOME=/usr/local/oneproxy
[root@localhost oneproxy]# chmod +x demo.sh
[root@localhost oneproxy]# ./demo.sh
[root@localhost oneproxy]# vim oneproxy.service 
ONEPROXY_HOME修改为
ONEPROXY_HOME=/usr/local/oneproxy 
[root@localhost oneproxy]# cp oneproxy.service /etc/init.d/oneproxy
[root@localhost oneproxy]# chmod +x /etc/init.d/oneproxy 
[root@localhost oneproxy]# /etc/init.d/oneproxy start
Starting OneProxy ...                                      [确定]
[root@localhost oneproxy]# netstat -anpt | grep oneproxy
tcp        0      0 0.0.0.0:3307                0.0.0.0:*                   LISTEN      3137/oneproxy       
tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN      3137/oneproxy       
tcp        0      0 0.0.0.0:4041                0.0.0.0:*                   LISTEN      3137/oneproxy       
tcp        0      0 127.0.0.1:3307              127.0.0.1:54567             ESTABLISHED 3137/oneproxy       
tcp        0      0 127.0.0.1:54567             127.0.0.1:3307              ESTABLISHED 3137/oneproxy 

切库、切表实验

(1)修改proxy.conf文件
[root@localhost oneproxy]# cd conf/
[root@localhost conf]# vim proxy.conf 

8 proxy-address            = 192.168.1.25:3306
  9 admin-address            = 192.168.1.25:4041
 10 mysql-version            = 5.5.22 #上述几个mysql的版本尽量保持一致
 11 proxy-master-addresses.1 = 192.168.1.17:3306@server1
 12 proxy-slave-addresses.1 = 192.168.1.18:3306@server1  #表示第一个server group
 14 proxy-group-policy = server1:0
 15 proxy-group-security = sever1:0

安装MySQL,然后登陆,设置密码
service mysqld start
mysqladmin -uroot password 123456
/etc/init.d/oneproxy start
mysql -uadmin -pOneProxy -h 192.168.1.25 -P4041


mysql> passwd '123456';
+--------+------------------------------------------+
| TEXT   | PASSWORD                                 |
+--------+------------------------------------------+
| 123456 | 9D7E55EAF8912CCBF32069443FAC452794F8941B |
+--------+------------------------------------------+
1 row in set (0.03 sec)

把加密密码粘贴到conf文件里,再修改一下字符集
 17 proxy-user-list          = test/9D7E55EAF8912CCBF32069443FAC452794F8941B@kgcdb //主从复制的库
 24 proxy-charset            = utf8_chinese_ci

(2)授权test用户
所有MySQL授权test用户,密码123456,
onproxy主机要一般登录,然后授权,mysql -uroot -p
grant all on *.* to 'test'@'192.168.1.25' identified by '123456';

关于part.txt文件
cd /usr/local/oneproxy/conf/
vim part.txt
删除所有内容,把下边的内容粘贴进去
[
        {
        "table"  :"test",
        "pkey"   :"id",
        "type"   :"int",
        "method"  :"hash",
        "partitions":
          [
             {"suffix":"_0","group":"server1"},
             {"suffix":"_1","group":"server1"},
             {"suffix":"_2","group":"server2"},
             {"suffix":"_3","group":"server2"},
             {"suffix":"_4","group":"server3"},
             {"suffix":"_5","group":"server3"},
             {"suffix":"_6","group":"server4"},
             {"suffix":"_7","group":"server4"}
           ]
        },                                                                                                    
  
        {
        "table"  :"benet",
        "pkey"   :"id",
        "type"   :"int",
        "method"  :"hash",
        "partitions":
          [
             {"suffix":"_0","group":"server1"},
             {"suffix":"_1","group":"server1"},
             {"suffix":"_2","group":"server2"},
             {"suffix":"_3","group":"server2"},
             {"suffix":"_4","group":"server3"},
             {"suffix":"_5","group":"server3"},
             {"suffix":"_6","group":"server4"},
             {"suffix":"_7","group":"server4"}
           ]
        }
]

配置完proxy.conf和part.txt之后,启动oneproxy
/etc/init.d/oneproxy stop
/etc/init.d/oneproxy start
如果启动不成功 oneproxy不能登录


在oneproxy主机上,登录test用户
mysql -utest -p123456 -h 192.168.1.25 -P 3307
use kgcdb
create table benet ( id int not null, name varchar(30) );
这里会卡着不动,过一会按三次ctrl+c可以退出,然后再进来

mysql> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| benet_0          |
| benet_1          |
+------------------+
2 rows in set (0.01 sec)
看到两个benet表,表明切表成功,然后插值验证

insert into benet_0 values(1,'make');
insert into benet_1 values(2,'makes');

在主或者从上都可以看到

关于proxy-group-policy与proxy-group-security

--proxy-group-policy=<servergroup>:<policy_value>
对于复杂的分库分表,则还需要编写Lua脚本来实现,在“lua”子目录下有一个示例脚本“oneproxy.lua”就是用来做分库分表的。其中“servergroup”表示针对哪个“Server Group”进行设置。?
此选项可以设置的“policy_value”值有:
0
默认值,什么也不做,依赖于Lua脚本来实现。
1
Read Failover功能,对于读操作,首先从Master读取,如果Master不可用,则从Slave端读取。
2
Read/Write Split功能,对于读操作,首先从Slave读取,如果Slave端不可用,则从Master端读取。除非所有的Slave都不可用,否则Master不参与读操作。
3
针对XtraDB Cluster群集环境的Read/Write Split功能,从集群中固定地选择一台作为写入节点,其他的节点作为读节点;如果选中的写入节点不可用,则重新选一台作为写入节点,其他可用的节点继续提供读,这个策略提供了写入节点的自动漂移,在双Master节点上也可以设置成这种策略。
4
Read/Write Split功能,对于读操作,从Master和Slave中随机选一台进行查询操作,写入操作则从在Master上进行。
5
随机读写功能,对于读操作,从Master和Slave中随机选一台进行查询操作,写入操作则是随机选一台Master进行操作。?
后续会继续内置更多的策略进去,以及不断优化已有的策略,为大家透明地做MySQL架构改造而努力。
proxy-group-security=server1:0

--proxy-group-security=<servergroup>:<policy_value>
安全级别,提升安全性,默认值为0,即没有任何设置。设成1禁止通过OneProxy来做DDL操作;设置为2则必须要有Where条件;设置为3只允许只读的操作。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!