MySQL+Amoeba 主从复制+读写分离+负载均衡
准备工作
master: 192.168.0.6
slave1: 192.168.0.11
slave2: 192.168.0.12
Amoeba:192.168.0.7
均安装MySQL
一. Master服务器:
- 修改配置文件
# vim /etc/my.cnf
- 开启二进制日志,在
[mysql]
下方添加以下内容
server-id=1
log-bin=mysql-bin
- MySQL添加用户并赋予权限
mysql> grant replication slave on *.* to backup@'%' identified by 'backup';
mysql> grant all on *.* to test@'%' identified by 'test';
mysql> flush privileges;
mysql> show master status \G;
- 输出结果
File: mysql-bin.000001
Position: 323
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)
二. Slave1/Slave2服务器:
- 修改配置文件
# vim /etc/my.cnf
- 在
[mysql]
下方添加以下内容
server-id=2
relay-log=mysql-relay
- MySQL配置Master服务器
mysql> stop slave
mysql> change master to master_host='192.168.0.6', master_user='backup', master_password='backup', master_log_file='mysql-bin.000001', master_log_pos=323;
mysql> grant all on *.* to test@'%' identified by 'test';
mysql> start alave;
mysql> show slave status\G;
- 输出
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
出现两个Yes即成功配置
三. Amoeba客户机:
- 安装JDK
# rpm -ivh jdk-8u20-linux-x64.rpm
# vim /etc/profile
- 配置系统变量
export JAVA_HOME=/usr/java/jdk1.8.0_20/
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
export AMOEBA_HOME=/usr/local/amoeba
export PATH=$PATH:$AMOEBA_HOME/bin
- 更新变量
# source /etc/profile
- 安装Amoeba
# mkdir /usr/local/amoeba
# tar zxf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba
# vim /usr/local/amoeba/bin/amoeba
- 修改Amoeba 大小为
256k
,否则不能启动
DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss256k"
- 修改Amoeba配置文件1
# /usr/local/amoeba/conf/amoeba.xml
<property name="user">root</property> # Amoeba账号
<property name="password">root</property> # Amoeba密码
....
....
<property name="defaultPool">master</property> # 默认池
<property name="writePool">master</property> # 写操作池
<property name="readPool">slaves</property> # 读操作池
- 修改Amoeba配置文件2
# /usr/local/amoeba/conf/dbServers.xml
<property name="user">test</property> # 主服务器MySQL账号
<property name="password">test</property> # 主服务器MySQL密码
....
....
<dbServer name="master" parent="abstractServer">
<factoryConfig>
<property name="ipAddress">192.168.0.6</property> # 主服务器IP
</factoryConfig>
</dbServer>
<dbServer name="slave1" parent="abstractServer"> # name对应slave1
<factoryConfig>
<property name="ipAddress">192.168.0.11</property> # 从服务器IP 1
</factoryConfig>
</dbServer>
<dbServer name="slave2" parent="abstractServer"> # name对应slave2
<factoryConfig>
<property name="ipAddress">192.168.0.12</property> # 从服务器IP 2
</factoryConfig>
</dbServer>
<dbServer name="slaves" virtual="true"> # name对应为slaves
<poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
<property name="loadbalance">1</property>
<property name="poolNames">slave1,slave2</property> # 读服务器池
</poolConfig>
</dbServer>
四. 测试连接
- 启动Amoeba
# /usr/local/amoeba/bin/amoeba start
- 连接
# mysql -u root -p root -h 192.168.0.7 -P 8806