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





静态分离:直接将服务器地址写入程序

   优点:
   缺点:
动态分离:通过代理服务器进行读写操作,由代理服务器判定读写操作,在主服务器上写数据,在从服务器上读数据。

(代理服务器不需要安装Mysql)

#=======================================================

(1)使用mysql-proxy实现读写分离

# iptables -F

    (master,slave,proxy,client服务器各一台)

     注意:(首先进行主从复制配置。然后开始在代理服务器上使用mysql-proxy进行读写分离。最后在客户端测试)

  

代理服务器进行的操作(10.0.199.3):

  # tar -xvf mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz

  # mv   mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit   /usr/local/mysql-proxy

    #  vim  /etc/ld.so.conf

     /usr/local/mysql-proxy/lib (导入)

   #  cd /usr/local/mysql-proxy/bin

  # ./mysql-proxy --proxy-backend-addresses=10.0.199.1:3306 --proxy-read-only-backend-
addresses=10.0.199.2:3306

--proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
--daemon --user=mysql --log-level=warning
--log-file=/var/log/mysql-proxy.log --max-open-files=2048 
--event-threads=4 --proxy-address=10.0.199.3
:3306  

解释:

  --proxy-backend-addresses            指定主服务器地址(写数据) 10.0.199.1

  --proxy-read-only-backend-addresses  指定从服务器地址(读数据) 10.0.199.2
  --proxy-lua-script                   指定用于读写分离的脚本程序
  --daemon                             指定以守护进程的方式运行
  --user=mysql                         指定运行的用户
  --log-level                          指定日志记录级别
  --log-file                           指定日志文件位置
  --max-open-files                     指定最大课打开的文件数,受操作系统限制
  --event-threads                      设置工作线程数
  --proxy-address                      设置监听的本机地址和端口 10.0.199.3(代理服务器)

 

    # lsof -i:3306 查看是否启动

主从服务器进行的操作(199.1、199.2):

# iptables -F

在主从服务器上对代理服务器进行授权,使代理服务器能够使用主从服务器上的此用户进行连接主从。

  mysql> grant all on *.* to ‘repuser‘@‘10.0.199.3‘ identified by ‘aixocm‘;

  mysql> flush privileges;           

  repuser是任意用户名 需要在代理服务器上创建该用户

因为下面在客户端进行测试时,需要用被授权的用户即该用户进行登录操作数据库                                                                    mysql> create user repuser;

客户端进行的操作(10.0.199.4)

测试:
客户端不必安装Mysql,但是必须要有mysql命令
# yum install mysql
# mysql -u repuser -h 10.0.199.3 -paixocm  -e "select * from sxkj.stu"
# mysql -u repuser -h 10.0.199.3 -paixocm -e "create table sxkj.class(id int primary key,name varchar(10) not null)"
也可以进入mysql进行操作
再查看主从服务器数据

测试时 若出现以下错误:

解决办法:

在主从服务器上:mysql> select user,host,password  from mysql.user;

                       mysql> drop user [email protected]; 然后再重新进行授权。

时间: 2024-10-30 08:18:34

使用mysql-proxy实现mysql读写分离的相关文章

MySQL Proxy 实现MySQLDB 读写分离

一.简述 MySQL Proxy是一个处于你的client端和MySQL server端之间的简单程序,它可以监测.分析或改变它们的通信.它使用灵活,没有限制,常见的用途包括:负载平衡,故障.查询分析,查询过滤和修改等等. MySQL Proxy就是这么一个中间层代理,简单的说,MySQL Proxy就是一个连接池,负责将前台应用的连接请求转发给后台的数据库,并且通过使用lua脚本,可以实现复杂的连接控制和过滤,从而实现读写分离和负 载平衡.对于应用来说,MySQL Proxy是完全透明的,应用

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

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

MySql之主从复制及读写分离

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

Mysql高级集群-读写分离Amoeba

一.环境介绍Master-IP:10.0.0.201Slave- IP:10.0.0.202Amobea-IP:10.0.0.203 二.安装JDK# mkdir /Amoeba# tar -xvf jdk-7u40-linux-x64.tar.gz -C /Amoeba/# vim /etc/profileJAVA_HOME=/Amoeba/jdk1.7.0_40export JAVA_HOME PATH=$JAVA_HOME/bin:$PATHexport PATH CLASSPATH=.:

mysql基于amoeba配置读写分离

                     Mysql高级集群-读写分离Amoeba                          mysql在配置好主从复制之后,已经达到双机热备和容灾的效果.此博客是建立在主从复制的前提上 ,mysql基于amoeba的配置读写分离在我看来:就是为了达到数据库高可用性,安全性以及高并发,达到 负载均衡的效果.说简单点,我个人觉得意思就是让主服务器轻松点,不易挂掉.还有就是充分利用从服务器.  本人水平有限,望各位大神多多指点指点.我非常乐意听取意见. 此版本

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

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

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

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

【纯干货】Amoeba实现MySQL主从同步与读写分离

[纯干货]Amoeba实现MySQL主从同步与读写分离 一.简介 amoeba简介 Amoeba(变形虫)项目,该开源框架于2008年开始发布一款 Amoeba for Mysql软件.这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的 时候充当SQL路由功能,专注于分布式数据库代理层(Database Proxy)开发.座落与 Client.DB Server(s)之间,对客户端透明.具有负载均衡.高可用性.SQL 过滤.读写分离.可路由相关的到目标数据库.可并发

MySQL主从同步、读写分离配置步骤

现在使用的两台服务器已经安装了MySQL,全是rpm包装的,能正常使用. 为了避免不必要的麻烦,主从服务器MySQL版本尽量保持一致; 环境:192.168.0.1 (Master) 192.168.0.2 (Slave) MySQL Version:Ver 14.14 Distrib 5.1.48, for pc-linux-gnu (i686) using readline 5.1 1.登录Master服务器,修改my.cnf,添加如下内容: server-id = 1 //数据库ID号,

MySQL主从同步、读写分离配置步骤、问题解决笔记

根据要求配置MySQL主从备份.读写分离,结合网上的文档,对搭建的步骤和出现的问题以及解决的过程做了如下笔记:       现在使用的两台服务器已经安装了MySQL,全是rpm包装的,能正常使用.       为了避免不必要的麻烦,主从服务器MySQL版本尽量保持一致; 环境:192.168.0.1 (Master)           192.168.0.2 (Slave) MySQL Version:Ver 14.14 Distrib 5.1.48, for pc-linux-gnu (i6