一、什么是读写分离
读写分离是让主数据库处理增、删、改等任务,而从数据库处理查询操作。然后利用主从复制将主数据库事务性操作导致的变更同步到从数据库中。
二、读写分离的实现
1.mysql_proxy。mysql_proxy是Mysql的一个开源项目,通过自带的lua脚本进行sql判断
2.Atlas。是由qihoo360,web平台部基础架构团队开发维护的一个基于MYSQL协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。支持事务以及存储过程
3.Amoeba。不支持事务以及存储过程
三、使用mysqlproxy搭建读写分离的原理
用户的请求发送到调度器上,调度器判断这是一个读操作,还是写操作。若是写操作则调度到master数据库上,若是读操作则调度到写节点上。而由于master与slave之间存在主从复制的关系,所以在master上写入的数据也会同步到slave上。
四、实践操作
server1:mysqlproxy-->172.25.17.1
server4:master-->172.25.17.4
server2:slave-->172.25.17.2
需要安装包:mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
msater和slave先实现主从复制(这里我做的是传统的主从复制方法)
server1需要修改两处文件,具体修改内容如下:
proxy:解压proxy安装包
tar zxf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
将解压包挪到/usr/local/mysql-proxy
mv mysql-proxy-0.8.5-linux-el6-x86-64bit /usr/local/mysql-proxy
cd /usr/local/mysql-proxy/
mkdir conf
mkdir logs
二进制文件编辑:
vim ~/.bash_profile
10 PATH=$PATH:$HOME/bin:/usr/local/mysql-proxy/bin
保存:
source ~/.bash_profile
vim conf/mysql-proxy.conf
[mysql-proxy]
user=root #指定用户
proxy-address=0.0.0.0:3306 #监听本机所有3306端口
proxy-backend-addresses=172.25.17.4:3306 #读写地址 【主】
proxy-read-only-backend-addresses=172.25.17.2:3306 #读写地址 【从】
proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua #lua语言脚本:地址
log-file=/usr/local/mysql-proxy/logs/mysql-proxy #pid路径
log-level=debug #日志级别debug
daemon=true #打入后台
keepalive=true #保持长链接
plugins=proxy #启用proxy代理
vim /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
修改:
38 if not proxy.global.config.rwsplit then
39 proxy.global.config.rwsplit = {
40 min_idle_connections = 1,
41 max_idle_connections = 2,
42
43 is_debug = false
44 }
开启proxymysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/mysql-proxy.conf
################################################################################
server4:
主库:grant all on *.* to 'root'@'%' identified by 'Westos-6';
测试:
slave:stop slave关闭掉主从复制更容易看到我们今天做的读写分离实验的结果
真机:mysql -uroot -h172.25.17.1 -p
登陆上去之后,在客户端上创建数据
在master上可以看到创建的数据
本文详细介绍了MySQL读写分离的概念,包括主从数据库的工作原理,以及如何通过mysql_proxy实现读写分离。文中提供了具体的配置步骤和实践操作,帮助读者理解并实施MySQL读写分离,以提高数据库系统的性能。

1万+

被折叠的 条评论
为什么被折叠?



