本文更新于2020-05-04,使用MySQL 5.7,操作系统为Deepin 15.4。
目录
- 启动选项
- 管理维护
复制是指将主库的DDL和DML操作通过二进制日志传到从库上,然后从库对这些日志重做,从而使得主库和从库的数据保持同步。
复制的优点有:
- 如果主库出现问题,可以快速切换到从库提供服务。
- 可以在从库上执行查询操作,降低主库的访问压力。由于MySQL实现的是异步复制,在从库进行查询需考虑到数据的差异。
- 可以在从库上执行备份,以避免备份期间影响主库的服务。
MySQL通过3个线程来完成主从库间的数据复制:其中Binlog Dump线程跑在主库上,I/O线程和SQL线程跑在从库上。可通过SHOW PROCESSLIST
查看线程的状态。
MySQL的复制是主库主动推送日志到从库去的。复制过程涉及两类非常重要的日志文件:二进制日志文件(Binlog)和中继日志文件(Relay Log)。中继日志文件的文件格式、内容和二进制日志文件一样,区别在于其在执行完后会自动删除。
为了保证从库崩溃后,从库的I/O线程和SQL线程仍能知道从哪里开始复制,从库默认还会创建两个日志文件master.info和relay-log.info,分别记录了I/O线程当前读取主库二进制日志的进度和SQL线程应用中继日志的进度。通过SHOW SLAVE STATUS
可查看当前从库复制的状态。
MySQL支持4种复制模式:基于SQL语句的复制(SBR)、基于行数据的复制(RBR)、混合复制(对安全的SQL采用SBR,对非安全的SQL使用RBR)、使用全局事务ID(GTIDs)的复制。
MySQL支持3种日志格.........