上两篇博客我配置了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路径
/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配置文件
<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的用户密码
心跳检测,方便我们查看读写分离情况
文件在mycat安装目录下的logs目录里面
我这里是
/usr/local/mycat/mycat/logs
配置说明
就修改一个属性,将它的日志级别修改为debug,方便我们检测读写分离
如图,将level属性改为debug即可
启动mycat
在mycat的安装目录下面
./mycat start
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是读服务器
如图
插入成功,插入到写服务器,3306实例刚才配置的是写服务器
查询成功,3302配置的是读服务器,这里查询节点显示时从3302实例进行读操作
至此,ubuntu 下基于mycat的mysql读写分离配置完毕