配置 数据库的读写分离:
需要注意的是 之前的配置都是在同一个文件编辑 新版本的将之前的文件定义成2个独立的配置文件即:
dbServer.xml 和 amoeba.xml 2个文件
操作系统 :centOS 6.5 64位
master服务器: 172.168.1.31
slave服务器: 172.168.1.32
amoeba服务器: 172.168.1.11
需要先安装Jdk
http://download.chinaunix.net/download/0001000/61.shtml
rpm -ivh jdk-8u31-linux-x64.rpm
配置环境变量
ln -s /usr/java/jdk1.8.0_31/ /usr/java/jdk1.8 配置软连接
[root@dr ~]# vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
[root@dr ~]# source /etc/profile
yum install java #需要安装java 环境
配置安装amoeba
mkdir /usr/local/amoeba
tar zxvf amoeba-mysql-binary-2.1.0-RC4.tar -C /usr/local/amoeba
cd /usr/local/amoeba/conf
配置文件修改: vi dbServer.xml 修改如下:默认密码是被注销的
默认只有配置一个服务器 需要复制粘贴一台服务器即可 并修改IP地址
<!-- 参与该pool负载均衡的poolName列表以逗号分割这里我填了2个,做读数据库的负载使用 (读为1:2)-->
<property name="poolNames">server1,server2, server2</property>
所谓定义轮询算法: server1,server2,server2 主数据库读一次 从数据库读2次 (同时主数据库还担任写入操作)
则 需要在 vi amoeba.xml 修改
修改配置信息:
默认端口为8066 IP地址为 127.0.0.1
在这里我修改成 1234 172.168.1.11 # IP地址也是本机的iP地址
<!-- 对外验证的用户名 �C帐号 密码 可以自己随便设置,网站程序连接使用>
定义的数据库 读取轮询 查询 (此定义 主数据库都能读写 从数据库只能读 )
如果有多台服务器 对应添加服务器即可 例 :
需要将 vi /usr/local/amoeba/bin/amoeba
128 改成 256
/usr/local/amoeba/bin/amoeba start & ####然后将 amoeba 设置成后台启动
net -ntpl
测试 (我这是使用所有权限)
测试之前先要保证amoeba-server有访问两个主从服务器 haitian 库的权限,在主从mysql上都执行:
grant all on haitian.* to root@'%' identified by '123.com';
如需要同步其他的库,在这里多加几个即可(必须一个一个加)
grant all on ceshi.* to root@'%' identified by '123.com';
grant all on test.* to root@'%' identified by '123.com';
#用户名密码要和前面配置的一致
flush privileges; 并更新数据库
mysql -uanchnet -panchnet -h 172.168.1.11 -P1234 (P是大写)
## 用户+ 用户密码+ 本机IP 对外端口
登陆的同一个数据库 : 读的是从数据库 写的是主数据库
登录上去后,为了测试读和写必须,先把mysql的主从复制停掉,才能更清楚地看出读写的服务器是哪台,
在从上使用stop slave;
登录到amoeba-mysql上,
然后执行写和读操作,查看写的是哪台服务器,读的是哪台服务器,实验结果显示:
测试步骤:
还没有停掉从同步之前,创建一个表:
>use haitian;
>create table zhang (id int(10) ,name varchar(10),address varchar(20));
然后在主从上各插入一条不同数据(供测试读的时候用),
在从上执行stop slave;
在主上插入:insert into zhang values('1','zhang','this_is_master');
在从上插入:insert into zhang values('2','zhang','this_is_slave');
接下来通过登录amoeba-mysql上来测试读写:
amoeba 服务器
mysql -uanchnet -panchnet -h 172.168.1.11 -P1234
>use haitian;
> select * from zhang; 只能查询到从服务器的数据
>insert into zhang values('2','zhang','this_is_slave');
在主数据库172.168.1.31 上能看到插入的数据,从服务器上没有, 在amoeba上也查询不到,这就说明
showtables; 查询新增数据
查询的是从服务器的数据, 写入的是主服务器的数据,
同时 将从服务器的 同步启动
>start salve;
然后在amoeba服务器上查询 都能看到所有的数据。