mysql配置mysql-proxy读写分离
MySQL配置读写分离
192.168.23.131与192.168.23.132两台服务器,131是主,132是从,131是读写,132是只读。myql-proxy的IP是192.168.23.130
下面开整
先安装lua
Lua 是一个小巧的脚本语言。Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。
一个完整的Lua解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。
先安装可能的依赖包
[root@bogon ~]# yum -y install gcc* gcc-c++* autoconf* automake* zlib* libxml* ncurses-devel* libmcrypt* libtool* flex* pkgconfig*
libevent* glib* readline-devel [root@bogon ~]# mkdir /opt/install/ [root@bogon ~]# cd /opt/install/ [root@bogon install]# wget http://www.lua.org/ftp/lua-5.3.2.tar.gz [root@bogon install]# tar zxvf lua-5.3.2.tar.gz [root@bogon install]# cd lua-5.3.2 [root@bogon install]# make linux
下面开始安装mysql-proxy
安装之前先看一下自己机器是否是64位系统
查看centos内核的版本
[root@bogon install]# cat /etc/issue
查看linux版本
[root@bogon install]# cat /proc/version
[root@bogon install]# lsb_release -a
如果以上命令都没有出现64字眼说明是32位系统,这里主要是确定你将要下载的mysql-proxy版本应该是哪个。
下载地址:http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/
[root@bogon install]# cd /opt/install [root@bogon install]# wget http://cdn.mysql.com/archives/mysql-proxy/mysql-proxy-0.8.4-linux-el6-x86-64bit.tar.gz [root@bogon install]# tar zxvf mysql-proxy-0.8.4-linux-el6-x86-64bit.tar.gz
[root@bogon install]# mkdir /usr/local/mysql-proxy
[root@bogon install]# cp /opt/install/mysql-proxy-0.8.4-linux-rhel5-x86-32bit/* /usr/local/mysql-proxy
[root@bogon install]# cd /usr/local/mysql-proxy
[root@bogon install]# export PATH=$PATH:/usr/local/mysql-proxy/bin/
编辑mysql-proxy配置文件
编辑mysql-proxy配置文件
[root@bogon install]# cp /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua /usr/local/mysql-proxy/
[root@bogon install]# vi rw-splitting.lua
找到:
if not proxy.global.config.rwsplit then
proxy.global.config.rwsplit = {
min_idle_connections = 4,
max_idle_connections = 8, is_debug = false
}
end
这里的4、8是指定链接数,大家可以在做试验时调整为1。
ok,保存,退出。
mysql-proxy --proxy-read-only-backend-addresses=192.168.23.132:3306 --proxy-backend-addresses=192.168.2.131:3306 --proxy-lua-script=/opt/mysql-proxy/share/rw-splitting.lua&
这里的192.168.23.131与192.168.23.132是主从数据库。参见http://blog.csdn.net/e421083458/article/details/19574049
以上命令后缀追加&表示为后端任务。
打开4040端口防火墙端口,因为mysql-proxy监听端口是4040再也不是3306了。正好做以区分。
[root@bogon install]# /sbin/iptables -I INPUT -p tcp --dport 4040 -j ACCEPT [root@bogon install]# /etc/rc.d/init.d/iptables save [root@bogon install]# service iptables save
查看监听情况:
[root@bogon install]# netstat -tlp | grep mysql-proxy tcp 0 0 *:yo-main *:* LISTEN 13364/mysql-proxy
yo-main很奇怪吧,对我也奇怪,不管它了,下面我们测试一下功能吧。
刚刚我们提到的192.168.23.131与192.168.23.132两台服务器,131是主,132是从,131是读写,132是只读。myql-proxy的IP是192.168.23.130
创建用于读写分离的数据库连接用户
在131服务器上操作以下命令:
[root@bogon ~]# mysql -uroot -p123456 mysql> grant all on *.* to 'proxy'@'192.168.23.130' identified by '123456';
由于我们设置了131与132的主从复制,所以此时132也执行了以上命令,我们可以确定一下。
在132服务上操作以下命令:
mysql> select user,password,host from mysql.user; +--------+-------------------------------------------+----------------+
| user | password | host |
+--------+-------------------------------------------+----------------+
| root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | localhost |
| root | | bogon |
| root | | 127.0.0.1 |
| proxy | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | 192.168.23.130 |
+--------+-------------------------------------------+----------------+
rows in set (0.00 sec)
没错结果存在。
但是我们要做的试验是测试读写分离,所以要让这两台服务器有误差才行。所以暂停132的从服务:
mysql> slave stop;
下面我们在131服务器上操作以下命令:
mysql> insert into first_tb values (,’first’);
mysql> insert into first_tb values (,’second’);
最后再到132上确认一下数据是否有误差,下面试验开始。
在131上打开4个终端,依次敲以下的命令:
[root@bogon ~]# mysql -uproxy -p123456 -P4040 -h192.168.23. mysql> select * from first_db.first_tb;
你会发现结果会有不一样,那证明配置试验成功。也可以多此尝试以上两行代码直到得到结果。
试验结束记得将slave start,方法参照http://blog.csdn.net/e421083458/article/details/19574049
追加内容:设置mysql-proxy服务脚本。
#!/bin/sh #
# mysql-proxy This script starts and stops the mysql-proxy daemon
#
# chkconfig: -
# processname: mysql-proxy
# description: mysql-proxy is a proxy daemon to mysql # Source function library.
. /etc/rc.d/init.d/functions #PROXY_PATH=/usr/local/bin
PROXY_PATH=/opt/mysql-proxy/bin prog="mysql-proxy" # Source networking configuration.
. /etc/sysconfig/network # Check that networking is up.
[ ${NETWORKING} = "no" ] && exit # Set default mysql-proxy configuration.
#PROXY_OPTIONS="--daemon" PROXY_OPTIONS="--proxy-read-only-backend-addresses=192.168.23.132:3306 --proxy-backend-addresses=192.168.23.131:3306 --proxy-lua-script=/opt/mysql-proxy/share/rw-splitting.lua" PROXY_PID=/opt/mysql-proxy/run/mysql-proxy.pid # Source mysql-proxy configuration.
if [ -f /etc/sysconfig/mysql-proxy ]; then
. /etc/sysconfig/mysql-proxy
fi PATH=$PATH:/usr/bin:/usr/local/bin:$PROXY_PATH
# By default it's all good
RETVAL= # See how we were called.
case "$1" in
start)
# Start daemon.
echo -n $"Starting $prog: "
$NICELEVEL $PROXY_PATH/mysql-proxy $PROXY_OPTIONS --daemon --pid-file=$PROXY_PID --user=root --log-level=debug --log-file=/opt/mysql-proxy/log/mysql-proxy.log
RETVAL=$?
echo
if [ $RETVAL = ]; then
touch /var/lock/subsys/mysql-proxy]
echo "ok"
fi
;;
stop)
# Stop daemons.
echo -n $"Stopping $prog: "
killproc $prog
RETVAL=$?
echo
if [ $RETVAL = ]; then
rm -f /var/lock/subsys/mysql-proxy
rm -f $PROXY_PID
fi
;;
restart)
$ stop
sleep
$ start
;;
condrestart)
[ -e /var/lock/subsys/mysql-proxy ] && $ restart
;;
status)
status mysql-proxy
RETVAL=$?
;;
*)
echo "Usage: $0 {start|stop|restart|status|condrestart}"
RETVAL=
;;
esac
exit $RETVAL
启动脚本:
[root@bogon init.d]# /opt/mysql-proxy/init.d/mysql-proxy start
mysql配置mysql-proxy读写分离的更多相关文章
- Mysql主从配置,实现读写分离
大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...
- 黄聪:Mysql主从配置,实现读写分离
大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...
- MySQL中间件之ProxySQL_读写分离/查询重写配置
MySQL中间件之ProxySQL_读写分离/查询重写配置 Posted on 2016-12-25 by mark blue, mark Leave a comment MySQL 1.闲扯几句 读 ...
- MySQL主从同步、读写分离配置步骤、问题解决笔记
MySQL主从同步.读写分离配置步骤.问题解决笔记 根据要求配置MySQL主从备份.读写分离,结合网上的文档,对搭建的步骤和出现的问题以及解决的过程做了如下笔记: 现在使用的两台服务器已经 ...
- MySql的主从复制以及读写分离详解
MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中, ...
- 基于Mysql-Proxy实现Mysql的主从复制以及读写分离(上)
基于Mysql-Proxy实现Mysql的主从复制以及读写分离(上) 上周BOSS给分配任务让实现一下Mysql数据库的主从复制以及读写分离,然后花了一盏茶的功夫进行了调研,发现主从复制数据库进行一番 ...
- MySQL主从复制技术与读写分离技术amoeba应用
MySQL主从复制技术与读写分离技术amoeba应用 前言:眼下在搭建一个人才站点,估计流量会非常大,须要用到分布式数据库技术,MySQL的主从复制+读写分离技术.读写分离技术有官方的MySQL-pr ...
- Mysql 高可用(MHA)-读写分离(Atlas)-分布式架构(Mycat)
Mysql 高可用(MHA)-读写分离(Atlas) 1. 搭建主从复制(一主两从) 1.1 准备环境 1 主库:10.0.0.51/db01 2 从库:10.0.0.52/db02,10.0.0.5 ...
- mysql数据库主从同步读写分离(一)主从同步
1.mysql数据库主从同步读写分离 1.1.主要解决的生产问题 1.2.原理 a.为什么需要读写分离? 一台服务器满足不了访问需要.数据的访问基本都是2-8原则. b.怎么做? 不往从服务器去写了 ...
- 基于Mysql-Proxy实现Mysql的主从复制以及读写分离(下)
基于Mysql-Proxy实现Mysql的主从复制以及读写分离(下) 昨天谈到了Mysql实现主从复制,但由于时间原因并未讲有关读写分离的实现,之所以有读写分离,是为了使数据库拥有双机热备功能,至于双 ...
随机推荐
- HQL多种查询实现
1.返回int public int countByUsername(String username) { String hql = "select count(*) from BeanCa ...
- 1.值得推荐的C/C++框架和库 (转)
值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的 ...
- Java中Unicode的编码和实现
Unicode的编码和实现 大概来说,Unicode编码系统可分为编码方式和实现方式两个层次. 编码方式 字符是抽象的最小文本单位.它没有固定的形状(可能是一个字形),而且没有值.“A”是一个字符,“ ...
- NOI题库刷题日志 (贪心篇题解)
这段时间在NOI题库上刷了刷题,来写点心得和题解 一.寻找平面上的极大点 2704:寻找平面上的极大点 总时间限制: 1000ms 内存限制: 65536kB 描述 在一个平面上,如果有两个点( ...
- NOIP2013
DAY1 转圈游戏 列出式子(x+km)%n,快速幂. // codevs3285 #include<algorithm> #include<iostream> #includ ...
- 自动存储管理 ASM (转)
文章转自:http://www.itpub.net/thread-1342473-1-1.html 自动存储管理 (ASM) ASM 是 Oracle 数据库 10g 中一个非常出色的新特性,它以平台 ...
- 应用服务器Glassfish任意文件读取漏洞
catalogue . 前言和技术背景 . Glassfish安装配置 . 漏洞利用 . 漏洞缓解(修复) 1. 前言和技术背景 0x1: GlassFish是什么 GlassFish 是用于构建 J ...
- 心血来潮学python
第一次见python就被吸引了,嗯,前面在linux下调试过一些小段代码.最近工作都在windows下面,也懒得换去unbuntu,所以想着在win下安装python. 之前不知道用什么方法装的pyt ...
- 判断请求是不是ajax
public static bool IsAjaxRequest(HttpRequest request) { if (request == null) { throw new ArgumentNul ...
- 使用uWSGI部署django项目
先说说什么是uWSGI吧,他是实现了WSGI协议.uwsgi.http等协议的一个web服务器,那什么是WSGI呢? WSGI是一种Web服务器网关接口.它是一个Web服务器(如nginx)与应用服务 ...