介绍
读写分离,将数据库的读和写操作分开,以对应不同的数据库服务器。主库提供写操作,从库提供读操作,这样能有效地减轻单台数据库的压力。
实现方式
通过MyCat实现上述功能,支持MySQL,也支持Oracle和SQL Server。
原理
1. Master 主库在事务提交时,会把数据变更记录在二进制日志文件 Binlog 中。
2.从库通过iothread线程读取主库中的Binlog日志文件,写入到从库的中继日志Relay Log文件中。
3.slave通过sqlthread线程,读取Relay Log文件中的事件,将改变反映它自己的数据。
准备工作:
1:10.168.5.183,安装JDK,Mycat,MySQL
2:10.168.5.194,安装MySQL
3:配置主从关系,详细配置,请参考我之前写的《MySql主从复制学习手记》
https://blog.csdn.net/cthomson/article/details/125503870
配置schema.xml文件
Balance值说明
配置server.xml文件
Mycat启动
bin/mycat start启动mycat
bin/mycat stop停止mycat
查验证:
因为我们现在已经做了主从设置,我们在主库进行的所有操作,都会同步到从库上,但从库进行的操作不会同步到主库上;因此,我们可以修改从库上的数据,然后再进行查询操作,通过该方式进行验证,看看我们的读写分离是否正常。
如下图所示,在mycat上进行查询,可以看到,查询出来的结果是Tom1;所以,我们读写分离的读操作是从从库上读取而来的。
写验证:
我们在从库上插入一条数据,由于从库是不会同步到主库上的,所以,我们在mycat上增删改操作,是只能写到主库上的。
注意:
在schema.xml中,如果 writeHost 指定的后端数据库宕机,那么这个 writeHost绑定的readHost 都将不可用。