00:00
我们来看一道这个面试题啊。这道面试题呢,呃,就是考察的,呃,生产实践。啊,如何设计这个买架构。我们先来读一下题。目前呢,这个买购呢,是做这个普通的这个普通复制。那么呢,现在呢,是有一条数据啊,刚好写入这个主库,还没来得及同步到这个存库时呢,主库挂了。啊呃,并且呢,发生了这个自动故障转移。问,嗯,这个架构怎么能保证这个新的主库数据一致性?啊,也就是那条数据不丢失。那这里呢,我给大家先画一个图啊,这个买字默认的情况下是一步复制啊。我们先来画一个图,叫便于理解。嗯,这个吧。对。
01:06
然后呢,这个呢,就是主啊。啊,这个是从库啊。是这样的,那个首先那个说一下这个百色的异步复制啊。一步复制呢,就相当于啊,这个我再画一客户端吧。嗯。啊,这个。当这个客户端要插入一条数据的时候呢。那么呢,主库呢。不会等待这个重复,这个重库是否接收完了这个数据以后,那么呢,它呢是。
02:02
立刻。啊,只要插入成功了,就立刻把请求返回给这个客户端啊,就说啊,我这个数据已经插入成功了啊。这个这个呢,就叫这个默认的叫亦不复制。那么那个半同步复制呢,就相当于我们还是插入一条数据八。啊,现在已经插入到这个主库上。这时候呢,还需要等待这个重复上同样的。啊,因为它是blo传输嘛,要保证这个从库也同样接收到这份blog。也就是这个数据bug。然后呢?嗯,存库存库接收完了以后,他会给主库一个请求啊,说我这个已经接收到你刚才推送过来这个数据发了啊,你现在可以给客户端,嗯。提交成功这么一个请求。啊,当主库接收到了以后,他会接收到这个存库,给他这个响应以后,然后它会把请求返回给这个客户端,说你这条数据插入成功了啊这个呢就叫异不复制。
03:11
所以说呢,这里的正确答案呢。你需要把这个架构从。默认的啊,E步复制改变为这个半同步复制,也就是三半同步复制,刚才我口误啊,是半同步复制。啊,这里呢,你需要在主库,主库和从库上安装这两个插件。然后呢,我们看那个状态值,只要你输入这条命令以后。你看见这个是on,这个值是为on,那那么呢,就代表这个半同步复制就replication已经开启成功了。然后呢,我们呢,这里呢,给大家演示一下他跟那个。嗯,跟异步复制有什么不一样的地方啊,我们现在是正常的异步复制。
04:02
我现在插入一条数据八啊,肯定是没有问题的。我们到这个存库上。这个数据已经同步过来了。那此时呢?这是我虚拟机啊,我把这个网卡给它关了。这时候你发现这已经拼不通了。对吧。百分百丢包,听不通了。啊,此时呢,我在主库上,我再插入一条数据九,这个时候呢,你发现夯。就根本就插不进去。啊,此时如果是主妇挂了。那么相当于这书又。这个存库。呃,你客户端你根本就看不见,刚才我提交成功这个请求。呃,用户就觉得啊,我没有提交成功,那么当你切换到这个从库以后,用户会重新再提交一条。再插入一条数据九。所以说这里呢。
05:01
就保证了。数据,呃,对于用户来说。因为他刚才没有提交成功嘛,他需要再重新再提交一条,这样呢对他来说也没有什么损失,他只是在APP上显示我刚才插入失败了啊,刚才我断了一下。啊。所以说这里的正确答案呢,嗯,你需要。切换成MYSQL的。半同步复制叫semi replication。如果你要是,呃,Java工程师呢,嗯,你不需要你会配置,你只需要大概的了解一下,因为这道题主要是必备的面试题。
我来说两句