Mysql-Oneproxy读写分离+分库分表

Oneproxy读写分离

一、Oneproxy读写分离

主服务器(Master):192.168.32.150
从服务器(slave):192.168.32.129
oneproxy中间件服务器:192.168.32.150


1、首先要配置好主从复制并且在主服务器上创建test库

mysql>create database test;

mysql> show databases;

添加oneproxy的连接用户会自动replication到slave数据库

mysql>grant select,delete,insert,update,create on test.* to oneproxy@'%' identified by '123456';


2、关闭三台服务器的防火墙或者配置防火墙策略

Mysql:3306

oneproxy连接端口3307

oneproxy管理端口4041

[root@localhost ~]# systemctl stop firewalld.service

①开启oneproxy自动识别读写服务器(从服务器配置)

[root@localhost ~]# vim /etc/my.cnf

添加:read_only = 1

②重启mysql服务

[root@localhost ~]# systemctl restart mysqld

mysql> show variables like "%read_only%";

或者 mysql>set global read_only = 1; //临时开启


3、配置oneproxy中间件(oneproxy服务器)

①安装oneproxy

[root@localhost ~]# wget http://www.onexsoft.com/software/oneproxy-rhel6-linux64-v6.2.0-ga.tar.gz

[root@localhost ~]# tar zxf oneproxy-rhel6-linux64-v6.2.0-ga.tar.gz -C /usr/local/

②在预启动脚本中修改oneproxy目录

[root@localhost ~]# vim /usr/local/oneproxy/demo.sh

~

#/bin/bash

export ONEPROXY_HOME=/usr/local/oneproxy

ulimit -c unlimited

valgrind --leak-check=full \

${ONEPROXY_HOME}/bin/oneproxy --defaults-file=${ONEPROXY_HOME}/conf/proxy.conf

③修改启动脚本oneproxy目录

[root@localhost ~]#vim /usr/local/oneproxy/oneproxy.service

............................

OneProxy Settings

ONEPROXY_HOME=/usr/local/oneproxy

ONEPROXY_SBIN="${ONEPROXY_HOME}/bin/oneproxy"

ONEPROXY_CONF="${ONEPROXY_HOME}/conf/proxy.conf"

ONEPROXY_PID="${ONEPROXY_HOME}/log/oneproxy.pid"

RETVAL=0

prog="OneProxy"

④获取oneproxy加密后的密文密码

[root@localhost ~]# cd /usr/local/oneproxy/bin/

[root@localhost bin]# ls

[root@localhost bin]# ./mysqlpwd 123456

9D7E55EAF8912CCBF32069443FAC452794F8941B

⑤修改oneproxy主配文件

[root@localhost ~]# mysql --version

[root@localhost bin]# vim /usr/local/oneproxy/conf/proxy.conf

[oneproxy]

#proxy-license = A2FF461456A67F28,D2F6A5AD70C9042D

keepalive = 1

event-threads = 4

proxy-group-policy = test:read-slave

log-file = log/oneproxy.log

pid-file = log/oneproxy.pid

lck-file = log/oneproxy.lck

proxy-auto-readonly = 1

proxy-forward-clientip = 1

proxy-trans-debug = 1

mysql-version = 5.7.21

proxy-master-addresses.1 = 192.168.32.150:3306@test

proxy-slave-addresses.2 = 192.168.32.129:3306@test

proxy-user-list = oneproxy/9D7E55EAF8912CCBF32069443FAC452794F8941B@test

proxy-part-template = conf/template.txt

proxy-part-tables.1 = conf/part.txt

proxy-part-tables.2 = conf/part2.txt

proxy-part-tables.3 = conf/cust1.txt

proxy-charset = utf8_bin

proxy-secure-client = 127.0.0.1

proxy-httpserver = :8080

proxy-httptitle = OneProxy Monitor

proxy-auto-readonly:自动切换读写角色
proxy-group-policy: 预定义策略,对应真实要管理的数据库
proxy-user-list: 指明连接数据库用户密文密码要与真实数据库用户密码对应@符后指的是数据库

