amoeba mysql exists_Amoeba实现mysql读写分离

mysql写服务器A:192.168.1.121

mysql读服务器B:192.168.1.124

Amoeba服务器C:192.168.1.120

1、保证服务器A和服务器B的mysql服务器可以正常的运行

2、服务器A和服务器B分别授权给Amoeba可以访问其对应数据库

716ba008b467de76bcd06dac6fe0e085.png

3、安装Amoeba

1)java环境安装

Amoeba框架是基于Java SE1.5开发的,建议使用Java SE 1.5版本。目前Amoeba经验证在JavaTM SE 1.5和Java SE 1.6能正常运行。

Java SE 1.6下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u32-downloads-1594644.html

下载完成后执行sh jdk-6u32-linux-i586-rpm.bin开始安装,将会安装到/usr/java/jdk1.6.0_32目录。

4、Amoeba安装

mkdir /usr/local/amoeba

tar xzf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba

配置用户环境变量

vi ~/.bash_profile

PATH=$PATH:$HOME/bin:/usr/local/amoeba/bin

JAVA_HOME=/usr/java/jdk1.6.0_32

export JAVA_HOME

export PATH

source  ~/.bash_profile  #设置的变量立即生效

5、Amoeba for mysql配置(两台服务器的设置)

配置Amoeba for mysql的读写分离主要涉及两个文件:

1)/usr/local/amoeba/conf/dbServers.xml

#设置连接后台数据库信息

3306  #连接后端mysql服务器端口

jiang #连接的数据库

proxyuser #连接的用户

jiang #连接的密码

      #可以根据实际情况添加

3306

jiang

proxyuser

jiang

#连接的数据库IP地址

192.168.1.121

192.168.1.124

#定义dbpool,可以保护多个数据库,方便在设置读写的数据

#负载的调度算法

1

server1 #可以添加多个数据库

1

server2

2)/usr/local/amoeba/conf/amoeba.xml

找到入下几项进行修改

8806       #设置amobea登陆端口

root       #登陆的用户名

jiang  #登陆密码

修改如下几项,设置读写数据库,数据下的参数设置,与dbServers.xml有关

master

master

slave

6、测试使用的数据库为jiang,其内容如下

192.168.1.121数据库信息

mysql> use jiang;

mysql> select * from personal_info;

+-------+---------------+--------------+----------+---------------------+

| pi_id | pi_name       | pi_tel       | pi_qq    | pi_email            |

+-------+---------------+--------------+----------+---------------------+

|     1 | 192.168.1.121 | 1586544556   | 42423423 | test@memcached.com  |

|     2 | mysqlproxy    | 111111111111 | 22222222 | test@mysqlproxy.com |

+-------+---------------+--------------+----------+---------------------+

192.168.1.124数据库信息

mysql> use jiang;

mysql> select * from personal_info;

+-------+---------------+------------+----------+--------------------+

| pi_id | pi_name       | pi_tel     | pi_qq    | pi_email           |

+-------+---------------+------------+----------+--------------------+

|     1 | 192.168.1.124 | 1586544556 | 42423423 | test@memcached.com |

+-------+---------------+------------+----------+--------------------+

执行远程连接

[root@amoeba bin]# ./amoeba start &             #启动amoeba

mysql -uroot -pjiang -h 192.168.1.120 -P 8806   #远程连接amoeba

#查询数据库信息

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| jiang              |

| test               |

+--------------------+

mysql> use jiang ;

mysql> select * from personal_info;       #读取的数据为192.168.1.124上的数据

+-------+---------------+------------+----------+--------------------+

| pi_id | pi_name       | pi_tel     | pi_qq    | pi_email           |

+-------+---------------+------------+----------+--------------------+

|     1 | 192.168.1.124 | 1586544556 | 42423423 | test@memcached.com |

+-------+---------------+------------+----------+--------------------+

接下来,插入数据

mysql>insert into personal_info values(3,'amoeba','amoebatest',44333333,'amoeba@test.com');

再次查看,还是没有插入的数据,其原因在于select执行的是读操作,所以一直会读取192.168.1.124上的数据,而写数据(insert,update,delete)都在192.168.1.121上。所以查看不了数据

mysql> use jiang;

mysql> select * from personal_info;

+-------+---------------+------------+----------+--------------------+

| pi_id | pi_name       | pi_tel     | pi_qq    | pi_email           |

+-------+---------------+------------+----------+--------------------+

|     1 | 192.168.1.124 | 1586544556 | 42423423 | test@memcached.com |

+-------+---------------+------------+----------+--------------------+

接下来,直接登录192.168.1.121查看数据是否发生了变化。如下所示,就可以看见插入的数据。

mysql> use jiang;

mysql> select * from personal_info;

+-------+---------------+--------------+----------+---------------------+

| pi_id | pi_name       | pi_tel       | pi_qq    | pi_email            |

+-------+---------------+--------------+----------+---------------------+

|     1 | 192.168.1.121 | 1586544556   | 42423423 | test@memcached.com  |

|     2 | mysqlproxy    | 111111111111 | 22222222 | test@mysqlproxy.com |

|   3 | amoeba        | amoebatest   | 44333333 | amoeba@test.com    |

+-------+---------------+--------------+----------+---------------------+

总结:如上所示,就完成了读写分离,那么在现实环境中,肯定要保障两台数据库的数据同步。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值