当前位置: 首页 > news >正文

Centos 搭建Mysql-Proxy 读写分离

 

 

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.5- linux-rhel5-x86-64bit.tar.gz

   mkdir /usr/local/mysql-proxy

   cp ./ mysql-proxy-0.8.5-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 '321';

   mysql>use aa;

   mysql>create table tab1(id int auto_increment,name varchar(32) 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.132 –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, 1 row affected (0.00 sec)

mysql> insert into tab1 (name) values('proxy222');
Query OK, 1 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;

 

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

转载于:https://www.cnblogs.com/willamwang/p/8183824.html

相关文章:

  • 【小白学云计算】10分钟搭建一台web服务器!(就是快!)
  • [docker]docker网络-直接路由模式
  • SQL 简介
  • Jenkins 集成 Sonar
  • 初识HTTP
  • jfinal-admin 后台框架永久开源
  • 数据库索引实例之二consistent gets
  • Windows下搭建Redis集群
  • iOS系列开发-版本控制工具Git的使用
  • workSpace中多个工程方法互调
  • PXE网络装机服务器
  • 简单升级了一下可着色的ListBox控件
  • jsoup入门
  • ospf和rip和静态路由三者的区别?各能实现什么功能?
  • 【译】ASP.NET Identity Core 从零开始
  • [数据结构]链表的实现在PHP中
  • 2017前端实习生面试总结
  • const let
  • create-react-app项目添加less配置
  • iOS小技巧之UIImagePickerController实现头像选择
  • java第三方包学习之lombok
  • Java读取Properties文件的六种方法
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • mysql常用命令汇总
  • MySQL几个简单SQL的优化
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • nodejs实现webservice问题总结
  • 从0到1:PostCSS 插件开发最佳实践
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 判断客户端类型,Android,iOS,PC
  • 字符串匹配基础上
  • Java数据解析之JSON
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • !!java web学习笔记(一到五)
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #QT(TCP网络编程-服务端)
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (Matlab)使用竞争神经网络实现数据聚类
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (一)Neo4j下载安装以及初次使用
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)Windows2003安全设置/维护
  • (转)甲方乙方——赵民谈找工作
  • ./configure,make,make install的作用(转)
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • @RunWith注解作用
  • [ C++ ] STL---string类的模拟实现
  • [ 蓝桥杯Web真题 ]-布局切换
  • [20170705]diff比较执行结果的内容.txt
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——
  • [BZOJ1178][Apio2009]CONVENTION会议中心
  • [github全教程]github版本控制最全教学------- 大厂找工作面试必备!