Bootstrap

涉及mysql 主从库 读写分离

涉及mysql 主从库 读写分离

 

1:mysql 主从数据库的使用方法:      使用特定的命名规范,来严格意义上的区分主库还是从库;

2:踩过的坑:

                    前提:在同一个方法中,连续出现了三个mapper的方法,两个查询,然后有一个公用方法(修改方法).  方法名称都命名不规范

                   问题:  这个流程执行完成之后,会有问题嘛, 会有什么问题?

                   解释: 会有问题,  修改会写到从库中,不会写入主库,引发的问题:主从不能同步,小问题,一个表不能同步,大问题,主从从此都不会在同步数据.

                            这样也会失去主从的原本的初衷,主从原本就是为了查询在从,读写在主.

3:原理:

                  1,需要先了解 主从切换的原理,或者需要明白主从是因为什么来区分主从, 怎么自动区分主库和从库应该怎么走呢?

                     1.1    主从原理是

                    在master机器上,主从同步事件会被写到特殊的log文件中(binary-log);

                   主从同步事件有3种形式:statement、row、mixed。

  1.          statement:会将对数据库操作的sql语句写入到binlog中。
  2.          row:会将每一条数据的变化写入到binlog中。
  3.          mixed:statement与row的混合。Mysql决定什么时候写statement格式的,什么时候写row格式的binlog
  4.          其实还有最主要的原因就是,会根据你上下文,来判断是走主还是从;
  5.          如果你的命名严格按照你的配置文件的格式来命名,那么就不会有问题,否则上下文会严重影响你的代码质量;
  6.          这个地方不是多线程,只是单线程的情况下;

3:跟大佬学习之后的解决办法:

                 1,首先 命名严格按照配置文件的方法来命名;

                 2,多看一下主从的线程实现原理,明白是怎么实现主从切换,并且避免代码中因为马虎导致的主从问题(这个地方数据不同步,会引发大问题,请一定要注意)

                3,写代码,请在service中区分 两个实现代码块儿,一个用来做业务的service,一个用来处理mapper的service.这样可以尽量避免;

                4,  以上是我涉及到的 主从的问题的解决办法,不是很全,但是希望在你找不到因为什么的时候,刷到我的csdn,可以给你一些idea;

 

 

 

;