实现mysql 数据集群的读写分离之 amoeba

您所在的位置:网站首页 mysql读写分离实现方式 实现mysql 数据集群的读写分离之 amoeba

实现mysql 数据集群的读写分离之 amoeba

2024-07-16 13:10:58| 来源: 网络整理| 查看: 265

服务器配置:

amoeba    :192.168.240.130

master写服务器:192.168.240.129

slave读服务器 :192.168.240.128

mysql主从配置............略,可参照:http://752030200.blog.51cto.com/8936921/1853460

Amoeba数据库代理

前提条件应该把所有数据库节点的密码进行统一,并允许将要配置的amoeba的IP进行连接。

以下说明和配置文件信息引用自https://my.oschina.net/u/1169079/blog/390726 并自己在dbServer.xml和amoeba.xml部分做注释,用蓝色字体标识

mysql> GRANT ALL PRIVILEGES ON *.* TO 'amoeba'@'192.168.240.130' IDENTIFIED BY 'amoeba' WITH  GRANT OPTION;

mysql> FLUSH  PRIVILEGES;

Amoeba作为数据库代理,以中间件的形式存在,拓扑图如下所示:

实现mysql 数据集群的读写分离之 amoeba_mysql

图片来源于Amoeba官网。

目前Amoeba for Mysql最新版本为amoeba-mysql-3.0.5-RC-distribution.zip。

安装过程很简单,只需要将zip压缩包解压至/usr/local/即可。若没有安装zip和unzip,可以通过centOS yum安装。

[root@chenllcentos ~]# yum -y install zip unzip

接下来,解压Amoeba压缩包。

[root@chenllcentos ~]# unzip amoeba-mysql-3.0.5-RC-distribution.zip

[root@chenllcentos ~]# cp -rf amoeba-mysql-3.0.5-RC /usr/local

用 Amoeba 实现 mysql 读写分离,只需要分别对dbServers.xml和amoeba.xml两个配置文件进行配置即可,这有利于系统扩展和维护。

首先是配置dbServers.xml,主要是配置真实Mysql数据库连接信息。

   

 

   

        ${defaultManager}

        64

        128

 

       

       

        3306

 

       

       

        test

 

       

        root

       

        root

   

 

   

        500

        500

        1

        600000

        600000

        true

        true

        true

   

    

   

       

       

        192.168.240.129

   

 

        

   

       

       

        192.168.240.128

   

 

   

   

       

        1

 

       

        slave

   

可以看出,对dbServers.xml文件的配置,主要就是对dbServer节点的配置。其中,readPool节点需要特别注意,因为Amoeba实现读写分离就是根据它来实现。

接下来是 amoeba.xml,主要是配置代理数据库连接信息。

 

 

   

 

       

       

           

            8066

 

           

           

            192.168.240.130             

           

               

                    128

                    64

               

           

 

           

               

                  

                    amoeba

                          

                    amoeba

                         

                   

                       

                            ${amoeba.home}/conf/access_list.conf

                   

                       

                   

               

           

 

       

 

       

 

           

            500

 

           

            utf8

             

   

            60

       

 

   

 

   

   

       

            com.meidusa.toolkit.net.AuthingableConnectionManager

       

   

 

       

   

        ${amoeba.home}/conf/dbServers.xml

                         

   

 

   

       

           

                ${amoeba.home}/conf/rule.xml

                ${amoeba.home}/conf/ruleFunctionMap.xml

           

       

             

        ${amoeba.home}/conf/functionMap.xml

        1500

           

        master

             

        master

              

        readPool

     读写分离呢,是吧 -->

        true

   

在amoeba.xml中,主要完成连接信息和SQL路由配置。在queryRouter节点中,通过配置writePool和readPool可以实现读写分离。

配置完成后,重启Amoeba。

[root@chenllcentos ~]# /usr/local/amoeba-mysql-3.0.5-RC/bin/shutdown

[root@chenllcentos ~]# /usr/local/amoeba-mysql-3.0.5-RC/bin/launcher

