前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL运维15-一主一从读写分离

MySQL运维15-一主一从读写分离

作者头像
Se7eN_HOU
发布2023-12-26 09:34:11
2270
发布2023-12-26 09:34:11
举报
文章被收录于专栏:侯哥的Python分享

一、读写分离介绍

  读写分离,是把数据库的读和写分开操作,以应对不同的数据库服务器。主数据库提供写操作,从数据库提供读操作,这样能有效的减轻单台数据库的压力。

二、一主一从原理

  MySQL的主从复制是基于二进制(binlog)实现的

  说明1:当主服务器的MySQL执行了DML,DDL语句之后,会将数据的变更写入到binlog日志中

  说明2:在从服务器上有一个IOThread线程会读取主服务器上的binlog日志,然后写入到自己的中继日志(relay log)中

  说明3:在从服务器上还有一个SQLThread线程会从自己的中继日志(relaylog)中读取数据变更,然后反映到自身的数据库上

三、主从复制准备

  两台MySQL主机

  192.168.3.91:角色master

  192.168.3.90:角色slave

  具体主从复制的配置如果不会的请参考《MySQL运维2-主从复制》

  在从服务器上查看主从配置。

  然后在主服务器上创建rw数据库,这时在从库上就会自动创建rw数据库  

  然后再在主服务器上的rw库中创建一个tb_test用于测试的表

代码语言:javascript
复制
create table tb_test(id int auto_increment primary key, name varchar(20));  

四、配置schema.xml

  说明1:在业务中如果逻辑库中的所有表都要做读写分离,则可以在schema标签中省略所有的表

  说明2:在dataHost数据节点中的配置中注意balance的值只能是“1”或者“3”,balance值的释义

    • 0:不开启读写分离机制,所有读操作都发送当前可用的writeHost上
    • 1:全部的readHost与备用的writeHost都参与select语句的负载均衡(主要针对于双主双从模式)
    • 2:所有的读写操作都随机在writeHost,readHost上分发
    • 3:所有的读请求随机分发到writeHost对应的readHost上执行,writeHost不负担读压力

  说明3:一组读写分离的库,其中readHost标签是嵌在writeHost标签中的

  说明4:因为要读写分离,所以读写节点上的url是不同的

五、配置server.xml

  说明1:为root用户增加rw库的权限

六、读写分离测试

  首先重启Mycat  

  登录Mycat

  查看逻辑库和逻辑表

  说明1:我们在schema.xml没有配置逻辑表,所以会把rw数据库中的表,全部当做逻辑表,即我们之前创建的tb_test表会查询出来。

  插入数据进行测试

代码语言:javascript
复制
insert into tb_test(name) values ("张三");
insert into tb_test(name) values ("李四");
insert into tb_test(name) values ("王五");

  这时主库和从库的tb_test表中都有了数据,进行查询测试。

  但是这个时候,我们并分不清这个查询出来的数据是主表的还是从表的,这时我们将从表中的“张三”改为“张三1”,因为主从复制,只是单向的从主到从复制,即主表改了,从表会跟着一起改,但是从表改了,主表的数据是不会改的。

  再次查询验证

  说明1:通过查询的数据得知,我们读取的数据是来自我们配置的从库的数据,即实现了读的数据是从库中的数据。

  说明2:因为主从复制是从到主到从单向的复制,所以说明我们写数据一定是写入到主库的,不然从库是不会有数据的。

  说明3:所以我们已经实现了简单的数据读写分离。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、读写分离介绍
  • 二、一主一从原理
  • 三、主从复制准备
  • 四、配置schema.xml
  • 五、配置server.xml
  • 六、读写分离测试
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档