Mysql主从复制原理
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存储会省去不少的麻烦。