mysql数据库读写分离

本文详细介绍了MySQL读写分离的概念,包括主从数据库的工作原理,以及如何通过mysql_proxy实现读写分离。文中提供了具体的配置步骤和实践操作,帮助读者理解并实施MySQL读写分离,以提高数据库系统的性能。

一、什么是读写分离


读写分离是让主数据库处理增、删、改等任务,而从数据库处理查询操作。然后利用主从复制将主数据库事务性操作导致的变更同步到从数据库中。

二、读写分离的实现


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上可以看到创建的数据

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值