Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy,它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行.基于此可以实现负载均衡、读写分离、高可用性等需求,与MySQL官方的MySQL Proxy相比,作者强调的是amoeba配置的方便.
MySQL主从配置 1.主从服务器需要配置好主从关系,主从服务器都需要安装MySQL.
2.启动MySQL服务,并设置初始化密码(主从都要重启).
[root@localhost ~] [root@localhost ~]
3.修改主配置文件/etc/my.cnf
并再次重启MySQL(主从都要修改).
[root@localhost ~] log-bin=mysql-bin server-id=148
4.登陆主数据库,创建用于从服务器登陆的用户(主服务器).
[root@localhost ~] mysql> grant replication slave on *.* to '用户名' @'%' identified by '密码' ; mysql> show master status;
5.登陆从数据库,确认从主服务器同步数据(从服务器).
[root@localhost ~] mysql> change master to master_host='主服务器IP' ,master_user='用户' ,master_password='密码' ,master_log_file='二进制文名' ,master_log_pos=文件空间大小; mysql> start slave; mysql> show slave status\G; 注意: Slave_IO_Running: Yes Slave_SQL_Running: Yes
安装Java环境+Amoeba 1.本台服务器也应安装MySQL用于登录测试,不需要启动.
2.解压相应软件并改名.
[root@localhost ~] [root@localhost ~]
3.配置JAVA环境变量,写入/etc/profile
文件中,使其开机生效.
[root@localhost ~] JAVA_HOME=/usr/local/jdk export JAVA_HOMEPATH=$JAVA_HOME /bin:$PATH export PATHCLASSPATH=.:$JAVA_HOME /lib/tools.jar:$JAVA_HOME /lib/dt.jar:$CLASSPATH export CLASSPATH[root@localhost ~] [root@localhost ~]
4.进入主从MySQL分别创建Amoeba使用的账号(主从服务器都要创建).
[root@localhost ~] [root@localhost ~]
5.安装Amoeba并设置权限.
[root@localhost ~] [root@localhost ~]
6.编辑主配置文件,配置Amoeba.
[root@localhost ~] <?xml version="1.0" encoding="gbk" ?> <!DOCTYPE amoeba:configuration SYSTEM "amoeba.dtd" > <amoeba:configuration xmlns:amoeba="http://amoeba.meidusa.com/" > <server> <property name="port" >8066</property> <property name="ipAddress" >192.168.22.147</property> <property name="readThreadPoolSize" >20</property> <property name="clientSideThreadPoolSize" >30</property> <property name="serverSideThreadPoolSize" >30</property> <property name="netBufferSize" >128</property> <property name="tcpNoDelay" >true </property> <property name="user" >root</property> <property name="password" >123</property> <property name="queryTimeout" >60</property> </server> <connectionManagerList> <connectionManager name="defaultManager" class="com.meidusa.amoeba.net.MultiConnectionManagerWrapper" > <property name="subManagerClassName" >com.meidusa.amoeba.net.AuthingableConnectionManager</property> </connectionManager> </connectionManagerList> <dbServerList> <dbServer name="server1" > <factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory" > <property name="manager" >defaultManager</property> <property name="port" >3306</property> <property name="ipAddress" >192.168.22.148</property> <property name="schema" >test </property> <property name="user" >zhu1</property> <property name="password" >123</property> </factoryConfig> <poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool" > <property name="maxActive" >200</property> <property name="maxIdle" >200</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" > <factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory" > <property name="manager" >defaultManager</property> <property name="port" >3306</property> <property name="ipAddress" >192.168.22.149</property> <property name="schema" >test </property> <property name="user" >cong1</property> <property name="password" >123</property> </factoryConfig> <poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool" > <property name="maxActive" >200</property> <property name="maxIdle" >200</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="master" virtual="true" > <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool" > <property name="loadbalance" >1</property> <property name="poolNames" >server1</property> </poolConfig> </dbServer> <dbServer name="slave" virtual="true" > <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool" > <property name="loadbalance" >1</property> <property name="poolNames" >server2</property> </poolConfig> </dbServer> </dbServerList> <queryRouter class="com.meidusa.amoeba.mysql.parser.MysqlQueryRouter" > <property name="ruleConfig" >${amoeba.home} /conf/rule.xml</property> <property name="functionConfig" >${amoeba.home} /conf/functionMap.xml</property> <property name="ruleFunctionConfig" >${amoeba.home} /conf/ruleFunctionMap.xml</property> <property name="LRUMapSize" >1500</property> <property name="defaultPool" >master</property> <property name="writePool" >master</property> <property name="readPool" >slave</property> <property name="needParse" >true </property> </queryRouter> </amoeba:configuration>
7.打开amoeba配置文件.
[root@localhost ~] 修改以下内容↓ DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss256k
8.启动amoeba
9登陆数据库测试.
GTID主从复制: 每个在主库上执行,的事务都会被分配唯一的全局ID并记录和应用在从库上.快速切换主从数据库.