小技巧:判断主从复制是否延时
我们先在主库查看当前的Position号,如下是1070,使用的binlog文件是 mysql-bin.000041
[root@client1 binlog]# mysql -e 'show master status;'
mysql-bin.000041 1070
#查看是否已发送所有日志
mysql> show processlist;
#以下信息为已发送所有日志
Master has sent all binlog to slave; waiting for more updates starting
然后在从库查看状态
mysql> show slave status \G;
Read_Master_Log_Pos: 1070 #已经获取到主库的binlog日志位置信息
Exec_Master_Log_Pos: 1070 #已执行到的日志位置点
确保两者是一致,代表同步已完成。
我们继续在从库上查看master.info文件
$ cd /usr/local/mysql/data/
$ cat master.info
25
mysql-bin.000041 #接收的binlog日志文件名
1070 #对应主库的Position号,如果一致则代表同步完成
10.154.0.111
repl
123
3306
10
0
在从库上查看relay-log.info文件
$ cd /usr/local/mysql/data/
$ cat relay-log.info
7 #server_id号
./client2-relay-bin.000006
360 #相当于当前回放relay日志到了360号,360号对应以下的1070号,也就是说已经回放完了binlog的1070号
mysql-bin.000041
1070 #对应已经获取到的binlog日志Position号
0
0
1
注意:上述操作要同一时刻进行查看,如果两者不同,相减就可出了延迟的日志量。
下面我们来看一下Position还代表什么意义,通过上述我们得知,Position是1070,查看主库的binlog文件大小发现为1070,故Position代表的含义为日志的大小,单位为字节。
$ cd /data/binlog/
$ ll
-rw-r-----. 1 mysql mysql 1070 Apr 5 08:36 mysql-bin.000041
主从延时的监控回顾
查看主从延时时间
show slave status\G
Seconds_Behind_Master: 0
查看主库到哪个位置号了
mysql> show master status ;
File: mysql-bin.000041
Position: 1070
查看从库拿到的日志位置点
mysql> show slave status \G;
Master_Log_File: mysql-bin.000041
Read_Master_Log_Pos: 1070 #从主库拿到的日志位置点
Exec_Master_Log_Pos: 1070 #已执行到的日志位置点
两者一致说明主库没有延时
查看从库执行了多少日志
#拿过来的是binlog,执行的是relay_log,号码是对不上的,执行位置点360相当于执行到了1070
Relay_Log_File: client2-relay-bin.000007
Relay_Log_Pos: 360
Exec_Master_Log_Pos: 1070
企业中构建主从的方式,适用于读多写少的业务
今天的学习是为了以后的工作更加的轻松!