一、读写分离介绍

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

  

二、一主一从原理

  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用于测试的表

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表会查询出来。

  插入数据进行测试

insert into tb_test(name) values ("张三");
insert into tb_test(name) values ("李四");
insert into tb_test(name) values ("王五");

  

  

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

  

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

  

  再次查询验证

  

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

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

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

MySQL运维15-一主一从读写分离的更多相关文章

  1. mysql主从配置实现一主一从读写分离

    主从介绍Mysql主从又叫Replication.AB复制.简单讲就是A与B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,实现数据实时同步mysql主从是基于binlog,主上需开启bin ...

  2. mysql运维必会的一些知识点整理

    (1)基础笔试命令考察 1.开启MySQL服务 /etc/init.d/mysqld start service mysqld start systemctl start mysqld 2.检测端口是 ...

  3. mysql运维必会的一些知识点整理(转自民工哥)

    (1)基础笔试命令考察 1.开启MySQL服务 /etc/init.d/mysqld start service mysqld start systemctl start mysqld 2.检测端口是 ...

  4. 转:三思!大规模MySQL运维陷阱之基于MyCat的伪分布式架构

    在微信公众号看到一篇关于mycat的文章,觉得分析的很不错,给大家分享一下 三思!大规模MySQL运维陷阱之基于MyCat的伪分布式架构 原文链接:https://mp.weixin.qq.com/s ...

  5. 搭建稳固的MySQL运维体系

    MySQL 监控要点 MySQL 监控要点,主要涉及服务器和 MySQL 两个方向的监控告警. 在这两个监控告警方向需要重点关注监控策略.监控趋势图及报警方式. 监控策略指的是每个监控项的告警阈值,例 ...

  6. MySQL运维工具

    Mysql运维过程中设计的各类工具以及各个场景的的命令行的分类.大体总结如下的xmind图片(.xmind附件 加 Q1123654342). 大体上分为: 实例管理工具.高可用工具.慢日志查询工具. ...

  7. mysql运维

    反反复复装了好多次的mysql,上学的时候从来没有考虑过稳定性,装起来,能跑通,增删改查没有问题万事大吉.参与工作后参与平台搭建和维护,平台的稳定性是首先必须要考虑的问题,之前装mysql使用经历了密 ...

  8. MySQL运维开发相关的所有工具

    http://www.ruzuojun.com/topic/592.html   Percona Toolkit 安装使用 http://cenalulu.github.io/mysql/mysql- ...

  9. 美图秀秀DBA谈MySQL运维及优化

    美图秀秀DBA谈MySQL运维及优化 https://mp.weixin.qq.com/s?__biz=MzI4NTA1MDEwNg==&mid=401797597&idx=2& ...

  10. 公司没有 DBA,Mysql 运维自己来

    如果你的公司有 DBA,那么我恭喜你,你可以无视 Mysql 运维.如果你的公司没有 DBA,那你就好好学两手 Mysql 基本运维操作,行走江湖,防身必备. 环境:CentOS7 版本: 一.虚拟机 ...

随机推荐

  1. 如何将GitLab仓库同步到GitHub和Gitee?

    作者:西瓜程序猿 主页传送门:https://www.cnblogs.com/kimiliucn 前言 在之前写的[Kimi.RocketMQ.NET]开源项目中,代码我是放在自己搭建的GitLab服 ...

  2. Burp Suite抓包工具配置代理手机抓取数据包

    工作中很多手机上的问题因为环境差异导致无法在pc设备上完整的模拟真实物理手机,因此需要方法能抓取到手机设备上所有数据包发送详情.发现了这个好用的数据包抓取工具Burp Suite. 一.配置流程: 1 ...

  3. destoon根据目录下的html文件生成地图索引

    因为项目需要,destoon根据目录下的html文件生成地图索引,操作方法,代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...

  4. PHPStudy hosts文件可能不存在或被阻止打开及同步hosts失败问题

    在使用PHPStudy建站包时,有时会遇到同步hosts失败的问题,可能是因为hosts文件不存在或被阻止打开.这个问题通常可以通过以下几个步骤解决: 步骤一:检查hosts文件是否存在 首先,我们需 ...

  5. 报错AttributeError: Attempted to set WANDB to False, but CfgNode is immutable

    问题  今天在跑代码的时候,使用到了wandb记录训练数据.  我在23服务器上跑的好好的,但将环境迁移到80服务器上重新开始跑时,却遇到了如下报错  看这个报错信息是由于wandb没有apis这个属 ...

  6. 在线问诊 Python、FastAPI、Neo4j — 问题咨询

    目录 查出节点 拼接节点属性 测试结果 问答演示 通过节点关系,找出对应的节点,获取节点属性值,并拼接成想要的结果. 接上节生成的CQL # 输入 question_class = {'args': ...

  7. Python3 Keras分词器Tokenizer

    import keras.preprocessing.sequence from keras.preprocessing.text import Tokenizer samples = ['我 爱 你 ...

  8. poj2279

    Mr. Young's Picture Permutations Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5841   ...

  9. 手撕Vue-查找指令和模板

    接着上一篇文章,我们已经实现了提取元素到内存的过程,接下来我们要实现的是查找指令和模板. 大致的思路是这样的: 遍历所有的节点 需要判断当前遍历到的节点是一个元素还是一个文本 如果是一个元素, 我们需 ...

  10. 2023华为杯·第二届中国研究生网络安全创新大赛初赛复盘 Writeup

    A_Small_Secret 题目压缩包中有个提示和另一个压缩包On_Zen_with_Buddhism.zip,提示内容如下: 除了base64还有什么编码 MFZWIYLEMFSA==== asd ...