读写分离,即在主数据库中进行写操作(也可以进行增、删、改操作),在从数据库中进行读操作。在正常情况下,我们对主数据库进行的是增、删、改、查操作,数据库的写入时间比较长,而查询时间短,所以为了提高数据库的效率,我们把读写分离开来。

一、数据库读写分离的配置

环境:redhat 6.5

server2   master

server3   slave

server4   mysql-proxy  (调度器)

1、在server2和server3中实现gtid的主从复制(可以仿照之前的博客。完成gtid的主从复制)

2、在server4中安装mysql-proxy

1)首先解压mysql-proxy包

--->  tar zxf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz -C /usr/local/  # 解压在固定目录

--->  cd  /usr/local/

--->  mv  mysql-proxy-0.8.5-linux-el6-x86-64bit/ mysql-proxy    # 进行重命名

2)修改读写分离的配置文件

--->  cd /usr/local/mysql-proxy

--->  mkdir  conf       # 在mysql-proxy目录下创建conf目录,存放配置文件

--->  mkdir  logs       # 创建logs目录,存放日志文件

--->  cd  /usr/local/mysql-proxy/share/doc/mysql-proxy    # 修改读写分离配置文件

--->  vim  rw-splittind.lua      # 该文件为lua脚本,表示连接数超过2开始读写分离

--->  vim /usr/local/mysql-proxy/conf/mysql-proxy.conf          # 编辑mysql-proxy的配置文件

[mysql-proxy]
user=root        # proxy运行的用户

keepalive=true   # 崩溃时,尝试重启

daemon=true      # 以守护进程方式运行

log-level=debug  # 定义log日志级别,由高到低分别有(error|warning|info|message|debug)
log-file=/usr/local/mysql-proxy/logs/mysql-proxy.log                            # 日志位置
proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua  # 读写分离配置脚本
proxy-read-only-backend-addresses=172.25.2.3:3306                               # 指定后端主slave读数据
proxy-backend-addresses=172.25.2.2:3306   # 指定后端主master写入数据
proxy-address=0.0.0.0:3306                # proxy监听本机所有接口

--->  chmod 660 mysql-proxy.conf    # 修改配置文件的执行权限

3)启动mysql-proxy服务

--->  /usr/local/mysql-proxy/bin/mysql-proxy  --defaults-file=/usr/local/mysql-proxy/conf/mysql-proxy.conf

--->  px  -ax         #  查看启动的服务进程

4)在server2(master)中对某个用户授权读和插入权限

mysql>  grant all on *.*  to root@'%' identified  by  'Xniu+123';

5)在测试机中测试。通过调度器server4来连接数据库

6)在server2和server3中安装lsof,来查看数据库的连接情况

--->  yum  install -y lsof

--->  lsof  -i  :3306     # 查看3306端口连接情况

server2:(由于刚开始只连接了一次,使用的是master主机)

server3:(此时是server3到server2,是主从问题)

7)当我们在测试机中第三次连接数据库的时候,会出现读写分离的情况(在server2中写,server3中读)。

server2:

server3:

# 在真机中插入一条数据的时候,在master可以看到的话,说明写操作在server2中。若是slave中看到插入的数据,不能说明写操作在srver3中,因为server2和server3是主从关系。

server4:插入数据

server2:查看数据

