MySQL数据库主从同步延迟分析及解决方案
一、MySQL的数据库主从复制原理 MySQL主从复制实际上基于二进制日志,原理可以用一张图来表示: 分为四步走: 1. 主库对所有DDL和DML产生的日志写进binlog; 2. 主库生成一个 log dump 线程,用来给从库I/O线程读取binlog; 3. 从库的I/O Thread去请求主库的binlog,并将得到的binlog日志写到relay log文件中; 4. 从库的SQL Thread会读取relay log文件中的日志解析成具体操作,将主库的DDL和DML操作事件重放。 关于DDL和DML SQL语言共分为四大类:查询语言DQL,控制语言DCL,操纵语言DML,定义语言DDL。 DQL:可以简单理解为SELECT语句; DCL:GRANT、ROLLBACK和COMMIT一类语句; DML:可以理解为CREATE一类的语句; DDL:INSERT、UPDATE和DELETE语句都是; 二、主从复制存在的问题 1. 主库宕机后,数据可能丢失; 2. 主从同步延迟。 三、MySQL数据库主从同步延迟产生原因 原因分析 MySQL的主从复制都是单线程的操作,主库对所有DDL和DML产生的日志写进binlog,由于binlog是顺序写,所以效率很高。Slave的SQL Thread线程将主库的DDL和DML操作事件在slave中重放。DML和DDL的IO操作是随即的