目录

        原理

        读写分离实践

        读写分离的实现方式

        使用Mycat实现读写分离

        Mycat的安装部署

        Mycat的架构

        环境搭建

        登录mycat读写分离服务


 原理

mysql mgr单主模式怎么做读写分离 如何实现mysql读写分离_mysql

       读写分离就是在主服务器上修改,数据会同步到从服务器,从服务器只能提供读取数据,不能写入,实现备份的同时也实现了数据库性能的优化,以及提升了服务器安全。

读写分离实践

       绝大多数的企业的应用场景对于数据库来说都是读多写少,比如微博,明星发一条微博,上千万人读。所以为了分担数据库压力,做负载均衡,首先考虑到的就是读写分离,读写分离基于上面实现的主从复制,使用主库作为写库,从库为读库,提高数据库性能,提高IO性能。

读写分离的实现方式

       为了实现读写分离,出现了很多解决方案,其中比较流行的是采用中间件做为Proxy,保持应用层代码不随数据库的变动而发生变化,这里包括Amoeba、Atlas、Cobar、Mycat、MySQL Proxy等,而Mycat是目前开源的数据库中间件中比较成熟的解决方案。

使用Mycat实现读写分离

下载安装Mycat

可以了解下Mycat的背景和应用情况,这样使用起来比较有信心。

官网有个文档,属于详细的介绍,初次入门,看起来比较花时间

Mycat的安装部署

mycat的安装目录只要解压下载的目录就ok了。

安装完成后,目录如下:

目录

说明

bin

mycat命令,启动重启,停止等

catlet

catlet为mycat的一个扩展功能

conf

mycat配置信息,重点关注

lib

mycat引用的jar包,mycat是java开发的

logs

日志文件,包括mycat启动的日志和运行的日志

配置

mycat的配置文件都在conf目录里面,这里介绍几个常用的文件:

文件

说明

server.xml

mycat的配置文件,设置账号、参数等

schema.xml

mycat对应的物理数据库和数据库表的配置

rule.xml

mycat分片(分库分表)规则

Mycat的架构

Mycat是代理,Mycat后面就是物理数据库。Mycat作为主数据库中间件,肯定是与代码弱关联的,

所以代码是不用修改的,使用Mycat后,连接数据库是不变的,默认端口是8066。

mysql mgr单主模式怎么做读写分离 如何实现mysql读写分离_读写分离_02

环境搭建

需要三台CentOS7Master,Slave,Mycat

Master_IP:192.168.21.131

Slave_IP:192.168.21.135

Mycat_IP:192.168.21.136

mycat安装到opt目录下

配置mycat

server.xml文件配置

mysql mgr单主模式怎么做读写分离 如何实现mysql读写分离_服务器_03

各配置参数含义

mysql mgr单主模式怎么做读写分离 如何实现mysql读写分离_mysql_04

schema.xml文件配置

mysql mgr单主模式怎么做读写分离 如何实现mysql读写分离_数据库_05

mysql mgr单主模式怎么做读写分离 如何实现mysql读写分离_服务器_06

启动mycat进入bin目录。   

./mycat start 使用这个命令启动

启动之后可以在logs中的wrapper.log中查看程序启动的日志。

mysql mgr单主模式怎么做读写分离 如何实现mysql读写分离_服务器_07

出现这个结果表示启动正常

查看端口 netstat -anultp 9066和8066端口 9066表示业务端口 8066表示管理端口

登录mycat读写分离服务

mysql mgr单主模式怎么做读写分离 如何实现mysql读写分离_读写分离_08

使用navicat连接mycat,端口为8066

mysql mgr单主模式怎么做读写分离 如何实现mysql读写分离_服务器_09

show @@heartbeat;   #查看心跳   #RS_CODE为1表示心跳正常 为-1是连接超时

mysql mgr单主模式怎么做读写分离 如何实现mysql读写分离_数据库_10

show @@datasource; #查看机器的读写分离配置情况

mysql mgr单主模式怎么做读写分离 如何实现mysql读写分离_服务器_11

hostM是W写权限,hostS是R读权限

mysql mgr单主模式怎么做读写分离 如何实现mysql读写分离_数据库_12

连接成功为绿色,显示库里面的表dog1

第一种验证:

关闭从服务器中的主从复制在在mycat命令行界面插入数据,查询

mysql mgr单主模式怎么做读写分离 如何实现mysql读写分离_服务器_13

因为关闭了主从复制,插入新数据在主库进行,而查询的是从库,为此不会查询到新插入的数据

第二种验证:

在从服务器更改数据

mysql mgr单主模式怎么做读写分离 如何实现mysql读写分离_服务器_14

在主服务器查询,数据还是原来的

mysql mgr单主模式怎么做读写分离 如何实现mysql读写分离_读写分离_15

在mycat命令行查询,是在从库更改之后的数据

mysql mgr单主模式怎么做读写分离 如何实现mysql读写分离_服务器_16

总结:如果读写分离没有成功,配置文件有错误或者防火墙没关闭,所以要确保配置文件配置正确,防火墙关闭。