mysql基于amoeba如何实现读写分离-创新互联

下文给大家带来关于mysql基于amoeba如何实现读写分离,感兴趣的话就一起来看看这篇文章吧,相信看完mysql基于amoeba如何实现读写分离对大家多少有点帮助吧。

成都创新互联是专业的聂荣网站建设公司,聂荣接单;提供网站设计、成都做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行聂荣网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

环境:

    主机A( huangzp2):172.16.115.157

    主机B( huangzp3):172.16.115.100

    主机C( huangzp4):172.16.115.87

说明:

  • 依赖于主从结构

  • 需要中间件(连接两个独立的应用程序或独立的系统,即使没有相同的接口,也能为他们交换数据)实现,如tomcat、weblogic、数据库中间件

  • mysql proxy,支持读写分离、负载均衡、故障转移,缺点:性能差,不支持大数量转发,需要用到lua脚本

  • atlas,性能较差,相应时间较长,不支持动态参数的配置加载,即先关闭数据库,不适用在线业务;

  • amoeba,阿里研发和使用的,除了支持读写分离,也支持数据库分区、分表操作,对数据库性能较小,因为研发工程师跳槽至盛大,怕数据泄露,不用

  • cobar,阿里现在在使用的中间件,半开源软件,有较多限制)

1. 主从机器AB上安装mysql和mysql-server,修改配置文件和授权、查看状态

   yum install -y mysql mysql-server

  主上A:修改配置文件vim /etc/my.cnf,重启,授权(所有权限,更方便)、状态

 mysql基于amoeba如何实现读写分离

   grant all privileges on *.* to 'silen'@'%' identified by '123456';

   说明:

 mysql基于amoeba如何实现读写分离

 mysql基于amoeba如何实现读写分离

   从上B:修改配置文件vim /etc/my.cnf,重启,填写Master.info信息、开启slave,查看状态

 mysql基于amoeba如何实现读写分离

 mysql基于amoeba如何实现读写分离

 mysql基于amoeba如何实现读写分离

   主上A:

   mysql基于amoeba如何实现读写分离

   从上B:

 mysql基于amoeba如何实现读写分离

2. 从上也需要授权,让中间件能过访问

  grant all privileges on *.* to 'silen'@'%' identified by '123456';

 mysql基于amoeba如何实现读写分离

3. 中间件云服务器设置

3.1 环境:

 (1)先安装gcc环境;

  yum install -y gcc*

  (2)需要获得amoeba主程序:amoeba-mysql-1.3.1-BETA.zip

下载链接:http://101.110.118.21/jaist.dl.sourceforge.net/project/amoeba/Amoeba%20for%20mysql/amoeba-mysql-1.3.1-BETA.zip

  (3)java的安装包:jdk-7u40-linux-x64.tar.gz

  下载链接:

http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html

3.2 配置全局变量

3.2.1 创建 /amoeba目录,将java解压到该目录下

  mkdir /amoeba

  tar -zxvf jdk-7u40-linux-x64.tar.gz -C /amoeba/

3.2.2 目录标题较长,做个软链接,即可

  ln -s jdk1.7.0_40/ jdk

3.2.3 编辑全局变量

  vim /etc/profile配置java选项(java的东西都需要声明)

  JAVA_HOME=/amoeba/jdk

  export JAVA_HOME

  PATH=$JAVA_HOME/bin:$PATH

  export PATH

  CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH

  export CLASSPATH

 mysql基于amoeba如何实现读写分离mysql基于amoeba如何实现读写分离

说明:

  • JAVA_HOME表示java的目录位置,设置为全局变量,这样其他shell也可以使用

  • java目录下的工具脚本加入到系统环境变量中,便于执行命令,也升级为全局变量

  • CLASSPATH表示java类的库的环境变量,把当前目录.,java下的tool.jar,dt.jar加入到变量中(Linux下用冒号隔开,Windows下用分号隔开),也升级为全局变量

3.2.4. 刷新下全局变量文件

  source /etc/profile

3.2.5 验证java是否可用

 mysql基于amoeba如何实现读写分离mysql基于amoeba如何实现读写分离

3.3 安装配置amoeba

3.3.1 解压至/usr/local/amoeba目录下

  unzip amoeba-mysql-1.3.1-BETA.zip -d /usr/local/amoeba

3.3.2 添加命令执行权限,便于调用命令

 chmod -R +x /usr/local/amoeba/bin/

3.3.3 修改amoeba主配置文件

  vim /usr/local/amoeba/conf/amoeba.xml

...(云服务器性能部分设置)

A. 找到:

去注释,改amoeba的云服务器(中间件)ip为:

172.16.115.87

 mysql基于amoeba如何实现读写分离mysql基于amoeba如何实现读写分离

