Java

Mysql主从复制原理

2019-06-30  本文已影响25人  曾经的飞舞梦

Mysql主从复制原理

    从库生成两个线程,一个I/O线程,一个SQL线程;

        从库的I/O线程去请求主库的binlog,并将得到的binlog日志写到relay log(中继日志)文件中;

        主库会生成一个log dump线程,用来给从库I/O线程传binlog;

        SQL线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致:

mysql主从同步的原理及配置主从的完整步骤

        主从原理:从库slave生成两个线程,I/O线程和SQL线程,I/O将变更记录到二进制日志文件中,再写到中继日志中,SQL线程读取中继日志,解析操作,而最终数据统一。       

GTID复制技术(Mysql5.6版本后才有)

    GTID作用:

        使用GTID技术可以让两台服务器之间自动交换事务ID,经过对比,请求数据,保证服务器之间的数据时同步的。

        提升安全性:

            多事务并行执行时,也不会造成数据混乱

            多线程复制,从服务器可以启动多个SQL  thread, 并行执行多个库的复制,提升速度。

            Mysql5.7以后出现多源复制

                1.方便备份数据

                2.方便对数据的统一分析。 

GTID工作原理

        1.master更新数据时,会在事务前产生GTID,一同记入到Binlog日志中。

        2.slave端的I/O线程将变更的binlog,写入到本地的relay log中

        3.然后SQL线程从relay  log中读取GTID,设置GTID_next的值为该GTID,然后对比Slave端的binlog是否有记录。

        4.如果有记录的话,说明该GTID的事务已经运行,slave会记录

        5.如果没有记录的话,slave就会执行该GTID对应的事务,并记录到binlog中。

MyISAM和InnoDB的主要区别:

        1.MyISAM是非事务安全型的,而InnoDB是事务安全型的。

        2.MyISAM锁的粒度是表级的,而InnoDB支持行级别锁定。

        3.MyISAM不支持foreign(外健),而InnoDB支持外健

        4.MyISAM相对简单,所以在效率上优于InnoDB.

        5.MyISAM表是保存成文件的形式,在跨平台的数据转移中使用MyISAM存储会省去不少的麻烦。

上一篇下一篇

猜你喜欢

热点阅读