环境介绍
mysql主服务器 192.168.254.1
mysql从服务器(1)192.168.254.2
mysql从服务器(2)192.168.254.3
amoeba代理服务器 192.168.254.4
测试服务器 192.168.254.5
此技术搭配主从复制,我的主服务器和从服务器都进行了主从复制
主从复制
MySQL:主从复制-基础复制(6)-CSDN博客https://blog.csdn.net/w14768855/article/details/133690486?spm=1001.2014.3001.5501
读写分离
在主服务器上的设置
到主服务器192.168.254.1上的mysql进行操作配置
grant all on *.* to zhangsan@'192.168.254.%' identified by '111222333';
对张三用户设置权限和密码
show grants for zhangsan@'192.168.254.%';
现在张三这个用户同时也同步至从服务器了,等会在代理服务器上就使用张三去登录mysql
在代理服务器上的设置
Java Archive 下载 - Java SE 6 (oracle.com)https://www.oracle.com/java/technologies/javase-java-archive-javase6-downloads.html#jdk-6u21-oth-JPR
下载 jdk-6u14-linux-x64.bin的jdk包和
Download amoeba-mysql-binary-2.2.0.tar.gz (amoeba)Amoeba is a proxy that sits between your client and DB server(s) that can monitor, analyze or transform their communication. written in java. 1.load…https://sourceforge.net/projects/amoeba/files/Amoeba%20for%20mysql/2.2.x/amoeba-mysql-binary-2.2.0.tar.gz下载amoeba的tar.gz包
可以使用网络下载工具或者在Linux里使用
wget https://sourceforge.net/projects/amoeba/files/Amoeba%20for%20mysql/2.2.x/amoeba-mysql-binary-2.2.0.tar.gz
把这俩包放入Linux
先安装java
yum -y remove java
这会删除你的java,如果你有java环境请慎重考虑
chmod +x jdk-6u14-linux-x64.bin
./jdk-6u14-linux-x64.bin
一直回车或者按空格
到这里输入yes,然后回车
回车一下
这就安装好了
mv jdk1.6.0_14/ /usr/local/jdk1.6
vi /etc/profile
最末尾追加
export JAVA_HOME=/usr/local/jdk1.6
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin/:$PATH:$HOME/bin
export AMOEBA_HOME=/usr/local/amoeba
export PATH=$PATH:$AMOEBA_HOME/bin
source /etc/profile
java安装完成
安装amoeba
mkdir /usr/local/amoeba
tar zxvf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/
chmod -R 755 /usr/local/amoeba/
/usr/local/amoeba/bin/amoeba
如果弹了amoeba start|stop 那就可以了,先不用开启,去配置文件
/usr/local/amoeba/conf/amoeba.xml 配置文件修改方法
vim /usr/local/amoeba/conf/amoeba.xml
修改里面的内容
30 <property name="user">amoeba</property>
31
32 <property name="password">123456</property>
115 <property name="defaultPool">master</property>
116
117 <property name="writePool">master</property> ##注意删除<!-- -->的注释
118 <property name="readPool">slaves</property>
这个是30和31行的,这里设置的账户密码等会外界访问连接的时候就用这个
把下面的注释去掉
/usr/local/amoeba/conf/dbServers.xml 文件修改方法
vim /usr/local/amoeba/conf/dbServers.xml
修改
25 <!-- mysql user -->
26 <property name="user">ly</property> ##该用户必须是上一步授权的用户
27
28 <!-- mysql password --> ##修改
29 <property name="password">123123</property> ##删除下一行的“-->”
44 <dbServer name="master" parent="abstractServer"> ##修改为master
45 <factoryConfig>
46 <!-- mysql ip -->
47 <property name="ipAddress">192.168.10.1</property> ##指定正确的master的ip
51 <dbServer name="slave1" parent="abstractServer"> ##修改为slave1
52 <factoryConfig>
53 <!-- mysql ip -->
54 <property name="ipAddress">192.168.10.2</property> ##指定slave1的ip地址
55 </factoryConfig>
56 </dbServer>
59 <dbServer name="slaves" virtual="true"> ##修改为slaves
65 <property name="poolNames">slave1</property> ##修改集群的成员名称用逗号隔开
这里写入刚刚主服务器给权限的那个用户和他的密码 ,注意把密码那里的注释去掉
第二个slave2是我自己加上的因为我有两个从服务器,如果我有更多的从服务器那么我还可以继续复制更多的,同时在最下面写好列表就行
/usr/local/amoeba/bin/amoeba start &
netstat -utpln |grep 8066
开启成功
测试
yum -y install mysql
mysql -uamoeba -p123123 -h 192.168.254.4 -P 8066
我们的代理的服务器并没有安装mysql,我连接的192.168.254.4代理服务器会把我读发送至从服务器,写发送至主服务器,这样的读写分离就成功了