`
swengineer
  • 浏览: 42471 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Mysql-proxy主从搭建读写分离全过程

阅读更多

废话不说!

Mysql-proxy是什么,大家都知道,不知道的就别往下看了...
首先搭建 mysql 主从数据库,参考: http://blog.csdn.net/swengineer/archive/2011/03/11/6239711.aspx

下载 mysql-proxy 最新版,本文撰写时最新版本为 MySQL Proxy 0.8.1 alpha

安装 mysql-proxy 步骤如下:

解压 mysql-proxy-0.8.1-linux-glibc2.3-x86-32bit.gz

tar zxvf mysql-proxy-0.8.1-linux-glibc2.3-x86-32bit.gz

cp -R mysql-proxy-0.8.1-linux-glibc2.3-x86-32bit /usr/local/proxy-mysql


新建或编辑 /etc/mysql-proxy.cnf 文件,添加以下内容 ( 具体参数根据实际情况修改 ) :

vi /etc/mysql-proxy.cnf

[mysql-proxy]

admin-username = zhangdongyu

admin-password = 123123

daemon = true

keepalive = true

proxy-backend-addresses = 192.168.0.88:3306

proxy-read-only-backend-addresses = 192.168.0.88:3307

proxy-lua-script = /usr/local/proxy-mysql/share/doc/mysql-proxy/rw-splitting.lua

admin-lua-script = /usr/local/proxy-mysql/share/doc/mysql-proxy/admin-sql.lua

log-file = /usr/local/proxy-mysql/cn.log

log-level = debug

 

主要参数注解:


proxy-backend-addresses                    mysql 主库(写)地址

proxy-read-only-backend-addresses     mysql 从库(读)地址

proxy-lua-script                                 读写分离脚本

admin-lua-script                                 admin 脚本

admin-username                                 数据库用户名(主从上都需建立相同用户)

admin-password                                 数据库密码

daemon                                             daemon 进程运行

keepalive                                           保持连接(启动进程会有 2 个,一号进程用来监视二号进行,如果二号进程死掉自动重建,此参数在旧版本中无法使用)

编辑 profile/.bash_profile 脚本

vi /etc/profile( 或者 .bash_profile)

LUA_PATH="/usr/local/proxy-mysql/share/doc/mysql-proxy/?.lua"

export LUA_PATH

export PATH=$PATH:/usr/local/proxy-mysql/bin

:wq

source /etc/profile

 

为方便建立建立 mysql-proxy.sh 脚本

#!/bin/bash

mode=$1

if [ -z "$mode" ] ; then

mode="start"

fi

case $mode in

start)

mysql-proxy --defaults-file=/etc/mysql-proxy.cnf>/usr/local/proxy-mysql/cn.log &

;;

stop)

killall -9 mysql-proxy

;;

restart)

if $0 stop ; then

$0 start

else

echo  "Restart failed!"

exit 1

fi

;;

esac

exit 0 
 

启动 mysql-proxy

sh 脚本

启动: ./mysql-proxy.sh  ./mysql-proxy.sh start

 

重启: ./mysql-proxy.sh restart

停止: ./mysql-proxy.sh stop

 

测试:

为达到测试效果,修改 admin-sql.lua 脚本以下两行

vi /usr/local/proxy-mysql/share/doc/mysql-proxy/rw-splitting.lua

if not proxy.global.config.rwsplit then

        proxy.global.config.rwsplit = {

                min_idle_connections = 1,   # 修改最小连接为 1

                max_idle_connections = 2,   # 修改最大连接为 2

                is_debug = true            #debug 为 true

        }

end 

 

重启 mysql-proxy 代理

开启两个终端分别连接代理:

ONE ./mysql -h192.168.0.88 -uzhangdongyu -p123123 -P4040

TWO ./mysql -h192.168.0.88 -uzhangdongyu -p123123 -P4040

可看到连接成功信息:

 

操作 ONE 客户端:

执行 select 语句观察数据库 log 文件

select * from z_member_info;

观察主从库日志文件,发现查询发生在主库?

主库: 192.168.0.88:3306 日志文件: tail -f /usr/local/mysql/localstate/mysqlexecute.log

 

这是因为 mysql-proxy 代理会检测客户端连接,当连接没有超过 min_idle_connections 预设值时,不会进行读写分离,即查询操作会发生到主库上。

 

操作 TWO 客户端:

执行 select 语句观察数据库 log 文件

select * from z_member_info;

观察主从库日志文件,发现主库没有任何记录,查询日志记录在从库。

从库: 192.168.0.88:3306 日志文件: tail -f /usr/local/mysql3307/localstate/mysqlexecute.log

 

操作两个终端进行 insert 操作,会发现写操作始终被主库( 3306 )日志文件记录。

 

至此 mysql-proxy 安装测试完成。

 

注:生产环境一定要根据实际情况配置相关文件,至于 lua 文件强烈推荐读者自行修改,目前正在研究 lua 文件的优化与定制,不久会发上来(果断时间再说了,用到时候再仔细研究下..忙啊..)。

  • 大小: 5.4 KB
  • 大小: 3.2 KB
  • 大小: 784 Bytes
  • 大小: 2.8 KB
  • 大小: 825 Bytes
分享到:
评论

相关推荐

    使用mysql-proxy实现mysql读写分离

    ### 使用mysql-proxy实现MySQL读写分离 随着业务规模的不断扩大,数据库系统往往成为整个系统中的瓶颈之一。为了提高系统的响应速度以及数据处理能力,一种常用的技术手段就是采用**读写分离**的方式。读写分离的...

    安装LAP+mysql主从库 apache+mysql+proxy主从+PHP+discuz论坛 .docx

    3. MYSQL读写分离的实现方式:有四种常见的MYSQL读写分离实现方式,分别是MYSQL-Proxy读写分离、Amoeba读写分离、Mycat读写分离和基于程序读写分离。 4. MYSQL-Proxy读写分离:MYSQL-Proxy是MYSQL官方提供的中间件...

    MySQL-Proxy

    ### MySQL-Proxy 主从复制与读写分离搭建详解 #### 一、MySQL-Proxy简介 MySQL-Proxy 是一个轻量级的代理服务器,用于在客户端应用程序和 MySQL 服务器之间建立一层中间层。它能够实现诸如负载均衡、读写分离、...

    Docker搭建MySQLl基于ShardingSphere-Proxy读写分离(docker-compose)

    docker_compose搭建shardingSphereProxyMysql主从读写分离

    mysql-proxy 安装配置

    MySQL Proxy 是一个开源工具,它允许用户在 MySQL 客户端和服务器之间插入一个代理层,从而实现诸如负载均衡、故障切换、读写分离等高级功能。以下是对MySQL Proxy安装配置及其相关知识点的详细说明: 1. **安装...

    mysql-proxy实现读写分离1

    在本文中,我们将探讨如何利用MySQL Proxy实现一个简单的读写分离环境,并关注在配置过程中的一些关键点。 首先,读写分离是数据库高可用性和性能优化的重要策略。在主从复制的MySQL环境中,主服务器(Master)负责...

    MySQL读写分离架构与实践--mysql-proxy

    MySQL主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy/Amoeba)来提升数据库的并发负载能力 这样的方案来进行部署与实施的

    MySQL 主从配置(linux),mysql-proxy

    总结来说,MySQL主从配置和MySQL Proxy的结合使用,可以在Linux环境中实现高效、可靠的数据库管理,包括数据复制、故障切换和负载均衡。理解并熟练掌握这些技术,对于任何IT专业人士在处理大型数据库系统时都是至关...

    通过mysql-proxy完成mysql读写分离

    环境: 192.168.100.210 ... 208作为mysql-proxy. 106作为测试机器.相关软件下载: lua www.lua.org mysql-proxy http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/1. 在208上安装lua #tar zxvf lua-5.

    linux_基于主从结构读写分离MYSQL集群

    linux_基于主从结构读写分离MYSQL集群

    MySQL主从复制读写分离.zip

    MySQL主从复制与读写分离是数据库架构中的重要策略,用于提高系统性能和可用性。在高并发的互联网应用中,这种设计模式尤为常见。本文将深入探讨这两个概念及其实施方法。 **一、MySQL主从复制** MySQL主从复制是...

    mysql主从+读写分离宣贯.pdf

    【MySQL主从复制与读写分离】 MySQL主从复制是一种常用的数据备份和高可用性解决方案,它可以保证在主数据库服务器发生故障时,从库能够接管服务,保证业务连续性。同时,通过读写分离,可以将读操作分散到从库,...

    MySQL搭建Amoeba_读写分离.docx

    Amoeba 是一个基于 MySQL 的 proxy,能够集中地响应应用的请求,并根据用户事先设置的规则,将 SQL 请求发送到特定的数据库上执行,从而实现负载均衡、读写分离、高可用性等需求。 一、Amoeba 简介 Amoeba 是一个...

    proxy与mycat对比测试

    "方法.txt"可能包含了搭建测试环境和执行对比的具体步骤,如安装配置proxy和Mycat,设置MySQL主从复制,编写测试脚本,以及收集和分析性能数据等。"测试主从对比.docx"很可能是测试报告,详细记录了测试过程和结果,...

    LAMP+Proxy+读写分离

    配置MySQL-Proxy实现读写分离通常包括以下步骤: 1. 安装MySQL-Proxy软件,例如在Linux系统中通过wget下载,然后解压缩并移动到合适的位置。 2. 配置环境变量,将MySQL-Proxy的bin目录添加到PATH环境变量中,使系统...

    MySQL 主从同步 、 MySQL 读写分离 、 MySQL 性能调优 、 总结和答疑

    MySQL 主从同步、读写分离、性能调优 在本文中,我们将讨论 MySQL 主从同步、读写分离和性能调优的相关知识点。 MySQL 主从同步 MySQL 主从同步是指将一个 MySQL 服务器的数据复制到另一个 MySQL 服务器上,以便...

    mysql-proxy:springboot结合aop实现读写分离实例工程

    当db的读写量过高时,我们会备份一份或多份的从库用于做数据的读取,然后主库就主要承担写入的功能(也有读取需要,但压力不大),当db分好主从库后,我们还需要在项目实现自动连接主从库,达到读写分离的效果。...

    Ubuntu10下如何搭建MySQL Proxy读写分离探讨

    在本文中,我们将深入探讨如何在Ubuntu 10.04.2 LTS系统上搭建MySQL Proxy,实现数据库的读写分离。MySQL Proxy是一款轻量级的应用程序,它位于客户端和MySQL服务器之间,允许我们对客户端与服务器之间的通信进行...

    linux下mysql amoeba读写分离配置

    这里我们将探讨如何配置MySQL主从复制,以及使用Amoeba或MySQL-Proxy进行读写分离。 首先,让我们了解主从复制的基本原理。主从复制是一种异步复制模式,其中一台MySQL服务器(主服务器)处理所有的写操作,而其他...

Global site tag (gtag.js) - Google Analytics