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.- 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 读写分离的更多相关文章
- Linux MySQL Proxy 读写分离
导读 因为读写分离是建立在MySQL集群主从复制的基础上,还不了解的,先看我另一篇博客:点我直达 MySQL-Proxy简介 mysql-proxy是mysql官方提供的mysql中间件服务,上游可接 ...
- Mycat+MySql 主从复制-读写分离 看这一篇就够了
通过mycat和mysql的主从复制配合搭建数据库的读写分离,可以实现mysql的高可用性,下面我们来搭建mysql的读写分离. 1.一主一从 1.在node01上修改/etc/my.cnf的文件 ...
- 搭建基于MySQL的读写分离工具Amoeba
搭建基于MySQL的读写分离工具Amoeba: Amoeba工具是实现MySQL数据库读写分离的一个工具,前提是基于MySQL主从复制来实现的: 实验环境(虚拟机): 主机 角色 10.10.10.2 ...
- Amoeba搞定mysql主从读写分离
前言:一直想找一个工具,能很好的实现mysql主从的读写分离架构,曾经试用过mysql-proxy发现lua用起来很不爽,尤其是不懂lua脚本,突然发现了Amoeba这个项目,试用了下,感觉还不错,写 ...
- python实现mysql的读写分离及负载均衡
Oracle数据库有其公司开发的配套rac来实现负载均衡,目前已知的最大节点数能到128个,但是其带来的维护成本无疑是很高的,并且rac的稳定性也并不是特别理想,尤其是节点很多的时候. 但是,相对my ...
- MySQL ProxySQL读写分离实践
目的 在上一篇文章MySQL ProxySQL读写分离使用初探里初步介绍了ProxySQL的使用,本文继续介绍它的一些特点和DBProxy的性能差异.深入一些去了解ProxySQL,通过测试来说明Pr ...
- MySQL Router实现MySQL的读写分离
1.简介 MySQL Router是MySQL官方提供的一个轻量级MySQL中间件,用于取代以前老版本的SQL proxy. 既然MySQL Router是一个数据库的中间件,那么MySQL Rout ...
- MySQL的读写分离的几种选择
MySQL的读写分离的几种选择 MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 原址如下: http://heylinux.com/archives/1004. ...
- MySQL/MariaDB读写分离配置
DB读写分离描述 数据库的读写分离其实就是为了加减少数据库的压力:数据库的写入操作由主数据库来进行,读取操作由从数据库来进行操作.实现数据库读写分离技术是有很多方法的,在这里我就用一个比较简单的mys ...
- 使用mysql-proxy实现mysql的读写分离
前言: MySQL读写分离是指让master处理写操作,让slave处理读操作,非常适用于读操作量比较大的场景,可减轻master的压力.使用mysql-proxy实现mysql的读写分离,mysq ...
随机推荐
- HDU 2108 Shape of HDU (判断是不是凸多边形 叉乘)
Shape of HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- UWP 新手教程2——怎样实现自适应用户界面
系列文章 UWP新手教程1--UWP的前世今生 如上文所说的,布局面板依据可用的屏幕空间.指定界面元素的大小和位置. 比如StackPanel 会水平或垂直排列界面元素.Grid 布局与CSS 中的表 ...
- window批处理-5 start
作用 又一次启动一个单独窗体.在新窗体中运行命令 格式 start [/w] FileName demo bat: @echo off echo 在新窗体中打开txt文件.并等待新窗体正常退出(exi ...
- TestNG – Dependency Test
转自:http://www.mkyong.com/unittest/testng-tutorial-7-dependency-test/ In TestNG, we use dependOnMetho ...
- Release Candidate
RC_百度百科 https://baike.baidu.com/item/RC/7311964?fr=aladdin RC=Release Candidate,含义是"发布候选版" ...
- java map 装入list
需要生成多组数据的时候,应将map时候放入循环,否则循环出来会一直覆盖之前的,只能保存一条数据. 具体如下: if (rs.next()) { do { Map<String, String&g ...
- redis04-----Hash 哈希数据类型相关命令
Hash 哈希数据类型相关命令 hset key field value 这里的域就是键值对的键. 作用: 把key中 filed域的值设为value 注:如果没有field域,直接添加,如果有,则覆 ...
- SQL JOIN连接分类[转]
1.内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符):包括相等联接和自然联接: 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行: 2.外联接.外联接可以 ...
- 解决ubuntu没有/var/log/messages的问题
1:root身份打开 /etc/rsyslog.d/50-default.conf 2:把注释#去掉 #*.=info;*.=notice;*.=warn;\ # auth,authpriv.none ...
- java性能时间与空间消耗
Java性能时间与空间消耗 一.减少时间消耗 标准代码优化 (1) 将循环不变量的计算移出循环 例如:for (int i=0; i<size()*2; i++) { ... } ------& ...