启动oneproxy并查看端口

[root@localhost bin]# cd ..

[root@localhost oneproxy]# chmod +x demo.sh

[root@localhost oneproxy]# ./demo.sh

[root@localhost oneproxy]# ./oneproxy.service start

[root@localhost oneproxy]# ss -anpt | grep 3307

[root@localhost oneproxy]# ss -anpt | grep 4041


5、验证

由于oneproxy为了安全起见,初始静止了DDl语句,需要去到4041管理端口打开底层数据库权限(从服务器)

[root@localhost ~]# mysql -uadmin -pOneProxy -P4041 -h 192.168.32.149

mysql> set gaccess test 0 ;

使用客户端登录oneproxy连接端口3307(主服务器)

[root@localhost ~]# mysql -uoneproxy -p123456 -h 192.168.32.149 -P3307

mysql> create table test.tb (id int);

mysql> insert into test.tb values(1);

mysql> select * from test.tb;

观察管理网页master和slave中query的变化,读负载的增加与写负载的增加,验证成功

访问oneproxy管理网页
格式:输入http://192.168.32.149:8080
默认用户名admin,密码OneProxy

Mysql-Oneproxy读写分离+分库分表


OneProxy简单实现Mysql分库分表

修改配置文件proxy.conf

[root@localhost ~]#vim /usr/local/oneproxy/conf/proxy.conf

[oneproxy]

#proxy-license = A2FF461456A67F28,D2F6A5AD70C9042D

keepalive = 1

event-threads = 4

proxy-group-policy.1 = test:master-only

proxy-group-security = test:0log-file = log/oneproxy.log

pid-file = log/oneproxy.pid

lck-file = log/oneproxy.lck

proxy-forward-clientip = 1

proxy-trans-debug = 1

mysql-version = 5.7.21

proxy-master-addresses.1 = 192.168.32.187:3306@test

proxy-user-list = oneproxy/9D7E55EAF8912CCBF32069443FAC452794F8941B@test

proxy-part-template = conf/template.txt

proxy-part-tables.1 = conf/part.txt

proxy-part-tables.2 = conf/part2.txt

proxy-part-tables.3 = conf/cust1.txt

proxy-charset = utf8_bin

proxy-httpserver = :8080

proxy-httptitle = OneProxy Monitor


修改配置文件part2.txt

[root@localhost oneproxy]#cd /usr/local/oneproxy/conf

[root@localhost conf]#vim part2.txt

[

{

"table" : "user",

"pkey" : "id",

"type" : "int",

"method" : "hash",

"partitions" :

[

{ "suffix" : "_0", "group": "test" },

{ "suffix" : "_1", "group": "test" },

{ "suffix" : "_2", "group": "test" },

{ "suffix" : "_3", "group": "test"}

]

}

]


③启动oneproxy并查看端口

[root@localhost conf]# cd ..

[root@localhost oneproxy]# ./demo.sh

[root@localhost oneproxy]# ./oneproxy.service start

[root@localhost oneproxy]# ss -anpt | grep 3307

[root@localhost oneproxy]# ss -anpt | grep 4041

如果端口查询不到,可以查看oneproxy日志文件oneproxy.log。

如果没有日志记录,可能是主配或part文件有错误


验证
①从客户端登录连接端口(主服务器)

[root@localhost ~]# mysql -h 192.168.32.149 -uoneproxy -p123456 -P3307

mysql> show databases;

②插入数据

mysql>create table user(id int ,c1 int);
mysql>insert into user(id,c1) values (1,1);
mysql>insert into user(id,c1) values (2,2);
mysql>insert into user(id,c1) values (3,3);
mysql>insert into user(id,c1) values (4,4);
mysql>insert into user(id,c1) values (5,5);

③查看
mysql>select * from user;

④回到mysql查看存储位置

[root@localhost ~]# mysql -uroot -p123456

mysql> use test;

mysql> show tables ;

mysql> select * from user_0;

mysql> select * from user_1;

mysql> select * from user_2;

mysql> select * from user_3;

转载于:https://blog.51cto.com/13555423/2147938

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值