Mysql读写分离方案-MySQL Proxy环境部署记录

Mysql的读写分离可以使用MySQL Proxy和Amoeba实现,其实也可以使用MySQL-MMM实现读写分离的自动切换。MySQL Proxy有一项强大功能是实现"读写分离",基本原理是让主数据库处理写方面事务,让从库处理SELECT查询;Amoeba for MySQL是一款优秀的中间件软件,同样可以实现读写分离,负载均衡等功能。下面重点说下Mysql Proxy:

MySQL Proxy处于客户端应用程序和MySQL服务器之间,通过截断、改变并转发客户端和后端数据库之间的通信来实现其功能。代理服务器是和TCP/IP协议打交道,
而要理解MySQL Proxy的工作机制,同样要清楚MySQL客户端和服务器之间的通信协议,MySQL Protocol 包括认证和查询两个基本过程:
.................................
认证过程包括:
1)客户端向服务器发起连接请求
2)服务器向客户端发送握手信息
3)客户端向服务器发送认证请求
4)服务器向客户端发送认证结果
................................
如果认证通过,则进入查询过程:
1)客户端向服务器发起查询请求
2)服务器向客户端返回查询结果
当然,这只是一个粗略的描述,每个过程中发送的包都是有固定格式的。MySQL Proxy要做的,就是介入协议的各个过程。首先MySQL Proxy以服务器的身份接受客户端请求,
根据配置对这些请求进行分析处理,然后以客户端的身份转发给相应的后端数据库服务器,再接受服务器的信息,返回给客户端。所以MySQL Proxy需要同时实现客户端和服务
器的协议。由于要对客户端发送过来的SQL语句进行分析,还需要包含一个SQL解析器。可以说MySQL Proxy相当于一个轻量级的MySQL了,实际上,MySQL Proxy的admin server
是可以接受SQL来查询状态信息的。

MySQL Proxy通过lua 脚本来控制连接转发的机制。主要的函数都是配合MySQL Protocol各个过程的,这一点从函数名上就能看出来:
connect_server()
read_handshake()
read_auth()
read_auth_result()
read_query()
read_query_result()

至于为什么采用lua 脚本语言,大概是因为MySQL Proxy中采用了wormhole 存储引擎 的关系吧,这个虫洞存储引擎很有意思,数据的存储格式就是一段lua脚本。

Mysql Proxy的原理图

顺便贴下Mysql Proxy的工作拓扑图

部署MySQL Proxy实现读写分离并提高并发负载的操作记录

0)机器环境

ip地址              角色         主机名
182.48.115.237     master      master-node
182.48.115.236     slave1      slave-node1
182.48.115.238     slave2      slave-node2
182.48.115.233     proxy       proxy-node

四台机器都关闭防火墙和selinux

绑定hosts设置(四台机器都要操作)
[[email protected] ~]# vim /etc/hosts
......
182.48.115.237   master-node
182.48.115.236   slave-node1
182.48.115.238   slave-node2
182.48.115.233   proxy-node

1)Mysql主从复制部署(本案例是一主两从架构)

mysql安装参考:http://www.cnblogs.com/kevingrace/p/6109679.html
mysql主从部署参考:http://www.cnblogs.com/kevingrace/p/6256603.html

2)在proxy机器上安装mysql-proxy

时间: 2024-12-21 18:41:35

Mysql读写分离方案-MySQL Proxy环境部署记录的相关文章

mysql读写分离实现 jdk+mycat环境部署

DB Proxy,数据库中间件 mycat功能 1. 读写分离 M-S-S  M-M-S-S2. 负载均衡   Galera Cluster3. 支持数据的分片自动路由与聚合 同类产品MySQL Proxy          MySQL官方    Atlas                     奇虎360DBProxy                美团点评cober                    阿里巴巴MyCat                   阿里巴巴 Mycat概述Myc

实现MySQL读写分离,MySQL性能调优

