使用mysql-proxy和binlog来实现mysql读写分离
来源:互联网 发布:阿里云搭建l2tp 编辑:程序博客网 时间:2024/05/01 12:45
1.3 db proxy
在大型互联网站的数据库部署中,部署最多的数据库为MySQL。随着MySQL中Innodb存储引擎对事物的支持,MySQL在互联网公司部署中,应用量越来越多。典型应用MySQL的公司有Google、Baidu、Taobao等大型互联网公司。MySQL的优势在于其高扩展性和价格优势等。实际上,MySQL可以免费应用于企业级的部署中。
在MySQL复制方式部署中,有两种部署方式:同步复制和异步复制。同步复制采用NDB 存储引擎,异步复制需要使用mysql-proxy结合master-slave实现。
异步复制主要为了解决读写分离的问题。因为用户对网站的访问有读操作多,写操作少的特点。甚至像taobao.com这样的网站读写比例高达10:1,所以采用MySQL-Proxy结合主从异步复制实现读写分离是非常重要的增快访问速度的方法。这样如果有更高的用户访问需求,通过增加slave机器,不会对现有系统提供的服务产生影响而实现很好的、很灵活的业务扩展。
1.3.1 mysql-proxy
mysql-proxy是一个MySQL的代理服务器,用户的请求先发向mysql-proxy,然后mysql-proxy对用户的数据包进行分析,从下一层的mysql 数据库中选择一台数据库,将用户的请求包交给mysql处理。
首先MySQL Proxy 以服务器的身份接受客户端的请求,根据相应配置对这些请求进行分析处理,然后以客户端的身份转发给相应的后端数据库服务器,再接受服务器的信息,然后返回给客户端。所以MySQL Proxy需要同时实现客户端和服务器的协议。由于要对客户端发送过来的SQL语句进行分析,还需要包含一个SQL解析器。MySQL Proxy通过使用lua脚本,来实现复杂的连接控制和过滤,从而实现读写分离和负载平衡。所以部署MySQL-Proxy需要安装运行Lua语言的环境。典型的MySQL-Proxy应用为实现读写分离,如图6-3-1所示。
图6-3-1
1.3.2 MySQL主从复制(Master-Slave Replication)
MySQL主从复制(Master-Slave Replication)是通过设置在Master MySQL上的binlog(使其处于打开状态),Slave MySQL上通过一个I/O线程从Master MySQL上读取binlog,然后传输到Slave MySQL的中继日志中,然后Slave MySQL的SQL线程从中继日志中读取中继日志,然后应用到Slave MySQL的数据库中。这样实现了数据库的复制功能。原理如图6-3-2所示:
图6-3-2
MySQL主从复制的作用如下:
(1) 可以作为一种备份机制。
(2) 可以用来做读写分离。
1.3.3 MySQL主从复制结合MySQL Proxy实现读写分离
通过使用MySQL-Proxy来作为代理服务器,配置MySQL Proxy,将所有的写操作,分流到master MySQL上,所有的读操作分流到slave MySQLs。
这样就实现了读写分离。如果有新的访问需求,只需添加slave MySQL机器来解决问题。所以这样的结构扩展能力非常好。如图6-3-3所示。
图6-3-3
- 使用mysql-proxy和binlog来实现mysql读写分离
- 如何使用"MySQL-Proxy"实现读写分离
- 如何使用"MySQL-Proxy"实现读写分离
- MySQL Proxy 实现读写分离
- mysql-proxy实现读写分离
- mysql-proxy 实现读写分离
- mysql-proxy实现读写分离
- mysql-proxy实现读写分离
- mysql-proxy 实现读写分离
- mysql-proxy实现读写分离
- mysql-proxy实现读写分离
- mysql-proxy实现读写分离:
- 使用mysql-proxy 快速实现mysql 集群 读写分离
- 使用mysql-proxy软件实现mysql读写分离
- 【转】使用mysql-proxy 快速实现mysql 集群 读写分离
- 使用mysql-proxy 快速实现mysql 集群 读写分离
- 使用mysql-proxy 快速实现mysql 集群 读写分离
- 使用mysql-proxy实现mysql的读写分离
- android_eclipse关联android源码
- TestDirector8.0 未找到Oracle 客户端和网络组建,这些组建是由oracle公司提供的,是oracle 8i版客户端软件安装的一部分
- 网络方面
- 移植madplay到arm开发板
- [强烈推荐] 十步完全理解SQL
- 使用mysql-proxy和binlog来实现mysql读写分离
- vlc相关网站
- 视频教程:打印和文件格式转换
- linux中 tomcat启动问题 (catalina.sh没有发现)
- 一例C2039错误的骚扰
- asp.net过滤器
- 一、Jmeter介绍+安装说明
- Android 4.0系统在sdcard不能创建目录
- 使用task来控制不进行重复加载