怎么建一个购物网站,各大网站名称,江苏建设集团公司官网,内容型网站的运营提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 目录
一、基于Amoeba读写分离
1.基于程序代码内部实现
2.基于中间代理层实现
三、操作步骤
1.在主机Amoeba上安装java环境
2.安装并配置Amoeba
3.配置Amoeba读写分离… 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档 目录
一、基于Amoeba读写分离
1.基于程序代码内部实现
2.基于中间代理层实现
三、操作步骤
1.在主机Amoeba上安装java环境
2.安装并配置Amoeba
3.配置Amoeba读写分离两个Slave读负载均衡
3.1在Master、Slave1、Slave2服务器中配置Amoeba的访问授权
master
slave1
slave2
3.2编辑amoeba.xml配置文件
3.3编辑dbServer.xml配置文件
3.4配置无误后启动Amoeba软件默认端口是TCP协议8066\
3.5在Client上进行访问测试
3.6然后可以通过代理访问MySQL
4.主服务器
5.分别在两台从服务器上 一、基于Amoeba读写分离 在实际的生产环境中如果对数据库的读和写都在同一个数据库服务器中操作无论是安全性高可用还是并发等各个方面都不能完全满足实际需求的因此一般来说都是通过主从复制的方式来同步数据再通过读写分离来提供数据的高并发负载能力这样的方案来进行部署。 简单来说读写分离就是只在主服务器上写只在从服务器上读基本的原理是让主数据库处理事务性查询而从数据库处理select查询数据库复制被用来把事务性查询导致的改变更新同步到集群中的从数据库。 二、 目前最常见的MySQL读写分离方案有两种
1.基于程序代码内部实现 在代码中根据selectinsert进行路由分类这类方法也是目前大型生产环境应用最广泛的优点是性能最好因为在程序代码中实现不需要增加额外的设备作为硬件开支缺点是需要开发人员来实现运维人员无从下手
2.基于中间代理层实现 代理一般位于客户端和数据库服务器之间代理服务器接到客户端请求后通过判断转发到后端数据库代表性程序
1mysql-proxy为mysql开发早期开源项目通过其自带的lua脚本进行SQL判断虽然是mysql的官方产品但是mysql官方不建议将其应用到生产环境。
2Amoeba变形虫该程序由java语言及逆行开发阿里巴巴将其应用于生产环境它不支持事物和存储过程。 MySQL Master IP192.168.200.111 MySQL Slave1 IP192.168.200.112 MySQL Slave2 IP192.168.200.113 MySQL Amoeba IP192.168.200.114 MySQL Client IP192.168.200.115 Amoeba变形虫项目开源框架于2008年发布一款Amoeba for mysql软件这个软件致力于mysql的分布式数据库前端代理层主要为应用层访问mysql的时候充当SQL路由功能并具有负载均衡高可用性SQL过滤读写分离可路由到相关的目标数据库可并发请求多台数据库通过Amoeba能够完成多数据源的高可用负载均衡数据切片的功能目前Amoeba已经在很多企业的生产线上使用。
三、操作步骤
1.在主机Amoeba上安装java环境
检查java环境—java version
查找Java路径—which Java
若版本不对 rm 删除Java 从新安装java 2.安装并配置Amoeba
3.配置Amoeba读写分离两个Slave读负载均衡
3.1在Master、Slave1、Slave2服务器中配置Amoeba的访问授权
master grant all on *.* to test192.168.200.% identified by 123.com;
flush privileges; slave1 grant all on *.* to test192.168.200.% identified by 123.com;
flush privileges; slave2
grant all on *.* to test192.168.200.% identified by 123.com;
flush privileges; 3.2编辑amoeba.xml配置文件
vim /usr/local/amoeba/conf/amoeba.xml
第一处 第二处 3.3编辑dbServer.xml配置文件 vim /usr/local/amoeba/conf/dbServers.xml
第一处 第二处 第三处 3.4配置无误后启动Amoeba软件默认端口是TCP协议8066\
/usr/local/amoeba/bin/amoeba start netstat -lnpt | grep 8066 netstat -anpt | grep 3306 3.5在Client上进行访问测试
# yum -y install mariadb mariadb-devel mysql -uamoeba -p123456 -h 192.168.200.114 -P 8066 3.6然后可以通过代理访问MySQL
在MySQL主服务器上创建一个表会自动同步到各个从服务器上然后关掉各个服务器上的Slave功能在分别插入语句测试。
4.主服务器
create database lsq
use lsq
create table student (id int(10),name varchar(10),address varchar(20)); 5.分别在两台从服务器上 5.1master
use lsq; insert into student values(1,Rich,this_is_master); 5.2 slave1
use lsq insert into student values(1,Rich,this_is_slave1); 5.3 slave2
use lsq insert into student values(1,Rich,this_is_slave2); 6.操作测试
1.1在客户机上第1次查询结果 1.2在客户机上第2次查询结果 1.3在客户机上第3次查询结果 2.测试写操作
客户端insert into student values (4,Rich,write_test) 查看select * from student 但在Client上查询不到最终只有在Master上才能看到这条语句内容说明写操作在master服务器上 由此验证已经实现了MySQL读写分离目前所有的写操作都在Master主服务器上用来避免数据的不同步所有的读操作都平分给了Slave从服务器用来分担数据库压力。
分别在两台从服务器上启用slave功能
现在在Client测试机上查看