Amoeba新版本MYSQL读写分离配置

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

官方简介
Amoeba的中文意思是变型虫
主要解决:
• 降低 数据切分带来的复杂多数据库结构
• 提供切分规则并降低 数据切分规则 给应用带来的影响
• 降低db 与客户端的连接数
• 读写分离

个人简单描述
可能你还没明白Amoebla这鬼东西主要干麻的呢!比方说PHP环境众所周知,PHP没有数据连接池,如果PHP环境下MYSQL访问量大时会蹦掉,除非配置Cluster集群,而Amoeba就是在PHP程序和MYSQL之间,充当一个缓冲的作用。

准备工作
  • Server:192.168.1.208 #Amoeba
  • Server:192.168.1.11  #NDBD1(主)
  • Server:1921.68.1.13  #NDBD2(从)
  • 注:11和13两台服务器上,事先请安装好MYSQL单向步,不会配置访问http://skyson.blog.51cto.com/2497647/556600
  • 另请安装MYSQL版本必须5.1以上,因为新版的Amoeba2.10对5.1以下版本不稳定。



结构图




Step 1:配置Amoeba192.168.2.8读写分离  
  1. 1:解压安装包
  2. [root@Management down]# mkdir /usr/local/amoeba 
    [root@Management down]# tar -zxf amoeba-mysql-binary-2.1.0-RC5.tar.gz -C /usr/local/amoeba/
  1. 2:进入配置目录,浏览文件
  2. [root@Management down]# cd /usr/local/amoeba/ 
    [root@Management amoeba]# ll 
    total 88 
    drwxr-xr-x 2 root root    4096 Jul 26 11:57 benchmark 
    drwxr-xr-x 2 root root    4096 Feb 28 09:25 bin 
    -rw-r--r-- 1 root root    3983 May 18 13:43 changelogs.txt 
    drwxr-xr-x 2 root root    4096 Jul 26 11:57 conf 
    drwxr-xr-x 3 root root    4096 Jul 26 11:57 lib 
    -rw-r--r-- 1 root root 34520 May 18 13:43 LICENSE.txt 
    -rw-r--r-- 1 root root    2031 May 18 13:43 README.html
  3. 3:进入主配置文件目录
  4. [root@Management amoeba]# cd conf/ 
    [root@Management conf]# ls 
    access_list.conf    amoeba.xml        dbServers.xml    functionMap.xml    log4j.xml    ruleFunctionMap.xml 
    amoeba.dtd                dbserver.dtd     function.dtd     log4j.dtd                rule.dtd     rule.xml
  1. 在这里我主要介绍配置  amoeba.xml、    dbServers.xml、 log4j.xml 三个主要的配置文件,其它文件没有特殊需要默认就可以了夺
  2. 4:vi amoeba.xml 修改主配置文件
  • 4.1)把默认端口8066改成3306
  • <property name= "port">3066</property>
  • 4.2)把默认连接用户名和密码改成自己的
  • <property name= "user">sky</property> 

                                                                                    <property name= "password">123456</property>
  • 4.3)把默认的客户端线程数,请求数及服务端回应数改成200,300,300
  • <property name= "readThreadPoolSize">200</property> 

                                                    <!-- proxy server client process thread size --> 
                                                    <property name= "clientSideThreadPoolSize">300</property> 

                                                    <!-- mysql server data packet process thread size --> 
                                                    <property name= "serverSideThreadPoolSize">300</property
  • 4.4)把默认注释掉的读写分离选项,把注释去掉并readpool修改成server2
  • <!-- 
                                    --> 
                                    <property name= "writePool">server1</property> 
                                    <property name= "readPool">server2</property>

                                         
  1.  5:vi dbServers.xml 增加SEVER2模块,里面的连接用户名密码及地址都表示两台MYSQL的物理机器,192.168.1.11和192.168.1.13 另SERVER1是写,SERVER是读
  2. 需要手动增加SERVER2代码如下:
  3.    < dbServer  name ="abstractServer"  abstractive ="true" > 

         < factoryConfig  class ="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory" > 

           < property  name ="manager" >${defaultManager} </ property > 

           < property  name ="sendBufferSize" >64 </ property > 

           < property  name ="receiveBufferSize" >128 </ property > 

             

          <!--  mysql port --> 

           < property  name ="port" >3306 </ property > 

            

          <!--  mysql schema --> 

           < property  name ="schema" >test </ property > 

            

          <!--  mysql user --> 

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

            

          <!--     mysql password 

          
    --> 

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

         </ factoryConfig > 



         < poolConfig  class ="com.meidusa.amoeba.net.poolable.PoolableObjectPool" > 

           < property  name ="maxActive" >500 </ property > 

           < property  name ="maxIdle" >500 </ property > 

           < property  name ="minIdle" >10 </ property > 

           < property  name ="minEvictableIdleTimeMillis" >600000 </ property > 

           < property  name ="timeBetweenEvictionRunsMillis" >600000 </ property > 

           < property  name ="testOnBorrow" >true </ property > 

           < property  name ="testWhileIdle" >true </ property > 

         </ poolConfig > 

       </ dbServer > 



       < dbServer  name ="server1"     parent ="abstractServer" > 

         < factoryConfig > 

          <!--  mysql ip --> 

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

         </ factoryConfig > 

       </ dbServer >


  1. 最终改变成如下:
  1. <? xml  version ="1.0"  encoding ="gbk" ?> 



    <!DOCTYPE amoeba:dbServers SYSTEM "dbserver.dtd"> 

    < amoeba:dbServers  xmlns:amoeba ="http://amoeba.meidusa.com/" > 



        <!--     

          Each dbServer needs to be configured into a Pool, 

          If you need to configure multiple dbServer with load balancing that can be simplified by the following configuration: 

            add attribute with name virtual = "true" in dbServer, but the configuration does not allow the element with name factoryConfig 

            such as 'multiPool' dbServer        

        
    --> 

         

       < dbServer  name ="abstractServer"  abstractive ="true" > 

         < factoryConfig  class ="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory" > 

           < property  name ="manager" >${defaultManager} </ property > 

           < property  name ="sendBufferSize" >64 </ property > 

           < property  name ="receiveBufferSize" >128 </ property > 

             

          <!--  mysql port --> 

           < property  name ="port" >3306 </ property > 

            

          <!--  mysql schema --> 

           < property  name ="schema" >test </ property > 

            

          <!--  mysql user --> 

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

            

          <!--     mysql password 

          
    --> 

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

         </ factoryConfig > 



         < poolConfig  class ="com.meidusa.amoeba.net.poolable.PoolableObjectPool" > 

           < property  name ="maxActive" >500 </ property > 

           < property  name ="maxIdle" >500 </ property > 

           < property  name ="minIdle" >10 </ property > 

           < property  name ="minEvictableIdleTimeMillis" >600000 </ property > 

           < property  name ="timeBetweenEvictionRunsMillis" >600000 </ property > 

           < property  name ="testOnBorrow" >true </ property > 

           < property  name ="testWhileIdle" >true </ property > 

         </ poolConfig > 

       </ dbServer > 



       < dbServer  name ="server1"     parent ="abstractServer" > 

         < factoryConfig > 

          <!--  mysql ip --> 

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

         </ factoryConfig > 

       </ dbServer > 





          <!--  ########################把如上的内容复制到下面,来增加SERVER2############################ --> 





       < dbServer  name ="abstractServer"  abstractive ="true" > 

         < factoryConfig  class ="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory" > 

           < property  name ="manager" >${defaultManager} </ property > 

           < property  name ="sendBufferSize" >64 </ property > 

           < property  name ="receiveBufferSize" >128 </ property > 

             

          <!--  mysql port --> 

           < property  name ="port" >3306 </ property > 

            

          <!--  mysql schema --> 

           < property  name ="schema" >test </ property > 

            

          <!--  mysql user --> 

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

            

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

         </ factoryConfig > 



         < poolConfig  class ="com.meidusa.amoeba.net.poolable.PoolableObjectPool" > 

           < property  name ="maxActive" >500 </ property > 

           < property  name ="maxIdle" >500 </ property > 

           < property  name ="minIdle" >10 </ property > 

           < property  name ="minEvictableIdleTimeMillis" >600000 </ property > 

           < property  name ="timeBetweenEvictionRunsMillis" >600000 </ property > 

           < property  name ="testOnBorrow" >true </ property > 

           < property  name ="testWhileIdle" >true </ property > 

         </ poolConfig > 

       </ dbServer > 



       < dbServer  name ="server2"     parent ="abstractServer" > 

         < factoryConfig > 

          <!--  mysql ip --> 

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

         </ factoryConfig > 

       </ dbServer > 


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

         < poolConfig  class ="com.meidusa.amoeba.server.MultipleServerPool" > 

          <!--  Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA--> 

           < property  name ="loadbalance" >1 </ property > 

            

          <!--  Separated by commas,such as: server1,server2,server1 --> 

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

         </ poolConfig > 

       </ dbServer > 

         

    </ amoeba:dbServers > 



  • 6:修改log4j.xml 取消日志文件生成(太大了,磁盘很容易满)
  • < param  name ="file"  value ="${amoeba.home}/logs/project.log" /> 
    改成 
    < param  name ="file" value="<![CDATA[${amoeba.home}/logs/project.log >/dev/null]]>"/>
  • 7:性能优化,打开bin/amoeba

  • DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss128k" 
    改成 
    DEFAULT_OPTS="-server -Xms512m -Xmx512m -Xmn100m -Xss1204k"
  • 8:启动amoeba
  • nohup /usr/local/amoeba/bin/amoeba start 2>&1 >/dev/null &









本文转自 ibelieveme 51CTO博客,原文链接:http://blog.51cto.com/skyson/623449,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
13天前
|
SQL 关系型数据库 MySQL
vb6读取mysql,用odbc mysql 5.3版本驱动
通过以上步骤,您可以在VB6中使用ODBC MySQL 5.3驱动连接MySQL数据库并读取数据。配置ODBC数据源、编写VB6代码
54 32
|
4月前
|
SQL 关系型数据库 MySQL
mysql主从复制概述和配置
【10月更文挑战第22天】MySQL 主从复制是一种将主服务器的数据复制到一个或多个从服务器的技术,实现读写分离,提高系统性能和可用性。主服务器记录变更日志,从服务器通过 I/O 和 SQL 线程读取并应用这些变更。适用于读写分离、数据备份和恢复、数据分析等场景。配置步骤包括修改配置文件、创建复制用户、配置从服务器连接主服务器并启动复制进程。
226 1
|
4月前
|
负载均衡 监控 关系型数据库
MySQL 官宣:支持读写分离了!!
【10月更文挑战第8天】MySQL的读写分离功能显著提升了数据库性能、可用性和可靠性。通过将读写操作分配至不同服务器,有效减轻单个服务器负载,提高响应速度与吞吐量,并增强系统稳定性。此外,它还支持便捷的扩展方式,可通过增加只读服务器提升读操作性能。实现读写分离的方法包括软件层面(如使用数据库中间件)和硬件层面(使用独立服务器)。使用时需注意数据一致性、负载均衡及监控管理等问题。
278 0
|
2月前
|
关系型数据库 MySQL Linux
MySQL版本升级(8.0.31->8.0.37)
本次升级将MySQL从8.0.31升级到8.0.37,采用就地升级方式。具体步骤包括:停止MySQL服务、备份数据目录、下载并解压新版本的RPM包,使用`yum update`命令更新已安装的MySQL组件,最后启动MySQL服务并验证版本。整个过程需确保所有相关RPM包一同升级,避免部分包遗漏导致的问题。官方文档提供了详细指导,确保升级顺利进行。
187 16
|
3月前
|
关系型数据库 MySQL
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
112 5
|
3月前
|
存储 SQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(1)作者——LJS[含MySQL的下载、安装、配置详解步骤及报错对应解决方法]
Mysql And Redis基础与进阶操作系列(1)之[MySQL的下载、安装、配置详解步骤及报错对应解决方法]
|
3月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
292 2
|
3月前
|
关系型数据库 MySQL
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
76 1
|
4月前
|
SQL 关系型数据库 MySQL
Mysql中搭建主从复制原理和配置
主从复制在数据库管理中广泛应用,主要优点包括提高性能、实现高可用性、数据备份及灾难恢复。通过读写分离、从服务器接管、实时备份和地理分布等机制,有效增强系统的稳定性和数据安全性。主从复制涉及I/O线程和SQL线程,前者负责日志传输,后者负责日志应用,确保数据同步。配置过程中需开启二进制日志、设置唯一服务器ID,并创建复制用户,通过CHANGE MASTER TO命令配置从服务器连接主服务器,实现数据同步。实验部分展示了如何在两台CentOS 7服务器上配置MySQL 5.7主从复制,包括关闭防火墙、配置静态IP、设置域名解析、配置主从服务器、启动复制及验证同步效果。
179 0
Mysql中搭建主从复制原理和配置
|
4月前
|
Java 关系型数据库 MySQL
【编程基础知识】Eclipse连接MySQL 8.0时的JDK版本和驱动问题全解析
本文详细解析了在使用Eclipse连接MySQL 8.0时常见的JDK版本不兼容、驱动类错误和时区设置问题,并提供了清晰的解决方案。通过正确配置JDK版本、选择合适的驱动类和设置时区,确保Java应用能够顺利连接MySQL 8.0。
378 1

推荐镜像

更多