mysql如何保证主从数据一致
前言
为了保证业务稳定,避免大量无关紧要的读操作导致数据库压力过大而影响正常业务;另一方面为了保证数据的安全。一般采用主从或者叫主备架构实现读写分离,不仅可以分散主库压力还可以保证数据的安全。
但是这样会产生主从数据一致的问题,如何解决
两阶段提交
事务提交时,首先redoLog预提交,然后写binLog,最后确认提交,如下图1。
在数据库正常运行时并不会出现主从不一致的情况,只有在数据库异常停机时才会用到该机制保证数据一致,如何保证呢?
mysqlServer和innoDB分别写binLog和redoLog时,会同时保存事务ID
在服务恢复时,检查redloLog中是否存在未提交的事务ID,如果存在,检查该事务ID是否已写入binLog,如果已写入则提交事务,否则回滚事务,流程如图2