实现MySQL读写分离 1.1 问题 本案例要求配置2台MySQL服务器+1台代理服务器,实现MySQL代理的读写分离: 用户只需要访问MySQL代理服务器,而实际的SQL查询.写入操作交给后台的2台MySQL服务器来完成 其中Master服务器允许SQL查询.写入,Slave服务器只允许SQL查询 1.2 方案 使用4台RHEL 7.2虚拟机,如图-1所示.其中192.168.4.10.192.168.4.20分别作为MySQL主.从服务器,是整个服务的后端:另一台 192.168.4.100

Database基础(六):实现MySQL读写分离、MySQL性能调优

一.实现MySQL读写分离 目标: 本案例要求配置2台MySQL服务器+1台代理服务器,实现MySQL代理的读写分离: 用户只需要访问MySQL代理服务器,而实际的SQL查询.写入操作交给后台的2台MySQL服务器来完成 其中Master服务器允许SQL查询.写入,Slave服务器只允许SQL查询 方案: 使用4台RHEL 7.2虚拟机,如下图所示.其中192.168.4.10.192.168.4.20分别作为MySQL主.从服务器,是整个服务的后端:另一台 192.168.4.100作为MyS

6\MySQL 主从同步 、 MySQL 读写分离 、 MySQL 性能调优

day06一.mysql主从同步 二.数据读写分离三.MySQL优化++++++++++++++++++++++++++++++++一.mysql主从同步 1.1 主从同步介绍?从库服务器自动同步主库上数据(被客户端访问的数据库服务器做主库服务器)1.2 结构 54 55 systemctl start mysqld systemctl start mysqld主master数据库服务器 从slave数据库服务器 1.3 配置主从同步结构?1.3.1主库角色主机的配置1 用户授权mysql> g

MYSQL读写分离解决方案:MariaDB MaxScale部署实录

MASTER(KING01) [[email protected] ~]# mysql -uroot -pabcd.1234 Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 173 Server version: 5.5.5-10.2.12-MariaDB-log Source distribution Copyright (c) 2000, 2013, Oracle an

mysql读写分离amoeba实现

用amoeba配合mysql主从构建mysql读写分离 1 mysql主从配置 mysql master192.168.11.177 mysql slave192.168.11.178 amoeba 主机192.168.11.179 俩台虚拟机上 yum install mysqlmysql-serevr mysql-devel(没有用,防止以后用) /etc/init.d/mysqldstart mysqladmin -u rootpassword '123456' chkconfig mys

实现MySQL读写分离 部署集群基础环境(有图)

实现MySQL读写分离 部署集群基础环境 1 实现MySQL读写分离1.1 问题 本案例要求配置2台MySQL服务器+1台代理服务器,实现MySQL代理的读写分离: 用户只需要访问MySQL代理服务器,而实际的SQL查询.写入操作交给后台的2台MySQL服务器来完成 其中Master服务器允许SQL查询.写入,Slave服务器只允许SQL查询 1.2 方案 使用4台RHEL 7.2虚拟机,如图-1所示.其中192.168.4.10.192.168.4.20分别作为MySQL主.从服务器,是整个服

关于Mysql Proxy LUA实现Mysql读写分离

关于Mysql Proxy LUA读写分离是本文要介绍的内容,主要是来了解Mysql Proxy LUA的学习内容,具体内容来看本文详解,先来下载匹配的版本: http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/ 下载最新版的二进制版本以mysql-proxy-0.8.0-linux-glibc2.3-x86-32bit为例.www.lua.org 下载lua. 1.通过mysql代理mysql-proxy来实现mysql的读写分离. MyS

Amoeba实现Mysql读写分离部署文档

以下所有理解纯属个人理解,如若有误欢迎指出,不胜感激--o(∩_∩)o 两台服务器配置MYSQL主从复制实现数据高可用,这时读与写操作都有由master服务器来完成的,而从服务器只是复制了mster服务器的数据,这时可以利用一台服务器配置Amoeba实现mysql读写分离, master负责写,slave负责读取,当然 也可以有多个salve-- 从而减轻master服务器的压力,实现负载分摊: 拓扑图: Mysql主从复制原理: 两台mysql服务器一个作为master一个为slave:mas