Mysql 读写分离

主:192.168.153.130

从:193.168.153.131

Mysql-Proxy:193.168.153.132

这里省略mysql主从同步,如果有需要,请查看:Mysql,主从同步

1、 安装Lua

官网下载:http://www.lua.org/download.html

Lua 是一个小巧的脚本语言。Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。

一个完整的Lua解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。

 1)、安装lua需要依赖很多软件包。

 可以通过rpm -qa | grep name检查以下软件是否安装:

 gcc* gcc-c++* autoconf* automake* zlib* libxml* ncurses-devel* libmcrypt* libtool* flex* pkgconfig* libevent glib*

 若缺少相关的软件包,可通过yum -y install方式在线安装,或直接从系统安装光盘中找到并通过rpm -ivh方式安装。(我的话一般是直接在系统光盘软件库中找到直接rpm安装的,有些找不到,则先在网上下载然后在ftp传给linux再进行安装)

2)、依赖软件安装完毕后则进行编译安装lua

 MySQL-Proxy的读写分离主要是通过rw-splitting.lua脚本实现的,因此需要安装lua。

 官网下载:http://www.lua.org/download.html(下载源码包)

wget http://www.lua.org/ftp/lua-5.1.4.tar.gz

tar zxvf lua-5.1.4.tar.gz

cd lua-5.1.4

make linux

make install

export LUA_CFLAGS="-I/usr/local/include" LUA_LIBS="-L/usr/local/lib -llua -ldl" LDFLAGS="-lm"

2、 安装mysql-proxy

1)、首先查看linux版本确认是32位还是64为系统

 查看linux内核版本

cat /etc/issue

 查看linux版本

cat /proc/version

 2)、按系统位数下载

