安装Amoeba实现读写分离

1,用的Amoeba版本是

amoeba-mysql-3.0.5-RC-distribution.zip

下载地址:

http://files.cnblogs.com/files/wendu/Amoeba.zip

2,解压

unzip amoeba-mysql-3.0.5-RC-distribution.zip

3,

主数据库操作

查看数据库编码
show variables like 'character_set_database';
修改编码
alter database mastertest CHARACTER SET utf8;

主数据库锁表(禁止再插入数据以获取主数据库的的二进制日志坐标)

flush tables with read lock;

在主数据库上创建用于主从复制的账户并赋予远程登录权限

GRANT REPLICATION SLAVE ON flow_trade.* TO flowtrade@'192.168.108.167' IDENTIFIED BY '123456';

查看主数据库的状态(并记录下File字段和Position字段的值,在配置从服务器时有用到)

show master status;

解除锁表

unlock tables;

flush privileges;

从数据库操作 

在从数据库服务器上设置主数据库服务器向从数据库服务器同步

change master to master_host = '192.168.108.166',master_user='flowtrade',master_password='123456',master_log_file='mysql-bin-log.000001',master_log_pos=456;

启动从节点

start slave;

查看从节点状态

show slave status \G

 

两个yes表示成功

4,移动到相应路径下并该名

mv amoeba-mysql-3.0.5-RC /usr/local/

cd /usr/local/

mv amoeba-mysql-3.0.5-RC/ amoeba

 5,修改配置文件

cd /usr/local/amoeba/conf/

修改第一个文件amoeba.xml

vi amoeba.xml

 1 <?xml version="1.0" encoding="gbk"?>
 2 
 3 <!DOCTYPE amoeba:configuration SYSTEM "amoeba.dtd">
 4 <amoeba:configuration xmlns:amoeba="http://amoeba.meidusa.com/">
 5 
 6         <proxy>
 7 
 8                 <!-- service class must implements com.meidusa.amoeba.service.Service -->
 9                 <service name="Amoeba for Mysql" class="com.meidusa.amoeba.mysql.server.MySQLService">
10                         <!-- port -->
11                         <property name="port">8066</property>
12 
13                         <!-- bind ipAddress -->
14                         <!-- 
15                         <property name="ipAddress">0.0.0.0</property>
16                          -->
17 
18                         <property name="connectionFactory">
19                                 <bean class="com.meidusa.amoeba.mysql.net.MysqlClientConnectionFactory">
20                                         <property name="sendBufferSize">128</property>
21                                         <property name="receiveBufferSize">64</property>
22                                 </bean>
23                         </property>
24 
25                         <property name="authenticateProvider">
26                                 <bean class="com.meidusa.amoeba.mysql.server.MysqlClientAuthenticator">
27 
28                                         <property name="user">amoeba</property>
29 
30                                         <property name="password">123456</property>
31 
32                                         <property name="filter">
33                                                 <bean class="com.meidusa.toolkit.net.authenticate.server.IPAccessController">
34                                                         <property name="ipFile">${amoeba.home}/conf/access_list.conf</property>
35                                                 </bean>
36                                         </property>
37                                 </bean>
38                         </property>
39 
40                 </service>
41 
42                 <runtime class="com.meidusa.amoeba.mysql.context.MysqlRuntimeContext">
43 
44                         <!-- proxy server client process thread size -->
45                         <property name="executeThreadSize">128</property>
46 
47                         <!-- per connection cache prepared statement size  -->
48                         <property name="statementCacheSize">500</property>
49 
50                         <!-- default charset -->
51                         <property name="serverCharset">utf8</property>
52 
53                         <!-- query timeout( default: 60 second , TimeUnit:second) -->
54                         <property name="queryTimeout">60</property>
55                 </runtime>
56 
57         </proxy>
58 
59         <!-- 
60                 Each ConnectionManager will start as thread
61                 manager responsible for the Connection IO read , Death Detection
62         -->
63         <connectionManagerList>
64                 <connectionManager name="defaultManager" class="com.meidusa.toolkit.net.MultiConnectionManagerWrapper">
65                         <property name="subManagerClassName">com.meidusa.toolkit.net.AuthingableConnectionManager</property>
66                 </connectionManager>
67         </connectionManagerList>
68 
69                 <!-- default using file loader -->
70         <dbServerLoader class="com.meidusa.amoeba.context.DBServerConfigFileLoader">
71                 <property name="configFile">${amoeba.home}/conf/dbServers.xml</property>
72         </dbServerLoader>
73 
74         <queryRouter class="com.meidusa.amoeba.mysql.parser.MysqlQueryRouter">
75                 <property name="ruleLoader">
76                         <bean class="com.meidusa.amoeba.route.TableRuleFileLoader">
77                                 <property name="ruleFile">${amoeba.home}/conf/rule.xml</property>
78                                 <property name="functionFile">${amoeba.home}/conf/ruleFunctionMap.xml</property>
79                         </bean>
80                 </property>
81                 <property name="sqlFunctionFile">${amoeba.home}/conf/functionMap.xml</property>
82                 <property name="LRUMapSize">1500</property>
83                 <property name="defaultPool">readpool</property>
84 
85 
86                 <property name="writePool">writepool</property>
87                 <property name="readPool">readpool</property>
88 
89                 <property name="needParse">true</property>
90         </queryRouter>
91 </amoeba:configuration>

