当前位置:网站首页>Show slave status \ read in G_ Master_ Log_ POS and relay_ Log_ The (size) relationship of POS

Show slave status \ read in G_ Master_ Log_ POS and relay_ Log_ The (size) relationship of POS

2022-07-06 08:52:00 wx5caecf2ed0645


Just to clarify, there are three sets of file/position coordinates in SHOW SLAVE STATUS:

1) The position, ON THE MASTER, from which the I/O thread is reading:Master_Log_File/Read_Master_Log_Pos. ----- Relative to the main library , Where to read the binary log of the main library from the Library , yes IO Threads

2) The position, IN THE RELAY LOGS, at which the SQL thread is executing:Relay_Log_File/Relay_Log_Pos ---- Relative to slave Library , It's from the library sql Where the thread executes to

3) The position, ON THE MASTER, at which the SQL thread is executing:Relay_Master_Log_File/Exec_Master_Log_Pos ---- Relative to the main library , It's from the library sql Where the thread executes to

Numbers 2) and 3) are the same thing, but one is on the slave and the other is on the master.


mysql > show slave status \G

Master_Log_File: mysql-bin-m.000329

Read_Master_Log_Pos: 863952156 ---- The two lines above represent IO Threads , Binary files relative to the main library


Relay_Log_File: mysql-relay.003990

Relay_Log_Pos: 25077069 ---- The above two lines represent sql Threads , Relative to the relay log file of the slave Library

Relay_Master_Log_File: mysql-bin-m.000329

.....

Exec_Master_Log_Pos: 863936961--- The above two lines represent sql Threads , Relative to the main library

( For the convenience of demonstration , I advanced the above line .)

Relay_Log_Space: 25092264--- At present relay-log File size

Slave_IO_Running: Yes

Slave_SQL_Running: Yes


You can see from above ,read_master_log_pos  It will always be greater than exec_master_log_pos Value ( It could be the same ): Because a value represents io Threads , A value represents sql Threads ;sql The thread must be io After the thread .( Of course ,io Threads and sql Threads need to read and write the same file , Otherwise, the comparison will be meaningless ) .

stay binlog in ,Xid Represents the submitted transaction number . Now let's go to the master and slave libraries respectively , Check it out , In the main warehouse mysql-bin-m.000329 Of documents 863936961 Whether the location is the same as that of the slave Library mysql-relay.003990 Of documents 25077069 There are the same sql sentence .

First look at the main library binlog:


# at 863936961

#100111 20:11:39 server id 115000 end_log_pos 863937234 Query thread_id=515886 exec_time=0 error_code=0

use mall00/*!*/;

UPDATE mall00.t_item_sid88 SET item_end_time = 1263816699, item_is_online = 1, item_status = 1 WHERE iid IN (94322390, 94322428, 94322452, 94322473, 94322506, 94322532, 94322604, 94322641, 94322670, 94322706)/*!*/;

# at 863937234

#100111 20:11:39 server id 115000 end_log_pos 863937261 Xid = 1225244590

COMMIT/*!*/;

# at 863937261

#100111 20:11:39 server id 115000 end_log_pos 863937457 Query thread_id=515886 exec_time=0error_code=0

SET TIMESTAMP=1263211899/*!*/;


Look at the Library relaylog:


# at 25077069

#100111 20:11:39 server id 115000 end_log_pos863937234 Query thread_id=515886 exec_time=0 error_code=0

use mall00/*!*/;

UPDATE mall00.t_item_sid88 SET item_end_time = 1263816699, item_is_online = 1, item_status = 1 WHERE iid IN (94322390, 94322428, 94322452, 94322473, 94322506, 94322532, 94322604, 94322641, 94322670, 94322706)/*!*/;

# at 25077342

#100111 20:11:39 server id 115000 end_log_pos 863937261 Xid = 1225244590

COMMIT/*!*/;


From the log above , You can see binlog And realy-log The content is the same , Except for the beginning at Offset at position . Because the offset is always relative to the file itself , The main database is relative to binlog In itself , From the library relative to relay-log In itself . You can also see that , At every query After statement , There is one. Xid  Of event, Commit the transaction , It also shows that in mysql Is automatically submitted , After each statement is executed , The system automatically submits . So in row based replication , You may see multiple binlog  Statements correspond only once commit, Naturally, this is a row based replication .

And a little bit more , It is the corresponding location of the master library and the slave Library event The size is the same , For example, above :

25077342-25077069( From the library event size )  =  863937234-863936961( On the main warehouse event size )

otherwise , Description from the Library relay-log lost , It is possible that the operating system cache is lost , It could be mysql  abnormal crash Lead to relay-log buffer Data loss in . Then you need to reset the master-slave synchronization .


原网站

版权声明
本文为[wx5caecf2ed0645]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202131806320604.html