1. Prepare three servers is my version of centos7
Do MySQL master-slave state can refer to
https://www.cnblogs.com/chenxiaodou/articles/11993283.html
Amoeba server to grant on a master-slave MySQL server can read and write operation of a user
1
2
|
grant all on *.* to
'amoeba'
@
'192.168.18.%'
identified by
'123'
;
flush privileges;
|
Amoeba Amoeba is installed on the server
1. Install jdk version to install version 1.6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
将JDK的二进制包安装在此路径下
cd
/usr/local
给予权限
chmod
+x jdk-6u14-linux-x64.bin
在当前路径下开始执行
./ jdk-6u14-linux-x64.bin
一直按回车 直到遇见让你输入
yes
or no 输入
yes
即可回车
更改jdk安装目录的名字
mv
jdk1.6.0_14 jdk1.6
修改环境变量 在末尾加入以下内容
vim
/etc/profile
------------------------------------------------------------
export
AMOEBA=
/usr/local/amoeba
export
JAVA_HOME=
/usr/local/jdk1
.6
export
PATH=$PATH:$JAVA_HOME
/bin
:$AMOEBA
/bin
------------------------------------------------------------
使增加的变量生效
source
/etc/profile
|
Download the installation package Ameoba
1
2
|
cd
/usr/local
wget http:
//nchc
.dl.sourceforge.net
/project/amoeba/Amoeba
%20for%20mysql
/2
.x
/amoeba-mysql-binary-2
.1.0-RC5.
tar
.gz
|
Create an installation directory for Amoeba
1
2
3
4
5
6
|
mkdir
/usr/local/amoeba
cd
/usr/local/amoeba
在当前路径下下载amoeba
wget http:
//nchc
.dl.sourceforge.net
/project/amoeba/Amoeba
%20for%20mysql
/2
.x
/amoeba-mysql-binary-2
.1.0-RC5.
tar
.gz
解压Ameoba的安装包
tar
-zxf amoeba-mysql-binary-2.1.0-RC5.
tar
.gz
|
Profile dbServers.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
cd
/usr/local/ameoba/conf
vim dbServers.xml
-----------------------------------------------------------------------------------------
……
<!-- mysql port -->
<property name=
"port"
>3306<
/property
>
<!-- mysql schema -->
<property name=
"schema"
>
test
<
/property
>
<!-- mysql user -->
<property name=
"user"
>amoeba<
/property
>
//MySQL
主从中给予权限的用户
<!-- mysql password-->
<property name=
"password"
>123<
/property
>
//MySQL
主从中给予权限的用户的密码
……
<dbServer name=
"server1"
parent=
"abstractServer"
>
<factoryConfig>
<!-- mysql ip -->
<property name=
"ipAddress"
>192.168.18.141<
/property
>
//MySQL
主的IP地址
<
/factoryConfig
>
<
/dbServer
>
<dbServer name=
"server2"
parent=
"abstractServer"
>
<factoryConfig>
<!-- mysql ip -->
<property name=
"ipAddress"
>192.168.18.142<
/property
>
//MySQL
从的IP地址
<
/factoryConfig
>
<
/dbServer
>
<dbServer name=
"slave"
virtual=
"true"
>
<poolConfig class=
"com.meidusa.amoeba.server.MultipleServerPool"
>
<!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->
<property name=
"loadbalance"
>1<
/property
>
<!-- Separated by commas,such as: server1,server2,server1 -->
<property name=
"poolNames"
>server2<
/property
>
<
/poolConfig
>
<
/dbServer
>
|
编辑ameoba,.xml文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
cd
/usr/local/ameoba/conf
vim ameoba.xml
----------------------------------------------------------------------------------
……
<property name=
"authenticator"
>
<bean class=
"com.meidusa.amoeba.mysql.server.MysqlClientAuthenticator"
>
<property name=
"user"
>jave<
/property
>
<property name=
"password"
>123<
/property
>
<property name=
"filter"
>
<bean class=
"com.meidusa.amoeba.server.IPAccessController"
>
<property name=
"ipFile"
>${amoeba.home}
/conf/access_list
.conf<
/property
>
<
/bean
>
<
/property
>
<
/bean
>
<
/property
>
……
<queryRouter class=
"com.meidusa.amoeba.mysql.parser.MysqlQueryRouter"
>
<property name=
"ruleLoader"
>
<bean class=
"com.meidusa.amoeba.route.TableRuleFileLoader"
>
<property name=
"ruleFile"
>${amoeba.home}
/conf/rule
.xml<
/property
>
<property name=
"functionFile"
>${amoeba.home}
/conf/ruleFunctionMap
.xml<
/property
>
<
/bean
>
<
/property
>
<property name=
"sqlFunctionFile"
>${amoeba.home}
/conf/functionMap
.xml<
/property
>
<property name=
"LRUMapSize"
>1500<
/property
>
<property name=
"defaultPool"
>server1<
/property
>
<property name=
"writePool"
>server1<
/property
>
<property name=
"readPool"
>slave<
/property
>
<property name=
"needParse"
>
true
<
/property
>
<
/queryRouter
>
--------------------------------------------------------------------------------
|
启动amoeba
1
2
|
cd
/usr/local/amoeba/bin
.
/amoeba
start 出现以下字样
|
表示启动成功
把Amoeba的终端再开启一台
关闭防火墙 SELinux 安装数据库
1
2
3
|
systemctl stop firewalld
setenforce 0
yum -y
install
mariadb mariadb-server
|
登录amoeba测试读写分离效果
1
2
3
4
5
6
7
|
mysql -ujave -p123 -h192.168.189.167 -P8066
create database ceshi charset utf8;
可以在MySQL主从数据库中查看是否存在这个数据库
在从的MySQL数据库中停掉从的同步
stop slave;
在amoeba的服务器上再创建一个数据库
这时再分别去主从数据库上查看 只有主的可以看到刚刚创建的数据库 而从上看不到 这样就实现了读写分离
|