一、需求分析
为了缓解数据库访问压力及稳定,我们让主数据库(master)处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库(slave)处理SELECT查询操作。
二、准备条件
1.主从MySQL的安装、权限及远程访问等可参考:
centos系统下安装mysql数据库
2.完成Mycat的安装及基本配置可参考:
数据库的中间件 —Mycat 的准备工作
3.完成数据库一主一从及主从复制配置工作可参考:
Mysql数据库搭建简单的主从复制(一主一从)
三、开始搭建
1.修改mycat/config/schema.xml配置文件中修改< dataHost >的balance属性,通过此属性配置读写分离的类型
2.为了方便查看效果,我们选择:balance=“2”,在项目中,可选2 或 4,详情参考
负载均衡类型,目前的取值有4种:
1.balance="0",不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。
2.balance="1",【双主双从】在双主双从模式(M1-S1,M2-S2,并且M1与M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡
3.balance="2",所有读写操作都随机的在readHost,writeHost上分发。
4.balance="3",【单主单从】所有读请求随机的分发到readHost执行,writeHost不负担读压力。
四、测试
1.在主库(A) 的数据库的tb_contact 表中新增一条数据
insert into tb_contact VALUES(3,@@hostname,'987654321')
注意:
hostname - 用来显示或者设置当前系统的主机名,主机名被许多网络程序使用,来标识主机。
2.在主库和从库中分别可以查到
select * from tb_contact;
3.将修改完的Mycat 进行重启,并查询
1.重启
cd /usr/local/mycat/bin
./mycat restart
2.登录Mycat (内网:127.0.0.1)
mysql -umycat -p123456 -h 127.0.0.1 -P 8066
3.查询
mysql> use TESTDB;
mysql> show tables;
mysql> select * from tb_contact;
注意:多次执行==select * from tb_contact;==即可看到效果。
如有不当之处,还请多多指教