mysql 架构篇系列 3 复制运行状态监控与选项参数说明

 一. 概述

  在上一篇中,搭建了一主一从的复制架构,这篇通过一些诊断方法来了解复制的运行状态和一些选项参数说明。上次mysql主从服务关机,今天在打开mysql服务,出现了错误信息。

  1.首先 启动主从mysql服务

  2.在从库上执行START SLAVE, 开始复制。

  3.在从库上执行SHOW PROCESSLIST;  slave已经连接上master, 并开始接受并执行日志。


4.在从库上执行SHOW  SLAVE STATUS,查看复制状态

    错误信息: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'

  5. 解决方法 

复制代码
-- 在主库上执行,记录日志文件号和位置,如下图所示:flush logs; show master status;
复制代码

复制代码
  -- 在从库上执行CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000072',MASTER_LOG_POS=154;  SLAVE START;
复制代码

     从库上再执行SHOW PROCESSLIST,显示了二个复制进程:一个是 I/O线程,连接master,id为7。 一个是SQL线程,id为8。如下图所示:

 

二 .复制中的各类文件

  myql复制中涉及了两类非常重要的日志文件:二进制日志文件(binlog), 中继日志文件(relay log)。 binlog文件会把mysql中所有数据修改操作以二进制形式记录,包括create,drop,insert,update,delete操作等,但不记录查询select操作。对于二进制binlog文件格式,三种支持类型包括:Statement,Row,Mixed ( 在mysql 架构篇第一篇中有讲到)。

  2.1 从库relay log 中继日志文件

    从库中继日志文件relay log的文件格式,内容和主库二进制日志文件binlog一样,唯一的区别在于从库上的sql线程在执行完当前中继日志文件relay log中的事件之后,sql 线程会自动删除当前中继日志文件realy log,避免从库上的中继日志文件relay log占用过多的磁盘空间。

   2.2 从库 master.info和realy-log.info文件

    为了保证从库crash重启后,从库的I/O线程仍然能够知道从哪里开始复制,从库上默认还会创建二个日志文件master.info 和realy-log.info 用来保存复制的进度。 这两个文件在磁盘上以文件形式记录,位置在data目录下。I/O线程维护master.info 中主库二进制日志binlog的进度。sql线程维护realy-log.info 应用中继日志relay log 的进度。 总结是: I/O线程关联master.info,sql线程关联realy-log.info。再来看下复制原理图:

  2.3 复制状态信息

    在从库上通过SHOW SLAVE STATUS,能了解复制的状态, 里面的信息包含了master.info和realy-log.info的信息。

    (1) master.info对应的信息如下:

Master_Host

172.168.18.201

主库IP

Master_User

rep1

主库上用于复制的账号

Master_Port

3306

主库mysql 端口

Master_Log_File

mysql-bin.000072

从库I/O线程当前读取主库binlog的文件名

Read_Master_Log_Pos

514

从库I/O线程读取主库binlog的位置

    (2) realy-log.info对应的信息如下:

Relay_Log_File

xuegod64-relay-bin.000005

SQL线程正在应用的relay log

50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信