主机 | 系统环境 | IP地址 | 操作软件 |
---|---|---|---|
Amoeba | centos7.3 x86_64 | 192.168.100.101 | Amoeba |
MySQL主 | centos7.3 x86_64 | 192.168.100.102 | ntp、MySQL 5.7 |
MySQL从1 | centos7.3 x86_64 | 192.168.100.103 | ntp、MySQL 5.7 |
MySQL从2 | centos7.3 x86_64 | 192.168.100.104 | ntp、MySQL 5.7 |
MySQL-client | Redhat6.5 x86_64 | 192.168.100.105 | MySQL 5.5 |
用于主从服务器之间时间同步,保证所有数据库复制及同步在同一时间点。保证复制同步的及时以及准确性。
Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行。基于此可以实现负载均衡、读写分离、高可用性等需求。
yum install ntp -y //安装ntp软件,若没有,请用yum安装
vim /etc/ntp.conf
末行添加:
server 127.127.100.0 //本地是时钟源,请注意本机所在网段是100
fudge 127.127.100.0 stratum 8 //设置时间层级为8(限制在15内)
systemectl stop firewalld.service
setenforce 0
systemctl start ntpd.service
vim /etc/my.cnf
server-id = 11 //设置主服务器ID号
log-bin=master-bin //主服务器日志文件//
log-slave-updates=true //从服务器更新二进制日志//
systemctl restart mysqld.service
mysql -u root -p
GRANT REPLICATION SLAVE ON *.* TO ‘myslave‘@‘192.168.100.%‘ IDENTIFIED BY ‘123456‘; //赋予从服务器同步权限
FLUSH PRIVILEGES; //刷新MySQL命令,使立即生效
show master status; //查看主状态
+-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000002 | 339 | | |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
到此,主服务器设置完成。
从服务器不论有多少个,除了每一个服务器本身IP地址不一样以及在MySQL配置文件中server-id不同,其他配置主从复制完全相同。
yum install ntp -y
systemctl stop firewalld.service
setenforce 0
systemctl start ntpd.service
/usr/sbin/ntpdate 192.168.100.102 //进行时间同步
vim /etc/my.cnf
server-id = 22 //修改ID号,切记!每一个MySQL服务器都不一样
relay-log=relay-log-bin //从主服务器上同步日志文件记录到本地
relay-log-index=slave-relay-bin.index //定义relay-log的位置和名称
mysql -u root -p
change master to master_host=‘192.168.100.101‘,master_user=‘myslave‘,master_password=‘123456‘,master_log_file=‘master-bin.000002‘,master_log_pos=339;
start slave;
show slave status\G; //查看状态//
systemctl stop firewalld.service
setenforce 0
cp jdk-6u14-linux-x64.bin /usr/local/ //将JDK安装命令复制到系统中
./jdk-6u14-linux-x64.bin //执行安装
mv jdk1.6.0_14/ /usr/local/jdk1.6
vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.6 //指定工作目录
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 //指定amoeba工作目录
export PATH=$PATH:$AMOEBA_HOME/bin
source /etc/profile //刷新环境变量
mkdir /usr/local/amoeba
tar zxvf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/
chmod -R 755 /usr/local/amoeba//usr/local/amoeba/bin/amoeba
显示amoeba start|stop说明安装成功
mysql -u root -p
grant all on . to ‘test‘@‘192.168.100.%‘ identified by ‘123.com‘;
cd /usr/local/amoeba
vim conf/amoeba.xml //amoeba主配置文件
---30行--
<property name="user">amoeba</property>
----32行---------
<property name="password">123456</property> //客户端登录amoeba验证
---117-去掉注释-
<property name="defaultPool">master</property> //默认数据库池为master
<property name="writePool">master</property> //设置可写入数据池的服务器为master
<property name="readPool">slaves</property> //设置可读数据库服务器为slaves
vim conf/dbServers.xml
--25行----
<!-- mysql schema -->
<property name="schema">test</property> //amoeba默认寻找test数据库,注意test存在否,若不存在可以在主服务器创建,也可注释,也可更改为mysql数据库
--26-29--去掉注释--
<property name="user">test</property>
<property name="password">123.com</property> //amoeba访问数据库池验证
-----42行-主服务器地址---
<dbServer name="master" parent="abstractServer">
<property name="ipAddress">192.168.100.102</property>
--52行-从服务器主机名-
<dbServer name="slave1" parent="abstractServer">
<factoryConfig>
<!-- mysql ip -->
<property name="ipAddress">192.168.100.103</property>
</factoryConfig>
</dbServer>
<dbServer name="slave2" parent="abstractServer">
<factoryConfig>
<!-- mysql ip -->
<property name="ipAddress">192.168.100.104</property>
</factoryConfig>
</dbServer>
<dbServer name="slaves" virtual="true"> //切记,从服务器池名slaves
<poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
--末尾--
<property name="poolNames">slave1,slave2</property>
</poolConfig>
/usr/local/amoeba/bin/amoeba start&
netstat -anpt | grep java
tcp6 0 0 127.0.0.1:25138 :::* LISTEN 68768/java
tcp6 0 0 :::8066 :::* LISTEN 68768/java
tcp6 0 0 192.168.100.101:38906 192.168.100.102:3306 ESTABLISHED 68768/java
tcp6 0 0 192.168.100.101:60784 192.168.100.103:3306 ESTABLISHED 68768/java
tcp6 0 0 192.168.100.101:57670 192.168.100.104:3306 ESTABLISHED 68768/java
yum install mysql -y
mysql -u amoeba -p123456 -h 192.168.100.101 -P8066
此上,通过amoeba代理服务软件实现了MySQL数据库服务的读写分离。
Centos7中MySQL5.7服务群集(实现主从复制、读写分离功能)
原文:http://blog.51cto.com/13659253/2140011