MYSQL的主从复制与读写分离

在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是安全性,高可用性,还是高并发性等各个方面都是不能满足实际需求,因此,一般来说都是通过主从复制的方式来同步诗句,再通过读写分离来提升数据库的并发负载能力这样的方案来实施和部署。
MYSQL主从复制的原理
MYSQL的主从复制和MYSQL的读写分离两者有着紧密的联系,首先要部署主从复制,只有主从复制完成了,才能在此基础上进行数据的读写分离。
MYSQL读写分离原理
读写分离就是只在主服务器上写,只能在从服务器上读。基本原理就是让主数据库处理事务性查询,从而数据库处理select查询。数据库复制被用来把事务性查询导致的变更同步到群集分钟的从数据库。
基于中间代理层实现:代理一般位于客户端和服务器之间,代理服务器建立到客户端请求通过判断后转发到后端数据库。这里我们用的是Amoeba。

实验所需用到的包和整理的脚本链接: https://pan.baidu.com/s/1papoUzo9sIVWs2QaIpdOWg 密码: qm2g

主服务器IP:192.168.175.128
从服务器IP1:192.168.175.141
从服务器IP2:192.168.175.142
代理服务器地址:192.168.175.133
实验如下:
实验开始前首先把所有服务器的防火墙关掉
首先我们需要时主从服务器的时间进行同步


在主服务器上的etc下ntp.conf这个文件的最后进行插入插入服务器的地址段,但这里使用127来指明不要用真实地址段。退出文件后开启ntp服务

在两台从服务器上指定主服务器的地址进行同步。
下面要进行的操作的是主从复制


首先回到主服务器上在etc下面的my.cnf文件下进行修改,如文件里没有的自行添加
下面对住服务器的数据库进行操作

首先创建个用户给权限,在刷新使数据库立即生效,在显示主从同步状态

下面回到从服务器上操作

在两台从服务器上etc下面的my.cnf文件下进行修改,如文件里没有的自行添加

进入数据库指定主服务器地址和二进制日志和节点,在这里要注意的是主服务器的节点经常会改变,所有在进行操作前要确认主服务器的节点和二进制日志。开启主从同步,显示主从同步状态,这里需要看到两个yes。
为了验证主从同步是否成功可以在主服务器上创建一个数据库来验证

下面要进行的代理服务器上的操作


安装java环境

在etc下面的profile文件最下面这段话,在使用source刷新这个文件,这个文件会改变系统的环境变量


在这里我们需要开放权限给amoeba,所以回到主服务器和从服务器上开放权限


创建一个amoeba文件来放一会我们解压的文件

修改amoeba两个配置文件

首先设置一个用户来使客户端能访问服务器
指定写是主读是从


编辑下个文件

设置一个代理访问服务器的用户

指定主服务器的地址

指定两台从服务器地址

因为之前修改了从服务器的名字文slave所以下面要更改过来


使用/usr/local/amoeba/bin/amoeba start&来开启amoeba代理服务
可以使用netstat -ntap | grep java来查看监听地址和端口

这里所有的服务就算完成了,在客户端的数据库可以使用mysql -u amoeba -p123456 -h 192.168.175.133 -P 8066
这里指定登录用户问amoeba 密码为123456 地址为代理服务器地址 -P指定端口
为了验证读写是否分离,可以现在三代服务器上创建一个表,在每个表里各写一段不同的数据,之后再两台从服务器上使用 stop slave; 来关闭主从
之后再客户端查看表里的内容若只能显示从服务器的信息。在客户端插入一条信息只有主服务器才能开到。这样实验就算完成了就算完成了。

原文地址:http://blog.51cto.com/13840048/2172790

时间: 2024-11-08 21:33:26

MYSQL的主从复制与读写分离的相关文章

基于Mysql-Proxy实现Mysql的主从复制以及读写分离(上)

基于Mysql-Proxy实现Mysql的主从复制以及读写分离(上) 上周BOSS给分配任务让实现一下Mysql数据库的主从复制以及读写分离,然后花了一盏茶的功夫进行了调研,发现主从复制数据库进行一番配置直接可以实现,而读写分离则需要一些软件的支持,基本上读写分离的实现有两种: Amoeba(变形虫):是由前阿里员工实现的一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy.但是由于没人维护了,而且据说作者也不再回答开发者的问题,所以不予考虑. Mysql-Proxy:是一