B. 找到:

去注释,修改amoeba的root登录密码为123456:

123456

 mysql基于amoeba如何实现读写分离mysql基于amoeba如何实现读写分离

...(amoeba每一个数据库云服务器,对应一个dbServer)(数据库云服务器列表部分设置)

A.  下找到:

127.0.0.1

将ip地址改为主一的ip(端口和数据库名可以默认3306、test):

172.16.115.157

B. 找到:

root

将用户名改为授权的zhangshan:

silen

C. 找到:

去掉注释,将密码改为123456:

123456

 mysql基于amoeba如何实现读写分离mysql基于amoeba如何实现读写分离

D. 找到:

修改dbserver池子名为master(定义池子下面哪些server属于master这个池子,用来扩展云服务器):

E. 找到:

server1

如果master池子新增多台主云服务器,比如server1(已在master池子中了)、server2、server3,则修改为:

server1,server2,server3

 mysql基于amoeba如何实现读写分离mysql基于amoeba如何实现读写分离

F. 因为有两台数据库云服务器,已经设置了主云服务器,所以需复制主云服务器的dbServer,作为模板,修改从云服务器dbServer

复制(64行-109行),粘贴在...范围内:

...

(1)修改dbServer的名称为server2:

  dbServer name="server2"

(2)ip地址修改为192.168.9.252:

  172.16.115.100

 mysql基于amoeba如何实现读写分离mysql基于amoeba如何实现读写分离

(3)在下,修改池子名称为slave:

   

(4)slave池子下server主机名字修改为server2:

   server2

mysql基于amoeba如何实现读写分离 mysql基于amoeba如何实现读写分离

最后跳出

A. 找到:

  server1

  将单台云服务器的名称修改为池子名称(如果有多台主机,依次轮询去分配),作为默认访问的云服务器:

  master

B. 找到:

  

  去掉注释,写入池改为master,读取池改为slave:

 master

 slave

 mysql基于amoeba如何实现读写分离mysql基于amoeba如何实现读写分离

3.4 查看并编辑amomeba的执行脚本文件:

  vim /usr/local/amoeba/bin/amoeba

A. 找到:

  DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss128k"

修改为:

  DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss256k"

 mysql基于amoeba如何实现读写分离mysql基于amoeba如何实现读写分离

3.5 启动amoeba程序,并查看进程

   说明:nohup命令表示,放在后台启动,即使采用远程连接,远程断了,也能运行

   nohup bash -x /usr/local/amoeba/bin/amoeba &

 mysql基于amoeba如何实现读写分离mysql基于amoeba如何实现读写分离

4. 中间件云服务器,安装mysql,不需要安装mysql-server,登录amoeba

  说明:用户为配置文件中指定的用户和密码,默认端口为8066,登录的其实中间件,调用的是主从服务上的mysql,这里安装的mysql只是一个登录的工具

  yum install mysql -y

  mysql -u root -p123456 -h272.16.115.87 -P 8066

 mysql基于amoeba如何实现读写分离mysql基于amoeba如何实现读写分离

  测试:实际生产环境中,不需要操作!!!

  停用从云服务器slave,即stop slave,在主和从云服务器上的test库中创建一个a1表(表名需一致,因为是主从),分别插入一条数据master和slave

  主上:

 mysql基于amoeba如何实现读写分离

 mysql基于amoeba如何实现读写分离

 mysql基于amoeba如何实现读写分离

mysql基于amoeba如何实现读写分离

  从上:

mysql基于amoeba如何实现读写分离 mysql基于amoeba如何实现读写分离

  结论:中间件查看a1表中数据,反复查询都是slave,表明,查询数据是从从云服务器中获得

 mysql基于amoeba如何实现读写分离mysql基于amoeba如何实现读写分离

  中间件,往a1表中插入一条数据amoeba

 mysql基于amoeba如何实现读写分离mysql基于amoeba如何实现读写分离

   结论:在主云服务器上的a1表中看到amoeba数据,表明写数据是在主云服务器中写入

   主上:

 mysql基于amoeba如何实现读写分离 mysql基于amoeba如何实现读写分离

   从上:

 mysql基于amoeba如何实现读写分离mysql基于amoeba如何实现读写分离

  最后分别删掉主和从上的test库中的tb1表,从上开启slave

mysql基于amoeba如何实现读写分离 mysql基于amoeba如何实现读写分离

看了以上关于mysql基于amoeba如何实现读写分离详细内容,是否有所收获。如果想要了解更多相关,可以继续关注我们的行业资讯板块。

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章名称:mysql基于amoeba如何实现读写分离-创新互联
当前地址:http://hbruida.cn/article/cdjhje.html