涉及mysql 主从库 读写分离
1:mysql 主从数据库的使用方法: 使用特定的命名规范,来严格意义上的区分主库还是从库;
2:踩过的坑:
前提:在同一个方法中,连续出现了三个mapper的方法,两个查询,然后有一个公用方法(修改方法). 方法名称都命名不规范
问题: 这个流程执行完成之后,会有问题嘛, 会有什么问题?
解释: 会有问题, 修改会写到从库中,不会写入主库,引发的问题:主从不能同步,小问题,一个表不能同步,大问题,主从从此都不会在同步数据.
这样也会失去主从的原本的初衷,主从原本就是为了查询在从,读写在主.
3:原理:
1,需要先了解 主从切换的原理,或者需要明白主从是因为什么来区分主从, 怎么自动区分主库和从库应该怎么走呢?
1.1 主从原理是
在master机器上,主从同步事件会被写到特殊的log文件中(binary-log);
主从同步事件有3种形式:statement、row、mixed。
- statement:会将对数据库操作的sql语句写入到binlog中。
- row:会将每一条数据的变化写入到binlog中。
- mixed:statement与row的混合。Mysql决定什么时候写statement格式的,什么时候写row格式的binlog
- 其实还有最主要的原因就是,会根据你上下文,来判断是走主还是从;
- 如果你的命名严格按照你的配置文件的格式来命名,那么就不会有问题,否则上下文会严重影响你的代码质量;
- 这个地方不是多线程,只是单线程的情况下;
3:跟大佬学习之后的解决办法:
1,首先 命名严格按照配置文件的方法来命名;
2,多看一下主从的线程实现原理,明白是怎么实现主从切换,并且避免代码中因为马虎导致的主从问题(这个地方数据不同步,会引发大问题,请一定要注意)
3,写代码,请在service中区分 两个实现代码块儿,一个用来做业务的service,一个用来处理mapper的service.这样可以尽量避免;
4, 以上是我涉及到的 主从的问题的解决办法,不是很全,但是希望在你找不到因为什么的时候,刷到我的csdn,可以给你一些idea;