至此,Mysql主从复制和使用Amoeba实现数据库读写分离全部配置完成。

启动amoeba:

[root@chenllcentos ~]# chmod +x /usr/local/amoeba-mysql-3.0.5-RC/bin/launcher

[root@chenllcentos ~]# /usr/local/amoeba-mysql-3.0.5-RC/bin/launcher&

启动amoeba需要将amoeba进程丢到后台,要不会一直停留在前台,做不了其他事。这时可以用CTRL+Z 暂停amoeba进程,再输入bg命令进行后台继续运行。

读写分离验证

思 路:在不进行主从备份的情况下,登录amoeba进行新建一个数据库,这时应该只要master写服务器存在新建的数据库,从是没有的。然后登录slave服务器在上面新建一个数据库AA,然后在amoeba上进程use AA 是可以切换数据库的,但是是不能操作的。

登录amoeba :

[root@chenllcentos ~]mysql -u root -p root -h192.168.240.130 -P8066

实现mysql 数据集群的读写分离之 amoeba_mysql_02

登录master

实现mysql 数据集群的读写分离之 amoeba_mysql_03

登录slave,可以看到slave 上并没有刚才新建master数据库。

实现mysql 数据集群的读写分离之 amoeba_mysql_04

现在登录slave节点,并新建一个slave数据库

实现mysql 数据集群的读写分离之 amoeba_mysql_05

登录amoeba查看,是否有slave这个数据库,再试试是否可以切换到slave这个数据库:

实现mysql 数据集群的读写分离之 amoeba_mysql_06

从上面可以看到,虽然show不出slave数据库 ,但是可以切换到slave数据库。虽然看起来有点矛盾,因为show也算是查询的一种操作,却没有从slave节点上显示slave数据库,这点应该是dbServer.xml里将master写服务器设置,而不是将slave读服务器设为默认造成的。

至此目的算是达到了。

附两个实验中遇到的错误信息及解决方法:

1.提示:ERROR:JAVA_HOME environment variable is not set

[root@chenllcentos ~]dir /usr/java/    看看是什么版本号,我的是jdk1.8.0_91,没有就去下载安装吧。要1.5以上http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

[root@chenllcentos ~]vim /etc/profile       在文件最末添加以下三行。

JAVA_HOME=/usr/java/jdk1.8.0_91/PATH=$PATH:JAVA_HOME/bin export JAVA_HOME PATH 

2.启动时提示:

The stack size specified is too small, Specify at least 228k

Error: Could not create the Java Virtual Machine.

Error: A fatal exception has occurred. Program will exit

从错误文字上看,应该是由于stack size太小,导致JVM启动失败

其实Amoeba已经考虑到这个问题,并将JVM参数配置写在属性文件里。现在,让我们通过该属性文件修改JVM参数。

修改jvm.properties文件JVM_OPTIONS参数。

[root@chenllcentos ~]# vi /usr/local/amoeba-mysql-3.0.5-RC/jvm.properties

将内容:

JVM_OPTIONS="-server -Xms256m -Xmx1024m -Xss196k -XX:PermSize=16m -XX:MaxPermSize=96m"

替换为:

JVM_OPTIONS="-server -Xms1024m -Xmx1024m -Xss256k -XX:PermSize=16m -XX:MaxPermSize=96m"

2.可以登录amoeba却不可能做任何操作,哪怕只是show databases; 也会提示出错信息:ERROR 1044 (42000): poolName=multiPool, no valid pools 或其他

查看amoeba安装目录下的日志文件root.log,发现在大量的error:Access denied for user 

'root'@'192.168.240.130' (using password: YES),hashCode=1496580638,由此可以推断是amoeba连接上mysql服务节点没有权限而造成拒绝访问。

解决办法是更新各mysql节点中amoeba.xml文件里的对应的用户和密码信息。

mysql> update user set password=password("root") where user="root";

这里是因为amoeba的登录信息和mysql的节点是一致的,所以就更新root的信息了,其实还是有必要让amoeba的帐号区别于mysql的帐号的,这样也方便管理。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