标签:restart mysq 去掉 virt 两台 图片 虚拟 log-bin cto
mysql5.5基于表锁定 读取和写入互阻塞,为了解决这个问题便有了主从复制,读写分离的群集设置。写入和读取:
客户端写入数据写入到的是mysql主服务器中
从服务器同步主服务器
读取是读取从服务器上的内容
从而实现读写分离
本实验使用mysql5.5
附mysql5.5源码包以及安装脚本
链接:https://pan.baidu.com/s/1kA80VX67fXOBVChUt72__g 密码:e42o
jdk文件使用的是1.6
链接:https://pan.baidu.com/s/1E80A82_1YTxG2BU5745o0w 密码:xe6g
amoeba
链接:https://pan.baidu.com/s/1S8OaSgYjj0aXcK5n5uoo3g 密码:16gh
本实验使用5台centos7
使用redhat6操作也相同
主服务器地址:192.168.60.128
从服务器1地址:192.168.60.136
从服务器2地址:192.168.60.143
amoeba代理地址:192.168.60.144
客户端地址:192.168.60.129
实验需要我们每台虚拟机都关掉防火墙,加强性组件
systemctl stop firewalld.service
setenforce 0
一、使用ntp协议,时间同步
1、主服务器
rpm -q ntp //默认是安装了
vim /etc/ntp.conf //修改ntp配置文件
在末行插入以下两条语句
server 127.127.60.0 //自身60网段
fudge 127.127.60.0 stratum 8 //时间层级
systemctl start ntpd //启动ntp服务
2、从服务器(两台配置相同)
rpm -q ntpdate //默认也是安装了
systemctl start ntpd //启动服务
/usr/sbin/ntpdate 192.168.60.128 //同步主服务器,显示以下则同步成功
二、配置mysql
安装mysql5.5(开头有安装包和脚本,不在赘述)
1、主服务器主配置文件
vim /etc/my.cnf
server-id = 11 //服务唯一标识
log-bin=master-bin //去掉注释,开启二进制日志
log-slave-updates=true //允许从服务器同步同步主服务器
service mysql restart //重启服务
2、主服务器进mysql给从服务器创建用户授权
grant replication slave on . to ‘myslave‘@‘192.168.60.%‘ identified by ‘123123‘;
flush privileges 刷新即时生效
show master status 查看主服务器状态
3、从服务器配置文件设置(除server-id外,两台从服务器设置一样)
vim /etc/my.cnf
server-id 22 //修改server-id
在server-id下添加如下两行
relay-log=realy-log-bin
relay-log-index=slave-relay-bin.index
service mysqld restart
4、从服务器进mysql进行操作(两台从服务器操作相同)
change master to master_host=‘192.168.60.128‘,master_user=‘myslave‘,master_password=‘123123‘,master_log_file=‘master-bin.000001‘,master_log_pos=338;
start slave; //开启从复制
show slave status\G //查看slave状态
5、主从复制测试
三、amoeba代理服务器
systemctl stop firewalld.service //关闭防火墙及加强性组件
setenforce 0
1、挂载宿主机,复制JDK文件
2、./jdk-6u14-linux-x64.bin
一直回车就行了,有提示会告诉你填yes/no,填yes,开始安装
3、添加环境变量
先将jdk的文件改名,方便后面填写环境变量
mv jdk1.6.0_14/ /usr/local/jdk1.6 //改名
vim /etc/profile //末行添加JDK环境变量,如下
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
export PATH=$PATH:$AMOEBA_HOME/bin
scource /etc/profile //刷新环境变量
4、安装amoeba
mkdir /usr/local/amoeba //创建amoeba解压目录
chmod 755 /usr.local/amoeba 必须要755权限
tar zxf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/ //解压
/usr/local/amoeba/bin/amoeba //查看amoeba是否安装成功
5、每台mysql服务器都给amoeba创建权限
grant all on . to ‘amoeba‘@‘192.168.60.%‘ identified by ‘123456‘;
创建了一个用户给amoeba并且赋予权限,amoeba将以这个身份登录mysql
6、修改amoeba.xml配置文件
vim /amoeba/conf/amoeba.xml
<property name="user">amoeba</property> 30行修改用户为amoeba
<property name="password">456789</property> 32行认证amoeba密码为456789
117行
<property name="defaultPool">master</property> 改成master
<!--删掉
<property name="writePool">master</property> 改成master
<property name="readPool">slaves</property> 改成slaves
删掉 -->
7、修改dbServers.xml配置文件
26行
<property name="user">test</property> 改成test
29行
<property name="password">123456</property> 去掉注释 改成认证mysql的密码
42行
<dbServer name="master" parent="abstractServer"> 改成master
<factoryConfig>
<!-- mysql ip -->
<property name="ipAddress">192.168.60.128</property> ip改成master的ip
<dbServer name="slave2" parent="abstractServer"> 第二台slave2
<factoryConfig>
<!-- mysql ip -->
<property name="ipAddress">192.168.60.143</property>
</factoryConfig>
</dbServer>
末尾
<dbServer name="slaves" virtual="true"> 池子名改为slaves
<property name="poolNames">slave1,slave2</property> 池子中添加slave1,savel2
8、开启amoeba服务
/usr/local/amoeba/bin/amoeba start& 开启服务
netstat -anpt | grep java
四、客户端验证读写分离
1、关闭防火墙,安装mysql并登陆
systemctl stop firewall
setenforce 0
yum install mysql -y
mysql -u amoeba -p456789-h 192.168.60.144 -P8066 远程通过amoeba的ip登陆
2、主服务器创建一张list表,从服务器停止slave
创建的list表会被从服务器同步,首先我们利用客户端先写入一些信息到这张表中,到主服务器中查看,如果内容在主服务器显示,说明写入是针对主服务器。
然后我们分别在从服务器list表中写入一些信息,在客户端查看,如果内容显示的是从1,从2,服务器的内容,说明读功能针对从服务器。
满足以上两条则实现读写分离。
3、客户端list表插入信息,主服务器查看,证明写入是写在主服务器上
4、从服务器分别写入数据,客户端查看,显示数据为从服务器数据,则证明读是读从服务器数据
主从同步,读写分离成功!
标签:restart mysq 去掉 virt 两台 图片 虚拟 log-bin cto
原文地址:http://blog.51cto.com/13760226/2170955