Mysql数据库的读写分离的更多相关文章

  1. 利用oneproxy部署mysql数据库的读写分离

    实验系统:CentOS 6.6_x86_64 实验前提:防火墙和selinux都关闭 实验说明:本实验共有4台主机,IP分配如拓扑 实验软件:mariadb-10.0.20 oneproxy-rhel ...

  2. 如何轻松实现MySQL数据库的读写分离和负载均衡?

    配置好了 Mysql 的主从复制结构后,我们希望实现读写分离,把读操作分散到从服务器中,并且对多个从服务器能实现负载均衡.读写分离和负载均衡是 Mysql 集群的基础需求,MaxScale 就可以帮着 ...

  3. 利用mysql-proxy进行mysql数据库的读写分离

    实验系统:CentOS 6.6_x86_64 实验前提:防火墙和selinux都关闭 实验说明:本实验共有4台主机,IP分配如拓扑 实验软件:mariadb-10.0.20 mysql-proxy-0 ...

  4. 基于amoeba实现mysql数据库的读写分离/负载均衡

    一.Amoeba的简述:[来自百度百科]      Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy.它集中地响应应用的请求,依据用户事先设置的规则,将SQL请 ...

  5. docker-compose.yml样例(mysql主从+mycat读写分离)

    Docker-compose.yml文件示例 1.mysql主从复制的docker-compose.yml文件 # cat docker-compose.yml version: '2' # 这个ve ...

  6. MySQL搭建主从数据库 实现读写分离

    首先声明,实际生产中,网站为了提高用户体验,性能等,将数据库实现读写分离是有必要的,我们让主数据库去写入数据,然后当用户查询的时候,然后在从数据库读取数据,故能减轻数据库的压力,实现良好的用户体验! ...

  7. 使用mysql proxy对数据库进行读写分离

    服务器安排如下: 192.168.100.128 主 192.168.100.129 从 192.168.100.130 mysql-proxy 1.在100.130中下载安装mysql-proxy ...

  8. Mysql主从复制,读写分离(mysql-proxy),双主结构完整构建过程

    下面介绍MySQL主从复制,读写分离,双主结构完整构建过程,不涉及过多理论,只有实验和配置的过程. Mysql主从复制(转载请注明出处,博文地址:) 原理是master将改变记录到二进制日志(bina ...

  9. MySQL + Atlas --- 部署读写分离

    阅读目录 1. 数据库用户配置 2. 主从数据库连接 3. Atlas配置 4. 读写分离测试 序章 Atlas是360团队弄出来的一套基于MySQL-Proxy基础之上的代理,修改了MySQL-Pr ...

随机推荐

  1. Unity3D学习笔记(十六):Animator新动画

    新动画系统: 给模型选择动画类型 普通动画:Generic 人形动画:Humanoid 建立动画控制器 - 在Project右击 - 选择Create-AnimatorContorller 将对应动画 ...

  2. Visual Studio 项目模板制作(四)

    上一篇,介绍了VSIX安装模板的方法,那么,你是不是要问,为何有些项目模板却可以有向导,那是怎么做到的 今天这篇文章就是介绍如何为自己的模板添加向导,向导可以引导你完成项目中各种参数的设置,比如项目创 ...

  3. ROS编译时(catkin_make)找不到bullet,Could NOT find Bullet (missing: BULLET_DYNAMICS_LIBRARY

    sudo apt-get install libbullet-dev

  4. mysql 开启远程访问

    # vi /etc/mysql/my.cnf修改 bind-address = 127.0.0.1  为  bind-address = 0.0.0.0 修改完成后重启mysql服务 # sudo / ...

  5. 使用 data.table 包操作数据

    在第一节中,我们回顾了许多用于操作数据框的内置函数.然后,了解了 sqldf 扩展包,它使得简单的数据查询和统计变得更简便.然而,两种方法都有各自的局限性.使用内置函数可能既繁琐又缓慢,而相对于各式各 ...

  6. 【转】libxml2 如何获得某个节点的所有信息

    网址:http://bbs.csdn.net/topics/380115580 顶楼: 我的需求是这样的,我使用libxml2从内存中解析一个xml文件,需要修改某个节点下的一个子节点,修改完成之后, ...

  7. 小橙书阅读指南(十三)——连通性算法(union-find)

    上一章我大概说明了什么是图论以及无向图的基础概念,本章我们要研究一种更普遍的算法——连通性算法.它属于图论的分支,也是一种抽象算法.在深入算法之前,我们先提出一个具体的问题:假设在空间中存在N个点,我 ...

  8. Java JDK5新特性-泛型

    2017-10-30 22:47:11 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型. 泛型的本质 ...

  9. Spring boot实现监听Redis key失效事件实现和其它方式

    需求: 处理订单过期自动取消,比如下单30分钟未支付自动更改订单状态 用户绑定隐私号码当订单结束取消绑定等 解决方案1: 可以利用redis自带的key自动过期机制,下单时将订单id写入redis,过 ...

  10. LeetCode--104--二叉树的最大深度

    问题描述: 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,null,null, ...