返回顶部
首页 > 资讯 > 数据库 >mysql基于amoeba如何实现读写分离
  • 743
分享到

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

2024-04-02 19:04:59 743人浏览 薄情痞子
摘要

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

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

环境:

        主机A( huangzp2):172.16.115.157

        主机B( huangzp3):172.16.115.100

        主机C( huangzp4):172.16.115.87

说明:

  • 依赖于主从结构

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

  • 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


<server>...</server>(云服务器性能部分设置)

A. 找到:

<!--

<property name="ipAddress">127.0.0.1</property>

-->

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

<property name="ipAddress">172.16.115.87</property>

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


B. 找到:

<!--

<property name="passWord">password</property>

-->

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

<property name="password">123456</property>

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


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

A.  <dbServer name="server1">下找到:

<property name="ipAddress">127.0.0.1</property>

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

<property name="ipAddress">172.16.115.157</property>


B. 找到:

<property name="user">root</property>

将用户名改为授权的zhangshan:

<property name="user">silen</property>


C. 找到:

<!--

<property name="password">password</property>

-->

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

<property name="password">123456</property>

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


D. 找到:

<dbServer name="multiPool" virtual="true">

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

<dbServer name="master" virtual="true">


E. 找到:

<property name="poolNames">server1</property>

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

<property name="poolNames">server1,server2,server3</property>

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


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

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

<dbServer name="server1">...</dbServer>

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

   dbServer name="server2"


(2)ip地址修改为192.168.9.252:

   <property name="ipAddress">172.16.115.100</property>

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


(3)在<dbServer name="multiPool" virtual="true">下,修改池子名称为slave:

     <dbServer name="slave" virtual="true">


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

     <property name="poolNames">server2</property>

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


最后跳出<dbServerList>:

A. 找到:

    <property name="defaultPool">server1</property>

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

   <property name="defaultPool">master</property>


B. 找到:

   <!--

   <property name="writePool">server1</property>

   <property name="readPool">server1</property>

   -->

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

  <property name="writePool">master</property>

  <property name="readPool">slave</property>

 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如何实现读写分离详细内容,是否有所收获。如果想要了解更多相关,可以继续关注我们的数据库板块。

您可能感兴趣的文档:

--结束END--

本文标题: mysql基于amoeba如何实现读写分离

