码迷,mamicode.com
首页 > 数据库 > 详细

mysql配置主从复制,读写分离(附amoeba源码包)

时间:2018-09-06 10:54:23      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:restart   mysq   去掉   virt   两台   图片   虚拟   log-bin   cto   

mysql5.5基于表锁定 读取和写入互阻塞,为了解决这个问题便有了主从复制,读写分离的群集设置。
技术分享图片
三次认证
1、主从同步认证
2、amoeba访问数据库认证
3、客户端访问amoeba认证


写入和读取:
客户端写入数据写入到的是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、从服务器分别写入数据,客户端查看,显示数据为从服务器数据,则证明读是读从服务器数据

技术分享图片
技术分享图片
技术分享图片

主从同步,读写分离成功!

mysql配置主从复制,读写分离(附amoeba源码包)

标签:restart   mysq   去掉   virt   两台   图片   虚拟   log-bin   cto   

原文地址:http://blog.51cto.com/13760226/2170955

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!