Mycat是一款优秀的数据库中间件,通过Mycat整合mysql,我们可以在主从复制的基础上搭建读写分离,如果主从复制尚未搭建好,可以参考上一篇文章MySQL搭建主从复制
1.准备一台主机,101.101.101.22,
2.下载mycat安装包(mycat需要java环境,若系统未安装JDK,需要先安装JDK,另外一般建议将mycat安装在/usr/local/下):
wget http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz
3.解压安装包:tar -zxvf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz
4.配置环境变量:vi /etc/profile,在系统变量中添加:
export MYCAT_HOME=/usr/local/mycat
5.保存后退出,使配置文件生效:source /etc/profile;
6.切换到mycat目录下,修改mycat配置文件:cd /usr/local/mycat/conf;
这里,我们主要修改两个配置文件:server.xml和schema.xml,其中,server.xml主要用于配置mycat账号信息。我们修改一下这里即可,保存后退出:
schescma.xml配置文件
1.基于一主一从的配置,我的配置文件如下,其他不用的都可以先删除或注释起来
2.保存后启动mycat:cd /usr/local/mycat/bin;
3.执行命令:./mycat start;
4.启动后,登陆mycat,命令:mysql -umycat -pww123456;登陆成功后如图所示:
至此,mycat配置基本完成,接下来测试读写分离
登陆主机101.101.101.20,切换到数据库market_wang,在原来创建的mytable表中插入这样一条数据,
命令:insert into mytable values(2,@@hostname);
这里说一下思路:@@hostname表示表示系统主机名称,由于从库和主库名称不一样,插入这条数据后,我们设置的主从复制规则是:binlog_format=STATEMENT;#表示基于SQL语句的复制.则会导致主从数据库数据不一致。
而我们在schescma.xml配置文件中,我们读写分离策略设置的balance为2,当balance=2,所有的读操作都随机发送到所有的writeHost,readHost上。
我们通过mycat多次查询mytable表,会发现id为2的name值会随机变化,即可验证
当然,如果我们设置balance=3,则效果会更加明显,所有的查询,都会返回从机的名称,有兴趣的话可以尝试以下,记得修改完配置文件以后,需要重启mycat: cd usr/local/mycat/bin/;执行:./mycat restart 即可。
Mycat整合mysql搭建读写分离(一主一从)
最新推荐文章于 2022-06-05 21:44:31 发布