时间:2021-07-01 10:21:17 帮助过:24人阅读
1、基于程序代码内部实现
在代码中根据select、 insert 进行路由分类,这种方法目前生产环境中应用最广泛。优点是性能较好,因为在程序代码中实现,不需要增加额外的设备作为硬件开支。缺点是需要开发人员能来实现,运维人员无从下手。 2、基于中间代理层实现 代理一般位于客户端和服务器之间,代理服务器接到客户端请求后通过判断后转发到后端数据库。 常见的代理服务器: MySQL-Proxy Amoeba 实验环境: amoeba: 192.168.200.114 master:192.168.200.111 slave1:192.168.200.112 slave2:192.168.200.113 client:192.168.200.123 前提是主从服务器支持主从复制 配置amoeba服务器: 1.安装amoeba软件 准备好jdk-6u14-linux-x64.bin文件 2.给与该文件执行权限 chmod +x jdk-6u14-linux-x64.bin 3.执行该文件 ./jdk-6u14-linux-x64.bin 执行后会进入阅读模式,一直按回车,提示是否安装是输入yes 4.将文件移动 mv jdk1.6.0_14/ /usr/local/jdk1.6 5.修改配置文件 vim /etc/profile 在最后末行添加以下信息: export JAVA_HOME=/usr/local/jdk1.6显示1.7的版本
7.删除java文件
rm -rf /usr/bin/java
8.重新加载文件信息
source /etc/profile
9.再次查看版本信息
java -version
10.安装配置amoeba
事先准备amoeba包
amoeba-mysql-binary-2.2.0.tar.gz
11创建文件目录
mkdir /usr/local/amoeba
解包:
tar xf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/
12.给与755的权限
chmod -R 755 /usr/local/amoeba/
13.执行amoeba
/usr/local/amoeba/bin/amoeba
#出现amoeba start|stop证明配置没有问题
在MySQL数据库服务器上对amoeba授权:
1.在每一台服务器上登录数据库执行:
grant all on *.* to ‘admin‘@‘192.168.200.%‘identified by‘123123‘;
2.刷新授权表:
flush privileges;
在amoeba服务器上编辑amoeba.xml配置文件,设置读写分离:
cd /usr/local/amoeba/conf/
cp amoeba.xml amoeba.xml.origin
vim amoeba.xml
设置一个用户,后面的客户端访问时使用
设置登录密码
将注释去掉,设置默认的服务器池||写服务器池||读服务器池
在amoeba服务器上编辑配置文件,设置登录MySQL服务器的用户及密码、MySQL服务器节点的IP地址、负载均衡的算法:
cd /usr/local/amoeba/conf/
cp dbServers.xml dbServers.xml.origin
vim dbServers.xml
默认端口为3306,设置访问MySQL数据库的所用的用户名和密码
依次为:主MySQL服务器的名称和IP地址
从MySQL服务器1的名称和IP地址
从MySQL服务器2的名称和IP地址
与主从MySQL服务器对应
设置readpool
负载均衡算法值为1,轮询算法
前面定义的服务器节点名
测试环境:
启动amoeba
1.检查配置是否出错
/usr/local/amoeba/bin/amoeba
amoeba start|stop表示没出错
2.起服务
/usr/local/amoeba/bin/amoeba &
3.检查端口8066
netstat -lnpt|grep java
MySQL基于Amoeba实现读写分离
标签:sel 增加 代理服务 默认端口 home 复制 path slave 内部实现