本文链接: https://lsjlt.com/news/35297.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • mysql基于amoeba如何实现读写分离
    下文给大家带来关于mysql基于amoeba如何实现读写分离,感兴趣的话就一起来看看这篇文章吧,相信看完mysql基于amoeba如何实现读写分离对大家多少有点帮助吧。环境:    &n...
    99+
    2024-04-02
  • MySQL 读写分离 (基于Amoeba)
    一.MySQL读写分离    主数据库处理事务性查询,从数据库处理select查询。数据库复制用来把事务性查询导致的变更同步到从数据库中。二.最为常见的读写分离有两种:1.基于...
    99+
    2024-04-02
  • amoeba:关于mysql的读写分离
    今天用amoeba做了次读写分离,下面总结下步骤:三台linux:1、192.168.1.213    用于做amoeba服务器2、192.168.1.184&nbs...
    99+
    2024-04-02
  • mysql+amoeba读写分离
    mysql+amoeba读写分离一 简介:Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数...
    99+
    2024-04-02
  • MySQL读写分离amoeba&mysql-proxy
    ----主从同步介绍 refencen    https://www.cnblogs.com/lin3615/p/5684891.html 1. 读写分离方式 ...
    99+
    2024-04-02
  • mysql 基于mysql-proxy实现读写分离
    mysql 读写分离 读写分离首先不推荐使用,很多业务场景也没有必要,不仅增加技术复杂度,而且可能会导致读到落后的数据,建议优化数据库,推荐使用keepalive+mysql双主复制的方案 然后mysql-proxy是官方推出的中间件,不仅...
    99+
    2015-08-29
    mysql 基于mysql-proxy实现读写分离 数据库入门 数据库基础教程 数据库 mysql
  • Amoeba实现数据库读写分离
    一 环境以及软件版本:系统:CentOS Linux release 7.2.1511 (Core)mysql:Server version: 5.6.33Amoeba:amoeba-mysql-3.0.5...
    99+
    2024-04-02
  • Amoeba新版本MYSQL读写分离如何配置
    小编给大家分享一下Amoeba新版本MYSQL读写分离如何配置,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 官方简介 Amoeba的中文意思是变型虫 主要解决: &bul...
    99+
    2024-04-02
  • amoeba实现mysql读写分离+主从复制架构
    一、环境系统:centos6.5mysql版本:mysql5.6master服务器:192.168.1.21slave服务器: 192.168.1.100master写 slave读二、实现mysql主从复...
    99+
    2024-04-02
  • 利用Amoeba实现MySQL主从复制和读写分离
    在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性、高可用性,还是高并发等各个方面都是完全不能满足实际需求的,因此,一般来说都是通过主从复制(Master-Slave)的方式...
    99+
    2024-04-02
  • 基于 SpringBoot 实现 MySQL 读写分离的问题
    -     前言     - 首先思考一个问题: 在高并发的场景中,关于数据库都有哪些优化的手段? 常用的实现方法有以下几种:读写分离、加缓存、主从架构集...
    99+
    2022-05-21
    SpringBoot 实现 MySQL 读写分离 SpringBoot 读写分离
  • 利用amoeba(变形虫)实现mysql数据库读写分离
    前期准备工作: 1.两个数据库,一主一从,主从同步; master: 172.22.10.237:3306 ;主库负责写入操作; slave: 10.4.66.58:3306 ; 从库负责读取操作; amoeba: 172.22.10.23...
    99+
    2015-09-22
    利用amoeba(变形虫)实现mysql数据库读写分离
  • 利用amoeba实现mysql数据库读写分离的案例
    小编给大家分享一下利用amoeba实现mysql数据库读写分离的案例,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!关于mysql的读写分离架构有很多,百度的话几乎都是用mysql_prox...
    99+
    2024-04-02
  • mysql主从基于docker和django实现读写分离
    目录1.主从搭建实操2.django实现读写分离settings.py配置手动指定读写分离自动指定(写router和配置setting)更细粒度(分库分表时需要)在数据库迁移时,可以指定把哪个app的表结构迁移到哪个库1...
    99+
    2024-04-02
  • 利用amoeba实现mysql数据库的读写分离的方法
    这篇文章将为大家详细讲解有关利用amoeba实现mysql数据库的读写分离的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。关于mysql的读写分离架构有很多,百度的话...
    99+
    2024-04-02
  • MySQL中如何实现读写分离
    MySQL中如何实现读写分离,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一,创建Master数据库的配置文件vi master...
    99+
    2024-04-02
  • php+mysql如何实现读写分离
    这篇“php+mysql如何实现读写分离”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php+mysql如何实现读写分离”文...
    99+
    2023-07-05
  • Java基于JNDI怎么实现读写分离
    这篇文章主要介绍“Java基于JNDI怎么实现读写分离”,在日常操作中,相信很多人在Java基于JNDI怎么实现读写分离问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java基于JNDI怎么实现读写分离”的疑...
    99+
    2023-06-22
  • mysql中Oneproxy如何实现读写分离
    这篇文章将为大家详细讲解有关mysql中Oneproxy如何实现读写分离,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。基本架构: 写请求全部定向到主库,数据通过日志异步复...
    99+
    2024-04-02
  • 通过amoeba工具实现配置mysql读写分离的方法介绍
    下面讲讲关于通过amoeba工具实现配置mysql读写分离的方法,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完通过amoeba工具实现配置mysql读写分离的方法这篇文章你一定...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作