功能:
1.具有SQL白名单(防SQL注入)及IP白名单功能的SQL防火墙软件
2.数据库故障切换
3.读写分离
4.分库分表
 
 
一、下载
oneproxy-rhel5-linux64-v6.0.0-ga.tar.gz
 
二、部署
master: 192.168.0.181 hostname:cen01
slave: 192.168.0.182 hostname:cen02
oneproxy: 192.168.0.183 hostname:cen03
系统:全部是centos6.7
需要读写分离的库名称:mydata,表test01 (id int(3),name char(8)); 可不用先建好
 
总结:
1.master与slave安装好MYSQL,已做好主从复制,oneproxy不用安装MYSQL
2.当外来业务访问数据库时,只需直接访问oneproxy机器的:3307端口就行了。它会直接调度master和slave节点。
mysql -uuser01 -puser01 -P3307 -h192.168.0.183
 
1.将软件包解压
tar -xzf oneproxy-rhel5-linux64-v6.0.0-ga.tar.gz -C /usr/local
 
2.配置oneproxy
cd /usr/local/oneproxy
vim ./demo.sh
将ONEPROXY_HOME的路径改为软件部署路径:/usr/local/oneproxy
如下图所示:
 
vim oneproxy.service
将ONEPROXY_HOME的路径改为软件部署的路径:/usr/local/oneproxy
如下图所示:
 
vim conf/proxy.conf
event-threads = 4     //并发线程数,最大允许48个线程。通常可以设为CPU Core数量的两倍
proxy-address = :3307    //设置对外提供访问的端口
mysql-version = 5.6.25    //设置mysql版本
proxy-slave-addresses.1 = 192.168.0.182:3306@server1      //192.168.0.182为slave的IP,server1为服务组名称,任意写
proxy-slave-addresses.2 = 192.168.0.184:3306@server1      //填写第二个slave的IP,如果有的话
proxy-master-addresses.1 = 192.168.0.181:3306@server1      //192.168.0.181为master的IP,server1为服务组名称,任意写
proxy-group-policy = server1:read_slave      //设置策略为:在master写,在slave读
proxy-user-list = user01/1378F6CC3A8E8A43CA388193FBED5405982FBBD3@mydata          //user01为用户名,用于给oneproxy登录后端MYSQL节点/后面的字符串是密码,mydata是要读写分离的数据库名称
repadmin-username = repadmin          //指定复制管理帐号的用户名,后端MYSQL节点都要建
repadmin-password = 1378F6CC3A8E8A43CA388193FBED5405982FBBD3           //指定复制帐号的密码,三台mysql都要有
保存退出
 
 
登录所有后端MYSQL(master/slave节点),执行:
由于已经设置了主从复制,所以只对master添加用户即可,创建用户操作会同步到slave
create user user01;
grant all on mydata.* to user01@'%' identified by 'user01';
create user 'repadmin'@'%' identified by 'user01';           //oneproxy可能通过该帐号在后端MYSQL节点执行:show master/slave status
grant replication slave on *.* to 'repadmin'@'%';        //以便用来取得复制的运行数据
grant replication client on *.* to 'repadmin'@'%';
flush privileges;
退出
 
三、修改系统环境(master/slave/onepxory节点)
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
ulimit -n 65535
 
echo "echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse" >> /etc/profile
echo "echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle" >> /etc/profile
echo "ulimit -n 65535" >> /etc/profile
 
iptables -I INPUT -m state --state NEW -p tcp --dport 3307 -j ACCEPT
iptables -I INPUT -m state --state NEW -p tcp --dport 4041 -j ACCEPT
iptables -I INPUT -m state --state NEW -p tcp --dport 8080 -j ACCEPT
service iptables save
 
四、启动oneproxy
cd /usr/local/oneproxy
chmod 755 demo.sh
./demosh
./oneproxy.service restart
 
五、访问oneproxy管理界面
(oneproxy不必安装web服务)
 
六、读写分离检验
在master或slave或其它任意一台非集群的机器执行:
mysql -utest -ptest -h192.168.0.183 -P3307 -e"select @@hostname;"       //往oneproxy提交查询操作,显示的是slave主机名
 
 
mysql -utest -ptest -h192.168.0.183 -P3307 -e"begin;select @@hostname;commit;"       //往oneproxy提交写操作,显示的是master主机名
 
可以进一步校验:
在master或slave或其它任意一台机,或者其它连接mysql的工具(Navicat),执行如下命令:
mysql -uuser01 -puser01 -P3307 -h192.168.0.183 -e"insert into mydata.test01 values (5,'aaaaa')"
 
在master和slave的数据库中可以查询到以下结果:
 
 
当执行:drop table test01时出现报错:
ERROR 1044 (42000): Access denied due to security policy, DDL disabled or DML restricted!
 
解释:由于OneProxy为了安全起见,默认是禁止DDL语句的。
解决办法:从OneProxy管理端口,运行如下命令:
mysql -uadmin -pOneProxy -P4041 -h192.168.0.183 -e"set gaccess server1 0;"      //0表示允许创建/删除表,1表示不允许创建/删除
此时就可以删除或者创建表了。
 
登录管理界面,可看到有相应记录:
 
 
可见,当往oneproxy写数据时,会自动同步到master上,而master通过主从复制功能将数据同步到slave。
 
