前言:
想学习下读写分离,看上去很多人在用,他是分主从服务器,可以用mycat来控制,也可以直接两个mysql代码控制。我想先试试mycat控制到两个mysql+redis,一步一步来吧,一口也干不了个胖子
思路:
使用VM搭建一个linux一个ubuntu(个人喜好),先用linux搭建mysql,后期作为主库,ubuntu这个作为从库,后期加入redis,其实redis是提高读的能力,对读写分离只能算是锦上添花。
ubuntu安装博客:https://blog.csdn.net/davidhzq/article/details/102575343
linux安装mysql:
还是选对博客重要,不然连安装都搞不定https://blog.csdn.net/weixin_42266606/article/details/80879571
在etc下面有my.cnf,要是没有就是下面这种办法,不过我没试过。。
Linux下用rpm包安装的MySQL是不会安装/etc/my.cnf文件的,
至于为什么没有这个文件而MySQL却也能正常启动和作用,在点有两个说法,
第一种说法,my.cnf只是MySQL启动时的一个参数文件,可以没有它,这时MySQL会用内置的默认参数启动,
第二种说法,MySQL在启动时自动使用/usr/share/mysql目录下的my-medium.cnf文件,这种说法仅限于rpm包安装的MySQL,
解决方法,只需要复制一个/usr/share/mysql目录下的.cnf文件到/etc目录,并改名为my.cnf即可。
linux安装mycat:(我都安装完了,但是navicat连不上,各种办法都试了,这个我放弃了,)
这个安装不在赘述,这个包下载有点慢,找个带网盘的博客去下载,配置三个文件,其中最难理解是schema.xml
主要分schema、dataNode、dataHost三个主要配置
<scheme>节点定义了mycat的虚拟数据库为TESTDB, balance="1":write操作路由到A机,读操作路由到B。
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1">
<!-- 这里不配置,代表所有的表分片到dn1节点-->
但是官方文档说,1.4版本需要配置,1.3不需要,我很纠结,反正我怎么配置都不行
</schema>
<!-- mysql的database数据库-->
<dataNode name="dn1" dataHost="localhost1" database="cmdb_test" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="192.168.10.242:3306" user="root" password="123456">
<!-- can have multi read hosts -->
<readHost host="hostS2" url="192.168.10.245:3306" user="root" password="123456" />
</writeHost>
</dataHost>
</mycat:schema>
好吧,这条路不适合我,同事说还有sharding-jdbc,虽然不用安装,但我一看配置头大,还是两个库,直接分离吧:
在ubuntu安装了个mysql