https://downloads.mysql.com/archives/proxy/

 3)、安装

   tar –zxvf mysql-proxy-0.8.- linux-rhel5-x86-64bit.tar.gz

   mkdir /usr/local/mysql-proxy

   cp ./ mysql-proxy-0.8.-linux-rhel5-x86-64bit/* /usr/local/mysql-proxy

   cd /usr/local/mysql-proxy

3、 读写分离测试

1)、修改rw-splitting.lua文件

修改默认连接,进行快速测试,不修改的话要达到连接数为4时才启用读写分离

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

 # vi rw-splitting.lua

 2)、修改完成后,启动mysql-proxy

cd /usr/local/mysql/bin

./mysql-proxy --proxy-read-only-backend-addresses=192.168.153.131:3306 --proxy-backend-addresses=192.168.153.130:3306 --proxy-lua-script=/usr/local/mysql-proxy/rw-splitting.lua &

参数:

     --proxy-read-only-backend-addresses  #只读服务器地址(ip)

     --proxy-backend-addresses       #服务器地址(主服务器)

     --proxy-lua-script            #lua脚本路劲

&                     #表示后台执行

 3)、创建用于读写分离的数据库连接用户

  用户名:proxy1

  密  码:321

   mysql>grant all on *.* to 'proxy1'@'192.168.153.132' identified by '';

   mysql>use aa;

   mysql>create table tab1(id int auto_increment,name varchar() not null,primary key(id));

【因为已经开启了主从复制所以,130、131主机mysql中都创建了这个用户】

 4)、测试登陆账号proxy1@192.168.153.132进行添加数据

 可以使用任意ip客户端登陆这个账号

 在192.168.153.132登陆:

mysql -u proxy1 -P4040 -h192.168.153. –p
mysql> use aa;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A Database changed
mysql> insert into tab1 (name) values('proxy111');
Query OK, row affected (0.00 sec) mysql> insert into tab1 (name) values('proxy222');
Query OK, row affected (0.00 sec)

在两个mysql中查看结果:一致

结果表明:账号使用

 5)、关闭131mysql的从复制

mysql> stop slave;

6)、证明写分离

使用proxy1@192.168.95.13账号打开多个客户端进行插入数据

   mysql> insert into tab1 (name) values('stop_slave11111');
….
mysql> insert into tab1 (name) values('stop_slave6666’);

 查看:

  分别登陆11mysql与12mysql查看aa.tab1中的数据

  主数据库:

从数据库:

结果中显示插入的数据存在与主数据库,而从数据库没有,所以证明写能够分离。

7)、证明读分离

使用proxy1@192.168.95.13账号登陆mysql,查看aa.tab1中的数据

   mysql>use aa;

   mysql>select*from tab1;

结果中显示只有从数据库的数据,结合上面的测试,可以证明读分离。可以继续加入数据,查看是否是主写从读。

Centos 搭建Mysql-Proxy 读写分离的更多相关文章

  1. Linux MySQL Proxy 读写分离

    导读 因为读写分离是建立在MySQL集群主从复制的基础上,还不了解的,先看我另一篇博客:点我直达 MySQL-Proxy简介 mysql-proxy是mysql官方提供的mysql中间件服务,上游可接 ...

  2. Mycat+MySql 主从复制-读写分离 看这一篇就够了

    ​ 通过mycat和mysql的主从复制配合搭建数据库的读写分离,可以实现mysql的高可用性,下面我们来搭建mysql的读写分离. 1.一主一从 1.在node01上修改/etc/my.cnf的文件 ...

  3. 搭建基于MySQL的读写分离工具Amoeba

    搭建基于MySQL的读写分离工具Amoeba: Amoeba工具是实现MySQL数据库读写分离的一个工具,前提是基于MySQL主从复制来实现的: 实验环境(虚拟机): 主机 角色 10.10.10.2 ...

  4. Amoeba搞定mysql主从读写分离

    前言:一直想找一个工具,能很好的实现mysql主从的读写分离架构,曾经试用过mysql-proxy发现lua用起来很不爽,尤其是不懂lua脚本,突然发现了Amoeba这个项目,试用了下,感觉还不错,写 ...

  5. python实现mysql的读写分离及负载均衡

    Oracle数据库有其公司开发的配套rac来实现负载均衡,目前已知的最大节点数能到128个,但是其带来的维护成本无疑是很高的,并且rac的稳定性也并不是特别理想,尤其是节点很多的时候. 但是,相对my ...

  6. MySQL ProxySQL读写分离实践

    目的 在上一篇文章MySQL ProxySQL读写分离使用初探里初步介绍了ProxySQL的使用,本文继续介绍它的一些特点和DBProxy的性能差异.深入一些去了解ProxySQL,通过测试来说明Pr ...

  7. MySQL Router实现MySQL的读写分离

    1.简介 MySQL Router是MySQL官方提供的一个轻量级MySQL中间件,用于取代以前老版本的SQL proxy. 既然MySQL Router是一个数据库的中间件,那么MySQL Rout ...

  8. MySQL的读写分离的几种选择

    MySQL的读写分离的几种选择 MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 原址如下: http://heylinux.com/archives/1004. ...

  9. MySQL/MariaDB读写分离配置

    DB读写分离描述 数据库的读写分离其实就是为了加减少数据库的压力:数据库的写入操作由主数据库来进行,读取操作由从数据库来进行操作.实现数据库读写分离技术是有很多方法的,在这里我就用一个比较简单的mys ...

  10. 使用mysql-proxy实现mysql的读写分离

     前言: MySQL读写分离是指让master处理写操作,让slave处理读操作,非常适用于读操作量比较大的场景,可减轻master的压力.使用mysql-proxy实现mysql的读写分离,mysq ...

随机推荐

  1. 最简单的基于FFmpeg的AVDevice样例(读取摄像头)

    =====================================================最简单的基于FFmpeg的AVDevice样例文章列表: 最简单的基于FFmpeg的AVDev ...

  2. 第六十题(在O(1)时间内删除链表结点)

    题目:给定链表的头指针和一个结点指针,在O(1)时间删除该结点. 思路:将待删除节点下一个节点的数据赋给当前节点.删除下一个节点就可以.

  3. git常用知识笔记

    学习资料: http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 http://codi ...

  4. Bootstrap progress-bar

    1.进度条 在网页中,进度条的效果并不少见,比如一个评分系统,比如加载状态等.就如下图所示的一个评分系统,他就是一个简单的进度条效果: 进度条和其他独立组件一样,开发者可以根据自己的需要,选择对应的版 ...

  5. Axure Base 01

    名词解释: 线框图:一般就是指产品原型,比如:把线框图尽快画出来和把原型尽快做出来是一个意思. axure元件:也叫axure组件或axure部件,系统自带了一部分最基础常用的,网上也有很多别人做好的 ...

  6. UI标签库专题三:JEECG智能开发平台 FormValidation(表单提交及验证标签)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhangdaiscott/article/details/28484209  自己定义弹出框提示 ...

  7. 运用Links方法安装插件

    方法如下: (1)在Eclipse的安装目录下新建两个文件夹:一个用来存放插件,取名为myplugins:另一个用来存放link文件,取名为links. (2)将下载的插件解压缩到myplugins目 ...

  8. java时间类型转换 JsonValueProcessor

    问题描述: java里面时间类型转换成json数据就成这样了:"createTime":{"date":30,"day":3,"h ...

  9. open调用过程

    1. 首先传到vfs的do_sys_open,在open.c中. long do_sys_open(int dfd, const char __user *filename, int flags, u ...

  10. skynet源码阅读<1>--lua与c的基本交互

    阅读skynet的lua-c交互部分代码时,可以看到如下处理: struct skynet_context * context = lua_touserdata(L, lua_upvalueindex ...