修改第二个配置文件

vi dbServers.xml

 1 <?xml version="1.0" encoding="gbk"?>
 2 
 3 <!DOCTYPE amoeba:dbServers SYSTEM "dbserver.dtd">
 4 <amoeba:dbServers xmlns:amoeba="http://amoeba.meidusa.com/">
 5 
 6                 <!-- 
 7                         Each dbServer needs to be configured into a Pool,
 8                         If you need to configure multiple dbServer with load balancing that can be simplified by the following configuration:
 9                          add attribute with name virtual = "true" in dbServer, but the configuration does not allow the element with name factoryConfig
10                          such as 'multiPool' dbServer   
11                 -->
12 
13         <dbServer name="abstractServer" abstractive="true">
14                 <factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory">
15                         <property name="connectionManager">${defaultManager}</property>
16                         <property name="sendBufferSize">64</property>
17                         <property name="receiveBufferSize">128</property>
18 
19                         <!-- mysql port -->
20                         <property name="port">3306</property>
21 
22                         <!-- mysql schema -->
23                         <property name="schema">flow_trade</property>
24 
25                         <!-- mysql user -->
26                         <property name="user">root</property>
27 
28                         <property name="password">123456</property>
29                 </factoryConfig>
30 
31                 <poolConfig class="com.meidusa.toolkit.common.poolable.PoolableObjectPool">
32                         <property name="maxActive">500</property>
33                         <property name="maxIdle">500</property>
34                         <property name="minIdle">1</property>
35                         <property name="minEvictableIdleTimeMillis">600000</property>
36                         <property name="timeBetweenEvictionRunsMillis">600000</property>
37                         <property name="testOnBorrow">true</property>
38                         <property name="testOnReturn">true</property>
39                         <property name="testWhileIdle">true</property>
40                 </poolConfig>
41         </dbServer>
42 
43         <dbServer name="server1"  parent="abstractServer">
44                 <factoryConfig>
45                         <!-- mysql ip -->
46                         <property name="ipAddress">192.168.108.167</property>
47                         <property name="user">root</property>
48                         <property name="password">123456</property>
49                 </factoryConfig>
50         </dbServer>
51 
52         <dbServer name="server2"  parent="abstractServer">
53                 <factoryConfig>
54                         <!-- mysql ip -->
55                         <property name="ipAddress">192.168.108.166</property>
56                         <property name="user">root</property>
57                         <property name="password">123456</property>
58                 </factoryConfig>
59         </dbServer>
60 
61         <dbServer name="writepool" virtual="true">
62                 <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
63                         <!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->
64                         <property name="loadbalance">1</property>
65 
66                         <!-- Separated by commas,such as: server1,server2,server1 -->
67                         <property name="poolNames">server1</property>
68                 </poolConfig>
69         </dbServer>
70         <dbServer name="readpool" virtual="true">
71                 <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
72                         <!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->
73                         <property name="loadbalance">1</property>
74 
75                         <!-- Separated by commas,such as: server1,server2,server1 -->
76                         <property name="poolNames">server1,server2,server1</property>
77                 </poolConfig>
78         </dbServer>
79 
80 </amoeba:dbServers>

 

#配置java环境 修改launcher文件加入(这个看情况而定)

#JAVA_HOME=/usr

6,启动

./launcher

关闭

./shutdown

7,防火墙设置

iptables -I INPUT -s 192.168.108.165 -p TCP --dport 8806 -j ACCEPT

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

service iptables save

service iptables restart

8,登录测试

./mysql -uamoeba -p  -h192.168.108.167 -P 8806

 

转载于:https://www.cnblogs.com/wendu/p/6698743.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值