您的位置:首页 > 数据库 > MySQL

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

2017-12-05 16:17 609 查看

日常唠叨

上两篇博客我配置了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配置
------------

<user name="hjr" >
<property name="password">123456</property>
<property name="schemas">info_schema</property>
</user>


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

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

schema.xml

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

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

<!-- 定义Mycat的逻辑库    -->
<schema name="info_schema" checkSQLschema="false" sqlMaxLimit="100"          dataNode="infoNode">    </schema>

<!--定义Mycat的数据节点  -->
<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>

<!--配置后台数据库的ip地址和端口号,还有账号密码-->
<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>


配置说明:

4000

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

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

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

user:服务器上mysql的用户名

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

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


log4j2.xml配置

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

我这里是

/usr/local/mycat/mycat/logs


配置说明

就修改一个属性,将它的日志级别修改为debug,方便我们检测读写分离



如图,将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


如图



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

测试数据

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

如图



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



查询一条数据





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

至此,ubuntu 下基于mycat的mysql读写分离配置完毕
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息