文档章节

mysql集群(二)

我心中有猛狗
 我心中有猛狗
发布于 2016/05/30 18:19
字数 852
阅读 63
收藏 8

4、mysql-proxy完成负载均衡与读写分离

        1、基于程序代码内部实现

            在代码中对select操作分发到从库;其它操作由主库执行;这类方法也是目前生产环境应用最广泛,知名的如DISCUZ X2。优点是性能较好,因为在程序代码中实现,不需要增加额外的设备作为硬件开支。缺点是需要开发人员来实现,运维人员无从下手。

        2、基于中间代理层实现

            代理一般是位于客户端和服务器之间,代理服务器接到客户端请求后通过判断然后转发到后端数据库。在这有两个代表性程序

            

            mysql-proxy:mysql-proxy为mysql开源项目,通过其自带的lua脚本进行sql判断,虽然是mysql官方产品,但是mysql官方并不建议将mysql-proxy用到生产环境。  
             amoeba:由陈思儒开发,作者曾就职于阿里巴巴,现就职于盛大。该程序由java语言进行开发,目前只听说阿里巴巴将其用于生产环境。另外,此项目严重缺少维护和推广(作者有个官方博客,很多用户反馈的问题发现作者不理睬) 
            经过上述简单的比较,通过程序代码实现mysql读写分离自然是一个不错的选择。但是并不是所有的应用都适合在程序代码中实现读写分离,像大型SNS、 B2C这类应用可以在代码中实现,因为这样对程序代码本身改动较小;像一些大型复杂的java应用,这种类型的应用在代码中实现对代码改动就较大了。所 以,像这种应用一般就会考虑使用代理层来实现。

            实战: mysql 读写分离  ,mysql_proxy实现

        负载均衡

            cd /usr/src

            wget http://downloads.mysql.com/archives/get/file/mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz

            tar zxvf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz

            解压后,该目录包含已经编译好的二进制文件。

            mv mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz /usr/local/mysql-proxy

        1、利用mysql_proxy实现负载均衡

            执行mysql_proxy

            cd /usr/local/mysql-proxy

            ./bin/mysql-proxy -P 192.168.1.67:4040 --proxy-backend-addresses=192.168.1.67:3306 --proxy-backend-addresses=192.168.1.83:3306 --daemon

        2、连接mysql_proxy,用mysql客户就可以,因为proxy是mysql的前端代理

            注意proxy的端口是4040

            mysql -h “proxy的IP” -P 4040 -u username -p password

            

            cd /usr/local/mysql-proxy

            ./bin/mysql-proxy --proxy-backend-addresses=192.168.1.67:3306 --proxy-read-only-backend-addresses=192.168.1.83:3306 --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua --daemon

            简写:

            ./bin/mysql-proxy -b 192.168.1.67:3306 -r 192.168.1.83:3306 -s /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua --daemon

            测试

            因为67和83互为主从,想测试读写分离,先把67服务器上的stop slave;

            再在83服务器db_name(数据库),test(表)insert into test (name) values('a');

            再执行select * from test;,在67上没有,83上有;

            先把rw-splitting.lua里面的

            min_idle_connections = 1;#默认4

            max_idle_connections = 2;#默认8

            效果预览,最右侧连接到的就是67服务器

            再在最右侧的83读服务器写入insert into test (name) values('e');

            再在67和83服务器上select * from test;

                       

同时存在id为17的数据,说明是从67写服务器写入的数据,在同步到83读服务器上(因为id为16的数据是从读服务器写入的,没同步到67的写服务器上)

© 著作权归作者所有

共有 人打赏支持
我心中有猛狗
粉丝 3
博文 102
码字总数 35858
作品 0
石家庄
私信 提问
加载中

评论(2)

我心中有猛狗
我心中有猛狗

引用来自“风中蜡烛”的评论

使用mycat更方便啊
确实,mycat更成熟完善,自己走一遍可以多了解一下啦
风中蜡烛
风中蜡烛
使用mycat更方便啊
MySQL主从复制与高可用架构方案与项目环境准备_MySQL高可用复制与分布式集群架构01

MySQL高可用复制与分布式集群架构之01:MySQL主从复制与高可用架构方案与项目环境准备 视频教程学习地址 http://edu.51cto.com/course/14238.html 数据库学习专用QQ群:336282998、189070296...

风哥Oracle
2018/08/25
0
0
Heartbeat+MySQL+NFS 实现高可用(HA)的MySQL集群

目录 一、环境准备 二、拓扑准备 三、安装与配置heartbrat 四、配置NFS服务 五、安装与配置mysql 六、crm配置资源 一、环境准备 1.操作系统 redhat 5.4 i386 位系统 2.软件环境 mysql-5.5.20...

feilong0663
2018/07/03
0
0
完全分布式(四)Sqoop 安装部署及操作示例

本次采用完全分布式系列的hadoop集群,安装配置过程详细参见 完全分布式集群(二)hadoop2.6.5安装部署 Hive在分布式集群上的部署配置参见 完全分布式集群(三)hive-2.1.1安装部署 检查本地...

PeakFang-BOK
2018/10/12
0
0
跟王老师学MySQL:安装MySQL

跟王老师学MySQL:安装MySQL 主讲教师:王少华 QQ群号:483773664 学习目标 下载和安装MySQL 一、下载MySQL (一)下载地址: http://dev.mysql.com/downloads/ (二)、Mysql 各个版本区别:...

imentors
2016/06/30
0
0
对于服务器集中式管理的一些理解与应用

帐号管理:ldap 集群+ssl 监控:nagios+check_mk,cacti,zibbix (模板不太好整) 操作系统初始化安装:cobbler(redhat,centos,debian都支持),通过mac地址可以指定服务器的ip地址,服务器名...

酒瓶不倒
2013/11/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

深入理解Spring MVC 思想

目录 一、前言 二、spring mvc 核心类与接口 三、spring mvc 核心流程图 四、spring mvc DispatcherServlet说明 五、spring mvc 父子上下文的说明 六、springMVC-mvc.xml 配置文件片段讲解 ...

呵呵哒灬
46分钟前
1
0
数据库技术-Mysql主从复制与数据备份

数据库技术-Mysql 主从复制的原理: MySQL中数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以“事件”...

须臾之余
昨天
12
0
Git远程仓库——GitHub的使用(一)

Git远程仓库——GitHub的使用(一) 一 、 Git远程仓库 由于你的本地仓库和GitHub仓库之间的传输是通过SSH加密的,所以需要一下设置: 步骤一、 创建SSH key 在用户主目录下,看看有没有.ss...

lwenhao
昨天
2
0
SpringBoot 整合

springBoot 整合模板引擎 SpringBoot 整合Mybatis SpringBoot 整合redis SpringBoot 整合定时任务 SpringBoot 整合拦截器...

细节探索者
昨天
1
0
第二个JAVA应用

第二个JAVA应用 方法一:配置文件: # cd /usr/local/tomcat/conf/# vim server.xml</Host> <Host name="www.wangzb.cc" appBase="/data/wwwroot/www.wangzb.cc" //引用所......

wzb88
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部