功能:

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日志。

mysql oneproxy_利用oneproxy实现mysql读写分离搭建笔记相关推荐

  1. Mysql一主多从和读写分离配置简记

    Mysql一主多从和读写分离配置简记 标签: mysql数据库服务器class数据库servermanager 2012-05-30 16:44 14981人阅读 评论(1) 收藏 举报  分类: 数 ...

  2. MySQL+Amoeba实现数据库主从复制和读写分离

    MySQL读写分离是在主从复制的基础上进一步通过在master上执行写操作,在slave上执行读操作来实现的.通过主从复制,master上的数据改动能够同步到slave上,从而保持了数据的一致性.实现 ...

  3. MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 转载

    http://heylinux.com/archives/1004.html MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 Mysql作为目前世界上使用最广泛 ...

  4. mysql基于mysql-proxy和amoeba的读写分离以及tcpdump+wireshark工具验证(上)

    mysql基于mysql-proxy和amoeba的读写分离 以及tcpdump+wireshark工具验证 [实验部署准备] 1,首先对后端节点部署主从关系. 2,然后前端MySQL-proxy对后 ...

  5. 深度解析串行并发并行,开发人员需彻底搞懂丨mysql|redis|skynet|协程|索引|读写分离|分布式锁|主从同步

    深度解析串行并发并行,开发人员需彻底搞懂 视频讲解如下,点击观看: 深度解析串行并发并行,开发人员需彻底搞懂丨mysql|redis|skynet|协程|索引|读写分离|分布式锁|主从同步丨C/C++ ...

  6. MySQL与Redis数据库结合——redis作为mysql的缓存服务器,实现读写分离(nginx+php+redis+mysql)

    文章目录 一.读写分离的背景 二.搭建nginx+php+redis+mysql 实验环境 实验 1.在server1上安装nginx+php 建立php和redis,mysql的连接 2.在serv ...

  7. 【MySql】mysql之主从复制和读写分离搭建

    [MySql]mysql之主从复制和读写分离搭建 文章目录 [MySql]mysql之主从复制和读写分离搭建 1主从复制 1.1MySql支持从复制类型 1.2主从复制的原理 1.3主从复制的工作过程 ...

  8. MySQL 基于maxscale服务构建数据读写分离

    目录 MySQL 基于maxscale服务构建数据读写分离 读写分离概述 读写分离原理 MySQL读写分离 案例拓扑 构建读写分离 构建思路 基于maxscale服务配置数据读写分离 配置mysql一 ...

  9. shardingsphere之sharding-proxy读写分离学习笔记

    shardingsphere之sharding-proxy读写分离学习笔记 引言 重要提示 演示环境 版本信息 代码示例和参考 读写分离简介 主从复制 主从复制的原理和流程 sharding-prox ...

最新文章

  1. AlexNet- ImageNet Classification with Deep Convolutional Neural Networks
  2. 数据结构与算法 整理笔记---二叉搜索树
  3. 百度地图根据经纬度获取地址
  4. android 分享qq微信朋友圈,H5微信JS-SDK实现分享朋友 朋友圈以及QQ自定义分享
  5. php error file_get_contents()
  6. chrome 下载东西 失败禁止_如何修复最常见的Google Chrome下载错误
  7. Selenium+IP爬虫刷新网页
  8. python和前端哪个好_web前端和python学哪个出来工资高?
  9. 在java中重写方法应遵循规则的包括_蘑菇街2017校园招聘笔试题
  10. P2002 消息扩散(图论 Tarjan缩点)
  11. 二叉树(1.二叉树的概念堆)
  12. 计算机硬盘170gb,假的:《最终幻想15》PC推荐配置GTX1080Ti+170GB硬盘为误传
  13. freemarker模板中long类型问题
  14. 如何选择最佳技术来加速文件传输—镭速
  15. lab值意义_lab是什么意思?
  16. 雨天在火车站台上撑伞会触电吗?
  17. 一条狗的死亡,引发3亿网友愤怒!希望这条黑科技 “汪星人” 能从小培养人的爱心 | 钛空智慧星球推荐
  18. 高位缩量横盘的实战价值
  19. 游戏建模师终于出手,“疯狂”让老板加薪
  20. 历时一个月,获奖名单公开!这次又挖到了哪些“宝藏”?

热门文章

  1. CLR Via CSharp读书笔记(29) - 混合线程同步构造
  2. 开发常见错误解决(1)注册.NET EnterpriseServices COM+组件,事务服务不可用
  3. 推荐 10 个实用型的热门开源项目,开发效率又能提升了!
  4. JavaFX SceneBuilder设置按钮的背景颜色
  5. 解决ubuntu16.E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?
  6. 使用JJWT实现JWT代码示例
  7. python3列表del 语句
  8. Python3赋值运算符
  9. Intel CPU内存屏障
  10. MySQL等值传播(low!就是一层窗户纸)