Post

MySQL集群主从复制原理剖析

MySQL集群主从复制原理剖析

为了提高系统数据的高可用,通常会集群化部署MySQL,MySQL中又是使用了什么技术来实现其高可用的呢?答案是主从复制。主从复制保证集群内MySQL的数据保持一致性。主从复制的前提是binlog。

binlog

什么是binlog?binlog是Mysql Server层提供的在表结构或者表数据发生修改的时候进行保存的日志。每产生一条更新操作时,Server层就会产生一条binlog,在事物提交后,事务内产生的所有binlog都会被保存进binlog文件。

binlog有三种格式类型:

  • STATEMENT:每一条修改数据的SQL都会被记录在binlog中;但是存在动态函数的问题,就是不同时间点执行的相同操作得到的结果不同,比如时间函数,uuid函数
  • ROW:记录每行数据最总被修改成什么样子,缺点是binlog文件会过大
  • MIXED:两者兼用

主从复制

主从复制大致分为3个过程:

  • 写入binlog:主库写binlog日志,提交事务,并更新本地的存储数据
  • 同步binlog:主库将binlog复制到所有的从库上
  • 回放binlog:从库执行binlog,更新存储引擎中的数据

客户端的写操作有主数据库执行,读操作由从数据库执行。

This post is licensed under CC BY 4.0 by the author.