搭建mysql的主从复制和读写分离

搭建mysql的主从复制和读写分离   +--------+                          (write)        +--------+                    | client |                 +---------------------+| master |     +--------+|                   |                        +--------+|           |      

MySQL的主从复制与读写分离技术实例(一)主从复制

系统版本:CentOS 6.5   MySQL版本:mysql-5.5.38 生产环境下,如果对同一个数据库服务器即做写服务又做读服务,无论是从安全性.高可用性还是高并发等各个角度都不能满足实际需求,因此,一般都用多台数据库服务器通过主从复制来同步数据提高安全性,再通过读写分离来提升数据库的并发负载能力,以及高可用性. 案例拓扑图: 案例环境: 搭建MySQL主从复制 MySQL的主从复制与读写分离密不可分,只有在实现主从复制的前提下才能完成读写分离 一.建立时间同步环境 1.在Master(M

基于Mysql-Proxy实现Mysql的主从复制以及读写分离(下)

基于Mysql-Proxy实现Mysql的主从复制以及读写分离(下) 昨天谈到了Mysql实现主从复制,但由于时间原因并未讲有关读写分离的实现,之所以有读写分离,是为了使数据库拥有双机热备功能,至于双机热备,特指基于高可用系统中的两台服务器的热备(或高可用),因两机高可用在国内使用较多,故得名双机热备,双机高可用按工作中的切换方式分为:主-备方式(Active-Standby方式)和双主机方式(Active-Active方式),主-备方式即指的是一台服务器处于某种业务的激活状态(即Active状

MySQL之主从复制和读写分离(Amoeba)

案例环境: Master:192.168.154.164 Slave01:192.168.154.176 Slave02:192.168.154.156 Amoeba:192.168.154.177 应用服务器:192.168.154.155 集群拓朴: 部署实施: 一 操作系统和应用程序安装(略) 二 搭建MySQL主从复制环境 1 架构前端有硬件防火墙,因此所有服务器的iptables处于关闭状态(如果没有,请开放相应的端口) [[email protected] ~]#service ip

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

mysql5.5基于表锁定 读取和写入互阻塞,为了解决这个问题便有了主从复制,读写分离的群集设置.三次认证1.主从同步认证2.amoeba访问数据库认证3.客户端访问amoeba认证 写入和读取:客户端写入数据写入到的是mysql主服务器中从服务器同步主服务器读取是读取从服务器上的内容从而实现读写分离 本实验使用mysql5.5附mysql5.5源码包以及安装脚本链接:https://pan.baidu.com/s/1kA80VX67fXOBVChUt72__g 密码:e42o jdk文件使用的

mysql+amoeba 主从复制,读写分离,负载均衡

Amoeba是什么?Amoeba(变形虫)项目,该开源框架于2008年 开始发布一款 Amoeba for Mysql软件.这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当SQL路由功能,专注于分布式数据库代理层(Database Proxy)开发,它位于与Client.DBServer(s)之间,对客户端透明.具有 负载均衡.高可用性.SQL过滤.读写分离.可路由相关的到目标数据库.可并发请求多台数据库合并结果 . 通过Amoeba你能够完成多数据源的高

MySql之主从复制及读写分离

前言 使用MySQL Proxy和MySQL Replication实现读写分离 MySQL Replication可以将master的数据复制分布到多个slave上,然后可以利用slave来分担master的读压力.那么对于前台应用来说,就要考虑如何将读的压力分布到多个slave上.如果每个应用都需要来实现读写分离的算法,一则成本太高,二来如果slave增加更多的机器,应用就要随之修改.明显的,如果在应用和数据库间加一个专门用于实现读写分离的中间层,则整个系统的架构拥有更好的扩展性.MySQL

Mysql的主从复制的读写分离之Amoeba实现

关于读写分离: 读写分离(Read/Write Splitting),基本的原理是让主数据库处理事务性增.改.删.操作(INSERT.UPDATE.DELETE),而从数据库处理SELECT查询操作.数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库. 关于Mysql的读写分离实现大致有三种: 1. 程序修改Mysql操作类 就以程序来完成Mysql的读写操作,如以PHP程序.java程序等解决此需求. 优点:直接和数据库通信,简单快捷的读写分离和随机的方式实现的负载均衡,权限独立分配