likes
comments
collection
share

MYSQL 主从复制如何保证数据一致性【IT枫斗者怎么样】

作者站长头像
站长
· 阅读数 67

引言:MySQL主从复制原理直白一点来说,就是master写入数据时会留下写入日志,slave根据master留下的日志模仿其数据执行过程进行数据写入。了解了MySQL主从复制的原理,可以清楚的了解到,有两个步骤可能导致主从不一致: MYSQL 主从复制如何保证数据一致性【IT枫斗者怎么样】

今天我们从两个方面去解决主从一致的问题。

一、保证MYSQL(MASTER端)日志和数据的统一性,处理掉电、宕机等异常情况。

1、MySQL作为一个可插拔的数据库系统,支持插件式的存储引擎,在设计上分为Server层和Storage Engine层。

2、在Server层,MySQL以events的形式记录数据库各种操作的Binlog二进制日志,其基本核心作用有:复制和备份。除此之外,我们结合多样化的业务场景需求,基于Binlog的特性构建了强大的MySQL生态,如:DTS、单元化、异构系统之间实时同步等等,Binlog早已成为MySQL生态中不可缺少的模块。

3、在Storage Engine层,InnoDB作为比较通用的存储引擎,其在高可用和高性能两方面作了较好的平衡,早已经成为使用MySQL的首选(PS:官方从MySQL 5.5.5开始,将InnoDB作为了MySQL的默认存储引擎 )。和大多数关系型数据库一样,InnoDB采用WAL技术,即InnoDB Redo Log记录了对数据文件的物理更改,并保证总是日志先行,在持久化数据文件前,保证之前的redo日志已经写到磁盘。Binlog和InnoDB Redo Log是否落盘将直接影响实例在异常宕机后数据能恢复到什么程度。InnoDB提供了相应的参数来控制事务提交时,写日志的方式和策略,例如:

MYSQL 主从复制如何保证数据一致性【IT枫斗者怎么样】

我们得出以下配置:

MYSQL 主从复制如何保证数据一致性【IT枫斗者怎么样】

MYSQL 主从复制如何保证数据一致性【IT枫斗者怎么样】

二、保证MYSQL(SLAVE端)同步时和MASTER端保持一致。

1、异步复制

MYSQL 主从复制如何保证数据一致性【IT枫斗者怎么样】

2、半同步复制

MYSQL 主从复制如何保证数据一致性【IT枫斗者怎么样】

3、全同步复制

MYSQL 主从复制如何保证数据一致性【IT枫斗者怎么样】

三、备注&解决方案(以上解决思路可以满足99.8%公司的业务场景)

1、通过以上两点的分析和配置,我们发现MySQL自身的Repliaction已经无法满足我们爱钻牛角尖同学的欲望了(后端的程序员思维都会过于缜密),怎么办?为了保证主从的数据绝对一致性,下面我来提供两个思路(今天有点累,仅仅是思路,具体解决方案请听下回分解)。 2、阿里云自己研发的数据订正平台。 3、PXC数据强一致性解决方案并且支持多主多从哦,缺点是需要向老板申请性能差别不大的机器做集群。

转载自:https://juejin.cn/post/7223662295867637818
评论
请登录