检查后端数据库节点状态:
mysql -uadmin -pOneProxy -P4041 -h192.168.0.183 --protocol=TCP       //进入管理端口(默认端口为4041),IP为部署了oneproxy的IP
list help;     //显示帮助
list backend;      //输入此内容,回车
IS_M:表示这台机器是否是一台Master
IS_S:表示是否为一台Slave,
MFile:表示主库上的Binlog位置
DFile:表示备机上IO线程
RFile:SQL线程处理的位置
 
 
部署完成。
如有错误,可查看log/proxy.log日志。

利用oneproxy实现mysql读写分离搭建笔记的更多相关文章

  1. Amoeba mysql读写分离搭建及介绍

    Amoeba mysql读写分离搭建及介绍 推荐: http://blog.chinaunix.net/uid-20639775-id-154600.html

  2. OneProxy实现mysql读写分离

    OneProxy for MySQL可以复用不同应用到后端数据库的连接,有效降低数据库的并发连接数:可以即时踢除不可用的节点,将应用请求转发到其他可用节点,保证业务服务的稳定性. 可透明地将查询语句分 ...

  3. 三十五.MySQL读写分离 MySQL多实例 、MySQL性能调优

    1.实现MySQL读写分离 搭建一主一从结构 配置maxscale代理服务器 测试分离配置   1.1 搭建一主一从结构 192.168.4.51 主 192.168.4.52 从 测试OK   1. ...

  4. 提高性能,MySQL 读写分离环境搭建

    这是松哥之前一个零散的笔记,整理出来分享给大伙! MySQL 读写分离在互联网项目中应该算是一个非常常见的需求了.受困于 Linux 和 MySQL 版本问题,很多人经常会搭建失败,今天松哥就给大伙举 ...

  5. 提高性能,MySQL 读写分离环境搭建(一)

    这是松哥之前一个零散的笔记,整理出来分享给大伙! MySQL 读写分离在互联网项目中应该算是一个非常常见的需求了.受困于 Linux 和 MySQL 版本问题,很多人经常会搭建失败,今天松哥就给大伙举 ...

  6. Mysql多实例安装+主从复制+读写分离 -学习笔记

    Mysql多实例安装+主从复制+读写分离 -学习笔记 .embody{ padding:10px 10px 10px; margin:0 -20px; border-bottom:solid 1px ...

  7. mysql读写分离--一主多从,冗余存储

    转载了https://blog.csdn.net/u013421629/article/details/78793966 https://blog.csdn.net/justdb/article/de ...

  8. amoeba实现MySQL读写分离

    amoeba实现MySQL读写分离 准备环境:主机A和主机B作主从配置,IP地址为192.168.131.129和192.168.131.130,主机C作为中间件,也就是作为代理服务器,IP地址为19 ...

  9. 使用Atlas实现MySQL读写分离+MySQL-(Master-Slave)配置

    参考博文: MySQL-(Master-Slave)配置  本人按照博友北在北方的配置已成功  我使用的是 mysql5.6.27版本. 使用Atlas实现MySQL读写分离 数据切分——Atlas读 ...

随机推荐

  1. Final阶段版本控制报告

    版本控制代码及文档要求 在coding.net版本控制; 公开项目,教师.专家.其他同学可以不注册源代码.在此公布git地址. 报告beta阶段2周中,项目的版本控制情况,不包括未在coding.ne ...

  2. M1个人贡献分以及转会确定

    按照之前的方案,团队成员得分统计表见下:   P(Pd*pf) 比重 个人得分 黎柱金 335400 0.1844 63 晏旭瑞 306000 0.1682 59 孙思权 304150 0.1672 ...

  3. 每日scrum(1)

    今天又正式开始了第二个冲刺周期,计划十天,主要需要改进的地方包括UI界面,还有一些细节的把握. 今天出现的主要问题有:在讨论UI界面风格的时候,小组内部意见不统一,对UI界面的创作流程不熟悉,以及难度 ...

  4. css3学习笔记一

    首先界面是二维的但也可以有三维的效果.先了解浏览器兼容性问题,火狐加前缀(-moz-)IE加(-MF-)谷歌加(-webkit),简单介绍css3的几个属性. 对于背景来说如果是单纯着一种颜色可以会单 ...

  5. CMD命令操作符

    cmd                   command的缩写,是windows环境下的虚拟DOS窗口,提供有DOS命令,功能强大 mstsc                 远程 inetmgr  ...

  6. TCP系列55—拥塞控制—18、其他拥塞控制算法及相关内容概述

    前面我们演示分析了100+个wireshark TCP实例,拥塞控制部分也介绍常见的拥塞处理场景以及4种拥塞撤销机制,但是我们一直使用的都是reno拥塞控制算法.实际上拥塞控制发展到今天已经有了各种各 ...

  7. grep文本处理工具

    grep是一款文本过滤工具,基于正则表达式进行模式匹配sed:stream editor 流编辑器awk:linux上实现为gawk,文本报告生成器(格式化文本)文本搜索工具,根据用户指定的模式,对目 ...

  8. 014 C语言文法定义与C程序的推导过程

  9. SQLSERVER 升级版本的方法

    1. 以SQLSERVER2014为例说明 SQLSERVER升级版本的方法, 也适用于evaluation 版本超过180天之后的处理. 2. 打开所有的应用 看到有一个 sqlserver2008 ...

  10. [51CTO]反客为主 ,Linux 成为微软 Azure 上最流行的操作系统

    反客为主 ,Linux 成为微软 Azure 上最流行的操作系统 [世界上唯一确定不变的就是世界在不停的变化] 三年前,微软云计算 Azure 平台 CTO Mark Russinovich 说有四分 ...