您的位置:首页 > 数据库 > MySQL

MYSQL读写分离

2016-05-24 11:29 369 查看

读写分离

读写分离读写分离的分类中间件软件实验需求实验详细步骤amoeba软件

读写分离的分类

垂直扩展一台服务器跑的业务达到瓶颈了,就增加一台服务器,还是不够也在增加一台服务器,这就是垂直扩展水平扩展当一服务器达到瓶颈以后,则增加够多的服务器集群来共同的来完成这一件事情就是水平扩展特殊水平扩展=读写分离当一服务器达到瓶颈以后,则增加够多的服务器集群,从中拿出一个服务器专门写的操作、其他的服务器则专门 用用户读取的操作mysql不支持读写分离;需要使用一个软件中间件中间件:分布式应用软件借用的在不同技术之间共享资源的一种程序例如java写的程序直接挂载到web上去使用,因为web不是很好支持java程序,如果想两者之间进行很好的数据交流通信;需要在两者之间加上中间件软件中间件软件: TUXEDO WEBSHPERE WEBLOGIC(目前主流) tomact例如:公司开放的软件能正常的运行在网站上就需要中间件的软件才能正常使用读写分离原理当用户访问连接mysql的连接到的MYSQL,想做读写的操作的时候,而是连接到中间件的软件上,中间件软件上。在中间件软件在判断用户的这个操作是读取的操作还是写的操作,如果是读取的操作则直接交给读取的mysql服务器;如是是写的操作也把请求交给写的mysql服务器上;这样就数据库读写分离了。中间件:分布式应用中,用来在不同技术之间共享资源的服务器。分布式:将一个服务器处理不了的数据,交给多个服务器进行处理

中间件软件

mysql proxy 官方版本支持读写分离、故障转移、不支持海量数据如果想使用mysql proxy 这软件的时候;必须把操作写入LUAJI脚本上才能执行,使用复杂,atlas 读写分离、支持扩展、支持ip地址过滤性能差: 正常的用户去访问mysql服务器和通过proxy软件相比proxy性能会降低30-35%响应时间:跟正常相比速度要1.5-2倍不支持配置参数的动态加载:比如修改网站参数、必须停机加载;比如7X24的网站就不能使用amoeba软件开源读写分离、水平分割原本在一张表中存的是大量数据,把一张表拆分;可以分别的把每个字段里面的内容存放左不同的主机上,例如:一张表把name的字段的数据存在A1的数据上供用户来访问;info的字段又放在另外一个A2上供用户访问读取;用户想访问info字段里面的数据的时候,关联数据的是通过SQL路由来查找原来一张表里面的数据的,从而降低服务器的性能垂直分割以及数据整合SQL路由性能和响应时间损失较小软件开发了陈思儒,阿里巴巴目录阿里使用的COBAR分离中间件软件,半开源

实验需求

需要三台计算机两台mysql主机实现主从同步;保持数据一致一台主机安装amoeba(阿米吧)首先在A和B主机上安装MYSQL软件;在到C主机上安装mysql客服端实验详细步骤
启动登录amoeba服务[root@zhaolu_3 bin]# vim amoeba58行 DEFAULT_OPTS=”-server -Xms256m -Xmx256m -Xss256k” 不修改服务不能启动[oot@zhaolu_3 bin]# nohup bash -x /usr/local/amoeba/bin/amoeba & 放入后台执行安装mysql[root@localhost ~]# mysql -u root -p -h 192.168.117.154 -p 9000 #ip地址就是本机的ip地址测试mysql> usr test;mysql> create table a1 (id int , name char(20));mysql> insert into a1 values (‘slave’);mysql> select * from a1; 查看是否有数据在主mysql ――> mysql> use test;mysql> create table a1 (id int , name char(20));mysql> insert into a1 values (‘master’);mysql> stop slave;首先在从服务先关闭同步然后在主服务器中创建一个表,在表中插入数据然后在从服务器test库中创建一个表里面插入数据、登录amoeba[root@localhost ~]# mysql -u root -p -h 192.168.117.154 -p 9000 #ip地址就是本机的ip地址mysql> select * from al; 都查看几次看是否有轮循的效果,比如数据库读的压力大,写的压力小;为了降低数据库的读的压力;可以在amoeba的主配置文件中修改设置写的服务器也可以读取操作、比如主服务器上读一次,在到从服务器上读取3次,从而就可以减轻一点读取服务器的压力[root@zhaolu_3 amoeba]# vim /usr/local/amoeba/conf/amoeba.xml[root@zhaolu_3 amoeba]# ps axu | grep amoebaroot 29519 1.0 7.3 1075540 55608 pts/1 Sl 06:57 0:08 /amoeba/jdk/bin/java -server -Xms256m -Xmx256m -Xss256k -Damoeba.home=/usr/local/amoeba -Dclassworlds.conf=/usr/local/amoeba/bin/amoeba.classworlds -classpath /usr/local/amoeba/lib/classworlds-1.0.jar org.codehaus.classworlds.Launcher[root@zhaolu_3 amoeba]# kill -9 29519 杀死进程以后[root@zhaolu_3 ~]# nohup bash -x /usr/local/amoeba/bin/amoeba 重启服务[root@zhaolu_3 amoeba]# ps axu | grep amoeba 查看一下进程是否已经产生[root@zhaolu_3 amoeba]# mysql -uroot -p -h 192.168.117.154 -P 9000mysql> use test; 计入test数据库mysql> select * from a1; 多查询几次看是否有轮询3次读的操作在轮询一次写的操作[root@localhost ~]# vim /usr/local/amoeba/conf/amoeba.xml 进入配置文件中修改153server1,server2,server2,server2意思就是说轮询三次读取的操作,在轮询一个写的操作杀死进程本文出自 “枕戈待旦” 博客,转载请与作者联系!
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: