amoeba读写分离安装详细教程

author author     2022-12-19     245

关键词:

8.12.2 amoeba

8.12.2.1 amoeba安装

? 安装JDK

http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm

? 安装amoeba

http://sourceforge.net/projects/amoeba/files/

https://sourceforge.net/projects/amoeba/files/Amoeba%20for%20mysql/2.x/amoeba-mysql-binary-2.1.0-RC5.tar.gz/download

tar -zxvf amoeba-mysql-binary-2.1.0-RC5.tar.gz -C /usr/local/amoeba
可使用命令[/usr/local/amoeba/bin/amoeba]验证Amoeba是否安装成功。

8.12.2.2 配置Mysql主从授权

设置读写分离的权限
禁止mysql.user表同步
主: grant select,insert,update,delete on . to [email protected]‘%‘ identified by ‘123456‘

从: grant select on . to [email protected]‘%‘ identified by ‘123456‘

mysql读写分离的授权方案

mysql库不同步,再对主从进行授权
主: web_r 123456 10.204.1.100 3306 (select,insert,delete,update)
从: web_w 123456 10.204.1.101 3306 (select)
缺隐:从接替主的时候,没有修改权限,替补方案是,做一台从专门冷备,用来接替主
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=information_schema

mysql库同步,在主上授权同步到从
主: web_r 123456 10.204.1.100 3306 (select,insert,delete,update)
如果防止从被写入,设置配置文件参数read-only,
注意:read-only对root用户不生效

生产环境如何确保从库只读

  1. mysql从服务器中加入read-only参数或者从服务器启动时加该参数
  2. 忽略mysql库及information_schema库同步
  3. 授权从库用户仅授权select权限

8.12.2.3 amoeba配置

├── bin
│ ├── amoeba
├── conf
│ ├── amoeba.xml
├── dbServers.xml

vim amoeba.xml
配置ameoba访问的用户名和密码 IP 端口提供给web连接

$clientConnectioneManager 128 64 # amoeba本地的用户名和密码 root $amoeba.home/conf/access_list.conf 查询路由设置 $amoeba.home/conf/rule.xml $amoeba.home/conf/ruleFunctionMap.xml $amoeba.home/conf/functionMap.xml 1500 # 设置默认的服务器(此处为master池) # 设定可写节点,节点定义见dbServers.xml文件 masterPool masterPool #设置写的库 salvePool # 设置读的库 true 修改 vim dbServers.xml 定义抽象服务器,为每个后端MySQL服务器提供默认连接配置 ★ $defaultManager 64 128 test # 用户密码这一段只需要设置一次,下面子服务器共享上面的参数 500 500 10 600000 600000 true true # 以上多台mysql时,可配置多个 定义后端MySQL的IP地址,一个master,一个slave 192.168.0.45 192.168.0.46 定义读池和写池 分别设置server列表,设置负载均衡方式 master-pool 定义池名和关联服务器 # 设置负载均衡参数 1=轮询 2=权重 3=Hash 1 server1 slave-pool 定义池名和关联服务器 # 设置轮询方式 1 server2 8.12.2.4 amoeba测试 重台启动 /usr/local/amoeba/bin/amoeba start & 连接测试 mysql -h127.0.0.1 -uroot -p -P8066 # amoeba默认监听端口为8066 这里连接的是ameoba的IP 8.12.2.5 Amoeba调优 20 30 30 500 60 ①readThreadPoolSize –用于处理客户端连接发送过来的数据,跟数据库服务器返回的数据的线程数 量这个可以根据客户端连接数量来调整。 ②clientSideThreadPoolSize –在读线程读完客户端的请求数据包以后,这个线程将会接手处理具体 的业务逻辑(比如:解析SQL、SQL 路由)。 ③serverSideThreadPoolSize –在server端读取数据库返回的数据包,合并多数据库返回的数据,将数 据包发送到客户端。 ④statementCacheSize –连接池缓存的Prepared Statement数量。 ⑤queryTimeout –语句执行超时时间设置。 12864true ① sendBufferSize – 属性设置在SocketChannel.Write 方法的调用中期望发送的字节数。实际上, 此属性的操作对象是为发送操作所分配的网络缓冲区空间。网络缓冲区应至少与应用程序缓冲 区同样大小,这样才能确保在一次操作中就能存储和发送所需的数据。使用 SendBufferSize 属 性设置此大小。如果应用程序要发送批量数据,需为 Write 方法提供足够大的应用程序缓冲区。 如果网络缓冲区小于提供给 Write 方法的数据量,则对 Write 方法的每次调用都将多次执行网 络发送操作。通过确保网络缓冲区至少与应用程序缓冲区同样大小,可获得更大的数据吞吐量。 ② receiveBufferSize–设置你希望在接收缓冲区中为每次读操作存储的字节数。实际上,此属性的操作对象是为 接收传入数据所分配的网络缓冲区空间。网络缓冲区应至少与应用程序缓冲区同样大小,这样才能确保在调用SocketChannel.Read 方法时所需的数据是可用的。使用 ReceiveBufferSize 属性 设置此大小。如果应用程序将要接收批量数据,应为Read方法提供非常大的应用程序缓冲区。 如果网络缓冲区小于在 Read 方法中所请求的数据量,你将无法在一次读取操作中检索到所需的 数据量。这将导致增加对 Read 方法的调用次数,进而增加系统开销。 ③ tcpNoDelay–如果禁用延迟,则为 true;否则为 false。默认值为 true。 如果该参数设为 false,则直到 TcpClient 收集到相当数量的输出数据之后,它才会通过网络发 送数据包。由于 TCP 段中系统开销的数量,发送少量数据时效率比较低。但是,也存在这样情 况:你可能要发送极少量的数据或者期望立即从你发送的每个数据包得到响应。你应该在网络效率与应用程序响应要求中取舍。 Table 5.1. JVM(Java Virtual Machine)内存参数设置 JVM选项 含义 -Xms 初始Heap大小 -Xmx Java Heap最大值 -Xmn Young Generation的Heap大小 -Xss 每个线程的Stack大小 8.12.2.6 amoeba报错 ? 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. 解决方法: vim bin/amoeba DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss128k" 改成256 ? Exception in thread "main" com.meidusa.amoeba.config.ConfigurationException: Initialisation [email protected] error 8.12.3 MySQL + MMM架构 8.12.3.1 mysql-mmm 概述 MMM即Master-Master Replication Manager for MySQL(mysql主主复制管理器)关于mysql主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),这个套件也能对居于标准的主从配置的任意数量的从服务器进行读负载均衡,所以你可以用它来在一组居于复制的服务器启动虚拟ip,除此之外,它还有实现数据备份、节点之间重新同步功能的脚本。 MySQL本身没有提供replication failover的解决方案,通过MMM方案能实现服务器的故障转移,从而实现mysql的高可用。MMM项目来自Google:http://code.google.com/p/mysql-master-master 官方网站为:http://mysql-mmm.org mysql-mmm主要功能由下面三个脚本提供 mmm_mond 负责所有的监控工作的监控守护进程,决定节点的移除等等 mmm_agentd 运行在mysql服务器上的代理守护进程,通过简单远程服务集提供给监控节点 mmm_control 通过命令行管理mmm_mond进程 mysql-mmm的监管端会提供多个虚拟IP(VIP),包括一个可写VIP,多个可读VIP,通过监管的管理,这些IP会绑定在可用mysql之上,当某一台mysql宕机时,监管会将VIP迁移至其他mysql。 在整个监管过程中,需要在mysql中添加相关授权用户,以便让mysql可以支持监理机的维护。授权的用户包括一个mmm_monitor用户和一个mmm_agent用户,如果想使用mmm的备份工具则还要添加一个mmm_tools用户。

mysql集群读写分离(amoeba)

实验环境Master、Amoeba--IP:192.168.1.5Slave---IP:192.168.1.10安装JDKJDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html[[email protected]~]#mkdir/usr/local/JDF[[e 查看详情

mysql数据库--主从复制读写分离(代码片段)

...1、原理2、读写分离3、读写分离的好处4、实现方式4.1、Amoeba简介五、搭建MySQL读写分离1、实验准备2、amoeba(192.168.35.30)安装3、配置amoeba读写分离,两个slave读负载均衡4、修改amoeba主配置文件和数据库文件5、开启amoeba6 查看详情

amoeba实现mysql读写分离(代码片段)

Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy,它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行.基于此可以实现负载均衡、读写分离、高可用性等需求,与MySQL官方的MySQ... 查看详情

利用amoeba(变形虫)实现mysql数据库读写分离(代码片段)

...表示proxy效率不高,也不稳定,不建议在生产环境使用;amoeba是阿里开发的一款数据库读写分离的项目(读写分离只是它的一个小功能),由于是基于java编写的,所以运行环境需要安装jdk;前期准备工作:1.两个数据库,一主一从... 查看详情

使用amoeba配置mysql读写分离

一,背景介绍:Amoeba(变形虫)项目,专注分布式数据库proxy开发。座落与Client、DBServer(s)之间。对客户端透明。具有负载均衡、高可用性、sql过滤、读写分离、可路由相关的query到目标数据库、可并发请求多台数据库合并结果。要... 查看详情

amoeba+mysql实现读写分离

AboutAmoebaAmoeba可译为阿米巴、变型虫Amoeba是一个开源项目,致力于Mysq的分布式数据库前端代理层Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的规则,将SQL请... 查看详情

主从复制和读写分离(代码片段)

...ql配置4)验证主从复制效果2.搭建Mysql读写分离1)Amoeba服务器配置安装java环境安装Amoeba软件2)主从服务器的mysql上授权3)配置Amoeba读写分离,两个slave负载均衡①修改amoeba配置文件②修改数据库配置文件4)测试... 查看详情

报错啦!读写分离时客户端远程登录amoeba失败,怎么办?

读写分离时客户端远程登录amoeba失败,怎么办一.具体报错信息二.报错背景介绍三.问题解决一.具体报错信息[root@client~]#mysql-uamoeba-p123123-h192.168.206.99-P8066ERROR1000(42S02):Accessdeniedforuser‘amoeba’@‘192.168.206.7:41784’(usingp 查看详情

报错啦!读写分离时客户端远程登录amoeba失败,怎么办?

读写分离时客户端远程登录amoeba失败,怎么办一.具体报错信息二.报错背景介绍三.问题解决一.具体报错信息[root@client~]#mysql-uamoeba-p123123-h192.168.206.99-P8066ERROR1000(42S02):Accessdeniedforuser‘amoeba’@‘192.168.206.7:41784’(usingp 查看详情

mysql主从复制及读写分离实际部署与验证(代码片段)

...离的拓扑图4.操作思路5.具体搭建mysql读写分离操作:amoeba服务器1安装javajdk1.6环境2安装amoeba软件3在主从服务器上的mysql分别授权4配置Amoeba读写分离,两个Slave读负载均衡5修改amoeba配置文件6修改数据库配置文件7客户端操... 查看详情

mysql的主从复制和读写分离(代码片段)

...7,开启测试二、读写分离原理:实现方式:amoeba的介绍:实验环境:一、安装1、安装java环境2、优化环境变量3、安装amoeba4, 查看详情

amobea读写分离

     Amoeba的中文意思是变型虫,Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的  规则,将SQL请求发送到特定的数据库上执行。基于... 查看详情

mysql主从复制与读写分离的理论+实操(配有详细图释)(代码片段)

...SQL4.4配置主从同步4.5验证主从复制4.5搭建读写分离4.6配置amoeba4.7MySQL客户端测试五、总结5.1一定要关闭防火墙!!!5.2主从复制5.3读写分离一、为什么需要主从复制与读写分离?因为日常企业应用中,成熟的业... 查看详情

呼呼!又报错?突然就蒙了!读写分离客户端远程登录amoeba进入数据库,正常登入后,执行语句都报错,怎么盘?(代码片段)

读写分离客户端远程登录amoeba进入数据库,正常登入后,执行语句都报错一.具体报错信息二.背景介绍三.问题解决一.具体报错信息ERROR2006(HY000):MySQLserverhasgoneawayNoconnection.Tryingtoreconnect…Connectionid:2023202663Currentdatabase:***NONE... 查看详情

呼呼!又报错?突然就蒙了!读写分离客户端远程登录amoeba进入数据库,正常登入后,执行语句都报错,怎么盘?(代码片段)

读写分离客户端远程登录amoeba进入数据库,正常登入后,执行语句都报错一.具体报错信息二.背景介绍三.问题解决一.具体报错信息ERROR2006(HY000):MySQLserverhasgoneawayNoconnection.Tryingtoreconnect…Connectionid:2023202663Currentdatabase:***NONE... 查看详情

mysql的主从复制和读写分离

...从复制配置完成,就不去验证了。三、搭建读写分离amoeba服务器配置 查看详情

mysql的主从复制和读写分离

...从复制配置完成,就不去验证了。三、搭建读写分离amoeba服务器配置 查看详情

amoba读写分离

原文链接:http://www.abcdocker.com/abcdocker/81Amoeba(变形虫)项目,该开源框架于2008年开始发布一款AmoebaforMysql软件。这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当SQL路由功能,专注于分布式数据库... 查看详情