Mysql实现非程序控制读写分离
五一假期,有个博友给我发邮件,说我的这篇blog:http://bobwu.blog.51cto.com/2918362/537077 只能通过程序员在程序中实现读写分离,咨询能否实现程序员无察觉的读写分析,呵呵,我明白意思。回答是肯定的,可以实现,这里面就用到了Mysql-proxy的功能。我在测试环境下搭建了一下,把过程写出来,大家看看,依旧不提供截图,仅提供命令行,方便大家粘贴复制:
Mysql-proxy安装配置:
安装mysql-proxy.需要按下列顺序安装其所依赖的包:
(一)安装LUA
#tar zxvf lua-5.1.tar.gz
#cd lua-5.1
用vi修改Makefile,使"INSTALL_TOP=/usr/local/lua",这样做的目的是为了是lua的所有文件都安装在目录/usr/local/lua/
#make posix
#make install
安装 libevent
#tar zxvf libevent-1.1a.tar.gz
#cd libevent-1.1a
#./configure --prefix=/usr/local/libevent
#make
#make install
安装check
#tar zxvf check-0.8.4.tar.gz
#cd check-0.8.4
#./configure
#make
#make install
设置安装mysql-proxy所需的环境变量.把下面的内容追加到/etc/profile中
export LUA_CFLAGS="-I/usr/local/lua/include" LUA_LIBS="-L/usr/local/lua/lib -llua -ldl" LDFLAGS="-L/usr/local/libevent/lib -lm"
export CPPFLAGS="-I/usr/local/libevent/include"
export CFLAGS="-I/usr/local/libevent/include"
然后执行 source /etc/profile (安装完mysql-proxy不再需要这些变量,可以删除之)
安装mysql(只安装mysql客户端即可)
#tar zxvf mysql-5.0.45.tar.gz
#cd mysql-5.0.45
#./configure --prefix=/usr/local/mysql --without-server
#make
#make install
安装mysql-proxy
#tar zxvf mysql-proxy-0.5.0.tar.gz
#cd mysql-proxy-0.5.0
#./configure --prefix=/usr/local/mysql-proxy --with-mysql=/usr/local/mysql --with-lua
#make
#make install
补充:主要的命令行选项
--help-all显示所有的帮助选项
--admin-address=host:port 管理主机及端口,默认是4041
--proxy-address=host:port 代理服务器的监听地址及端口,默认4040
--proxy-read-only-address=host:port 只读连接时,代理服务器的监听地址及端口。默认4042
--proxy-backend-addresses=host:port连接真实服务器的地址及监听端口,默认是3306,这是mysql代理最重要的选项,多个主机之间用空格隔开。使用rr算法。
--proxy-lua-script=file 指定lua脚本的名称
配置使用方法
2个mysql服务器的情形,本方案情景
mysql-proxy \ --proxy-backend-addresses=mysql_ip1:3306 \ --proxy-backend-addresses=mysql_ip2:3306 |
3个服务器的情形:一个主服务器,负责写入;2个从服务器,负责查询,依次类推。
mysql-proxy --proxy-backend-addresses=<master_ip> :3306\ --proxy-read-only-address=<slave_ip1>:3306 \ --proxy-read-only-address=<slave_ip2>:3306 |
启动mysql-proxy
编写脚本/usr/local/bin/mysql-proxy.sh其内容如下:
#!/bin/bash
LUA_PATH="/usr/local/mysql-proxy/share/mysql-proxy/?.lua" mysql-proxy --proxy-read-only-backend-addresses=<salve_IP>:3306 --proxy-
backend-addresses=<master_IP>:3306 --proxy-lua-script=/usr/local/mysql-proxy/share/mysql-proxy/rw-splitting.lua >> /var/log/mysql-proxy.log &
chmod 755 /usr/local/bin/mysql-proxy.sh;
执行命令/usr/local/bin/mysql-proxy.sh启动服务
功能测试
1、主从复制测试:在主数据库服务器上创建库和表,然后再插入记录,再登陆到从服务器,看是否也建立相一致的库和表以及记录。
mysql> create database hichina_db; Query OK, 1 row affected (0.01 sec) 在主数据库服务器创建库hichina_db mysql> create table hichinaren_tb(id int(3),name char(10)); Query OK, 0 rows affected (0.00 sec) 在主数据库服务器创建表hichinaren_db mysql> insert into first_tb values (001,'bob'); Query OK, 1 row affected (0.00 sec) 在主数据服务器的表hichinaren_db中插入记录 |
现在转到从数据库服务器,看是否同步了上面主数据库的数据
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | hichina_db | | mysql | | test | +--------------------+ 4 rows in set (0.01 sec) 数据库自动生成了 mysql> use hichina_db; mysql> show tables; 表也自动生成了 mysql> select * from hichinaren_tb; 记录存在。 |
2、读写分离:用mysql客户端程序如mysql登陆到mysql代理,然后执行读写操作,以测试读写分离的正确性。
转载于:https://blog.51cto.com/bobwu/558161
Mysql实现非程序控制读写分离相关推荐
- 数据库应用——Atlas代理MySQL集群实现读写分离
Atlas代理MySQL集群实现读写分离 一.Atlas简介和架构 1.1 环境准备 1.2 配置时间服务器 二.主服务器配置 2.1 master节点1的配置 2.2 master节点2的配置 2. ...
- MySQL之——MSS主从复制(读写分离)实现
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/52746393 前面,在博文<MySQL之--MS主从复制(读写分离)实现&g ...
- (含PPT)MySQL托管服务架构及读写分离的优化
关注我们获得更多内容 内容来源:2017 年 08 月 24 日,微软中国首席产品经理宋青见在"ODF 2017开源数据库论坛(北京)"进行<云原生的MySQL托管服务架构及 ...
- MySQL数据库主从复制与读写分离(图文详解!)
目录 前言 一:MySQL数据库主从复制与读写分离 1.什么是读写分离? 2.为什么要读写分离呢? 3.什么时候要读写分离? 4.主从复制与读写分离 5.mysql支持的复制类型 (1)STATEME ...
- 【纯干货】Amoeba实现MySQL主从同步与读写分离
[纯干货]Amoeba实现MySQL主从同步与读写分离 一.简介 amoeba简介 Amoeba(变形虫)项目,该开源框架于2008年开始发布一款 Amoeba for Mysql软件.这个软件致力于 ...
- mysql sharding 读取_MySQL读写分离(一)——sharding-jdbc
sharding-sphere是强大的读写分离.分表分库中间件,sharding-jdbc是sharding-sphere的核心模块.官方网站 springboot项目中集成sharding-jdbc ...
- mysql主从复制中间件_linux下mysql主从复制(第二篇读写分离) mycat 中间件
linux下mysql主从复制(第二篇读写分离) mycat 中间件 接着上篇文档补全,mysql 读写分离,在上篇文章案例下准备好Mycat-server-1.4-release-201510192 ...
- MySQL的主从复制与读写分离技术实例(一)主从复制
系统版本:CentOS 6.5 MySQL版本:mysql-5.5.38 生产环境下,如果对同一个数据库服务器即做写服务又做读服务,无论是从安全性.高可用性还是高并发等各个角度都不能满足实际需求, ...
- mysql主从和mycat读写分离的安装及验证
目录 一.背景介绍 二.安装mysql数据库(主从机器都需要先这样安装) 三.主从机配置 1.主服务器进行如下操作 2.从服务器进行如下操作 四.代理服务器安装和配置mycat读写分离 五.主从复制. ...
最新文章
- 关于std::string 在 并发场景下 __grow_by_and_replace free was not allocated 的异常问题
- 微软披露拓扑量子计算机计划!
- C# 虚函数和重载函数
- linux 内核阻塞,linux内核阻塞IO
- 退一步 - 王阳明的心学智慧
- Python中的条件语句和循环语句
- window oracle 只有bak文件怎么恢复_Oracle 11g R2 RAC数据库备份通过RMAN恢复到单实例数据库实现...
- [转载]android设置全屏和无标题
- Delphi:ADOConnection连接SQLServer自动断网问题解决
- 顶级MySQL主从复制企业应用
- linux_nmon监控教程,如何使用Nmon监控Linux系统性能
- ajax向php传参数对数据库操作
- ubuntu shell 直接输入密码
- iOS研发助手DoraemonKit技术实现(一)
- TP-LINK无线上网短信Wifi认证配置流程
- 随机生成手机号的java代码
- 信号与系统——抽样信号的傅里叶变换
- 03-平方矩阵的快速解法
- uniapp使用IPA苹果支付
- c语言 椭圆,C语言画圆椭圆
热门文章
- 用Asp.net 传送大文件
- C++中#error/assert/static_assert的区别及使用
- 【Dlib】dlib实现深度网络学习之 input层
- 男孩子学计算机和学医哪个好,你认为学医好还是读211大学的电子信息好?
- linux获取最高权限并取消_Linux 更新glibc 漏洞 可以获取最高权限
- java数组中怎么去重_java数组去重怎么弄???大神来解
- java 泛型对象实例化_在java中实例化泛型类型
- 有n个学生选修了c语言程序设计这门课程,C语言程序设计报告学生选修课系统(18页)-原创力文档...
- python 打印皮卡丘_Python到底是什么?学姐靠它拿了5个offer
- android mac测试地址,android获取有线网的Mac地址