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.