ubuntu 下基于mycat的mysql读写分离配置

日常唠叨

上两篇博客我配置了mysql多实例(相当于有两台mysql服务器,虽然都在本机……..)
还配置了mysql 的主从复制,也就是说具备了配置mysql读写分离的条件。

博客链接

这两篇是我写的,是配置基于mycat的mysql读写分离的基础
ubuntu下配置mysql启动多实例
ubuntu下配置mysql主从复制

为什么要配置数据库读写分离

下面说说我自己的理解
当读操作很频繁,而此时的写操作显得很闲置时,比如用户的登录和个人信息查看,这些在日常是频繁的(读操作),然而用户的注册或者更改信息(写操作),这些相对于读操作,就显得不那么频繁了。假设有5台mysql数据库服务器,它们读写是不分离的,每台服务器都可以读和写,这显然对于读操作来说很不公平,这就好比男女厕所,女厕所老是需要排队,女厕所数量和男的一样,这明显设计不行。所以读操作应该享受更多的资源,比如独享整台服务器,所以我们分配一台服务器给写操作,4台服务器给读操作。分家的另外一个好处是,读写都有各自的生存空间,不会排挤,我们也可以根据服务器性质进行相应的性能提升配置。

我的环境

系统:

ubuntu 12.04.5

数据库

mysql 5.5.4
端口1:3306(模拟主数据库服务器)
端口2:3302(模拟从数据库服务器)

数据库说明:我是在一台mysql开两个实例,所以我的ip都是配置127.0.0.1

mycat

mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

一些说明

mycat中有逻辑库和数据节点两个概念
我的理解是数据节点对应就是我们的在mysql中真实存在的数据库,而逻辑库则用来统筹这些数据节点

配置需要用到得两个配置文件

schema.xml
server.xml
log4j2.xml

上面两个配置文件夹都在mycat的安装目录的conf目录中可以找到

配置server.xml

我的server.xml路径
/usr/local/mycat/mycat/conf


打开server.xml
vim /usr/local/mycat/mycat/conf/server.xml


server.xml配置
------------

name="hjr" >
      <property name="password">123456property>
      <property name="schemas">info_schemaproperty>

配置说明:删除server.xml中原本的user属性,都是例子来的,删除掉配上自己的就行了

属性:schemas:自己配逻辑库的名字,接下来schema.xml配置可以用

schema.xml

如图是我的schema.xml配置文件



<mycat:schema xmlns:mycat="http://io.mycat/">

    
   <schema name="info_schema" checkSQLschema="false" sqlMaxLimit="100"          dataNode="infoNode">    schema>

    
   <dataNode name="infoNode" dataHost="infoHost" database="info"/>

   <dataHost name="infoHost" maxCon="500" minCon="20" balance="1"
      writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">

      
      <heartbeat>select user()heartbeat>


      
      <writeHost host="hostMaster" url="127.0.0.1:3306" user="hjr" password="123456">
      <readHost host="hostSlave" url="127.0.0.1:3302" user="hjr" password="123456"/>
      writeHost>
 dataHost>

mycat:schema>

配置说明:

<dataNode> 对应我们的在mysql中需要配置读写分离的数据库

<writeHost><readHost> 配置写服务器和读服务器

url:服务器的ip地址和端口

user:服务器上mysql的用户名

password:服务器上mysql的用户密码

心跳检测,方便我们查看读写分离情况

log4j2.xml配置

文件在mycat安装目录下的logs目录里面
我这里是

/usr/local/mycat/mycat/logs

配置说明
就修改一个属性,将它的日志级别修改为debug,方便我们检测读写分离
ubuntu 下基于mycat的mysql读写分离配置_第1张图片

如图,将level属性改为debug即可

最后几步

启动mycat

在mycat的安装目录下面

./mycat start

在mysql中登录mycat

mysql -u hjr -h127.0.0.1 -P8066 -p123456

登录说明
-h mycat服务器的ip
-u mycat用户名
-p mycat用户密码
注意-P8066,P是大写,后面接mycat的启动端口,默认是8066,如果你没改的话

验收配置

查看mycat日志

cd  /usr/local/mycat/mycat/logs/mycat.log

tail -f mycat.log

如图
ubuntu 下基于mycat的mysql读写分离配置_第2张图片

如图可以看到我们刚才配置的读写分离服务器,3306是写服务器,3302是读服务器

测试数据

在mysql中登录mycat,然后插入一条数据

如图

ubuntu 下基于mycat的mysql读写分离配置_第3张图片

插入成功,插入到写服务器,3306实例刚才配置的是写服务器

ubuntu 下基于mycat的mysql读写分离配置_第4张图片

查询一条数据

ubuntu 下基于mycat的mysql读写分离配置_第5张图片

ubuntu 下基于mycat的mysql读写分离配置_第6张图片

查询成功,3302配置的是读服务器,这里查询节点显示时从3302实例进行读操作

至此,ubuntu 下基于mycat的mysql读写分离配置完毕

你可能感兴趣的:(ubuntu,mysql)