Package io.debezium.connector.binlog
Class BinlogSourceInfo
java.lang.Object
io.debezium.connector.AbstractSourceInfo
io.debezium.connector.common.BaseSourceInfo
io.debezium.connector.binlog.BinlogSourceInfo
Information about the source, including the position in the source binary log we have processed.
The
BinlogPartition.getSourcePartition() information describes the database whose log is currently
being processed. Typically, the database is identified by the host address port of the database server and
the name of the database. Here's a JSON representation of an example database:
{
"server": "production-server"
}
The offset includes the binlogFilename() and the binlogPosition(), along with details on how many
BinlogOffsetContext.eventsToSkipUponRestart() and the BinlogOffsetContext.rowsToSkipUponRestart().
Another JSON example:
{
"server_id": 112233,
"ts_sec": 1234567,
"gtid": "<binary-log-database-formatted-gtid>",
"file": "mysql-bin.000003",
"pos": 990,
"event": 0,
"row": 0,
"snapshot": true
}
The "gtid" field only appears in offsets produced when GTIDs are enabled. The "@{code snapshot}" field
only appears in offsets produced when the connector is in the middle of a snapshot. And finally, the "ts"
field contains the seconds since the Unix epoch for the database event; the message Envelope
also has a timestamp, but that timestamp is in milliseconds since the Unix epoch.
Each change event envelope also includes the AbstractSourceInfo.struct() that contains database information about that
specific event, including a mixture of the fields from the binlog filename and position where the event can
be found, and when GTIDs are enabled, the GTID of the transaction in which the event occurs. Like with the
offset, the "snapshot" field only appears for events produced when the connector is in the middle of
a snapshot. Note that this information is likely different from the offset information, since the connector
may need to restart from either just after the most recently completed transaction or the beginning of the
most recently started transaction (whichever appears later in the binlog).
Here's a JSON representation of the source metadata for an event that represents the partition and offset:
{
"name": "production-server",
"server_id": 112233,
"ts_sec", 1234567,
"gtid": "<binary-log-database-formatted-gtid>",
"file": "mysql-bin.000003",
"pos": 1081,
"row": 0,
"snapshot": true,
"thread": 1,
"db": "inventory",
"table": "products"
}
- Author:
- Randall Hauch, Chris Cranford
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final Stringstatic final Stringprivate Stringprivate longprivate Stringprivate Stringprivate intprivate Stringstatic final Stringstatic final Stringstatic final Stringprivate longprivate Instantstatic final Stringprivate longFields inherited from class io.debezium.connector.common.BaseSourceInfo
snapshotRecordFields inherited from class io.debezium.connector.AbstractSourceInfo
COLLECTION_NAME_KEY, DATABASE_NAME_KEY, DEBEZIUM_CONNECTOR_KEY, DEBEZIUM_VERSION_KEY, SCHEMA_NAME_KEY, SEQUENCE_KEY, SERVER_NAME_KEY, SNAPSHOT_KEY, TABLE_NAME_KEY, TIMESTAMP_KEY, TIMESTAMP_NS_KEY, TIMESTAMP_US_KEY -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionGet the name of the binary log file that has last been processed.longGet the position within the binary log file of the next event to be processed.static DocumentcreateDocumentFromOffset(Map<String, ?> offset) Create aDocumentfrom the given offset.protected Stringdatabase()voiddatabaseEvent(String databaseName) Set the database that the current binlog event represents.Get the current binlog file being processed.longGet the current binlog file position.Get the current recorded global transaction identifier (GTID).intReturns the computed row number within a binlog event.getQuery()longGet the server IDlongGet the identifier of the binlog threadvoidsetBinlogPosition(String binlogFilename, long positionOfFirstEvent) Set the position in the binlog where we will start reading.voidsetBinlogServerId(long serverId) Set the server ID as found within the binary log file.voidsetBinlogThread(long threadId) Set the identifier of the binlog thread that generated the most recent event.voidsetEventPosition(long positionOfCurrentEvent) Set the position within the binary log file of the current event.voidSet the original SQL query.voidsetRowNumber(int eventRowNumber) Given the row number within a binlog event and the total number of rows in that event, compute the Kafka Connect offset that is to be included in the produced change event describing the row.voidsetSourceTime(Instant timestamp) Set the instant from the binlog log file for the specified event.voidSet the starting global transaction identifiertable()Returns a string representation of the table(s) affected by the current event.voidtableEvent(TableId tableId) Sets the associate table identifier that the current binlog event represents.voidtableEvent(Set<TableId> tableIds) Sets the associated table identifiers that the current binlog event represents.protected InstanttoString()Methods inherited from class io.debezium.connector.common.BaseSourceInfo
isSnapshot, setSnapshot, snapshotMethods inherited from class io.debezium.connector.AbstractSourceInfo
schema, sequence, serverName, struct, structMaker
-
Field Details
-
SERVER_ID_KEY
- See Also:
-
GTID_KEY
- See Also:
-
BINLOG_FILENAME_OFFSET_KEY
- See Also:
-
BINLOG_POSITION_OFFSET_KEY
- See Also:
-
BINLOG_ROW_IN_EVENT_OFFSET_KEY
- See Also:
-
THREAD_KEY
- See Also:
-
QUERY_KEY
- See Also:
-
currentGtid
-
currentBinlogFilename
-
currentBinlogPosition
private long currentBinlogPosition -
currentRowNumber
private int currentRowNumber -
serverId
private long serverId -
sourceTime
-
threadId
private long threadId -
currentQuery
-
tableIds
-
databaseName
-
-
Constructor Details
-
BinlogSourceInfo
-
-
Method Details
-
timestamp
- Specified by:
timestampin classAbstractSourceInfo
-
database
- Specified by:
databasein classAbstractSourceInfo
-
setQuery
Set the original SQL query.- Parameters:
query- the original SQL query that generated the event.
-
getQuery
- Returns:
- the original SQL query that generated the event. NULL if no such query is associated.
-
setBinlogPosition
Set the position in the binlog where we will start reading.- Parameters:
binlogFilename- the name of the binary log file; may not be nullpositionOfFirstEvent- the position in the binary log file to begin processing
-
setEventPosition
public void setEventPosition(long positionOfCurrentEvent) Set the position within the binary log file of the current event.- Parameters:
positionOfCurrentEvent- the position within the binary log file of the current event
-
setRowNumber
public void setRowNumber(int eventRowNumber) Given the row number within a binlog event and the total number of rows in that event, compute the Kafka Connect offset that is to be included in the produced change event describing the row. This method should always be called beforeAbstractSourceInfo.struct().- Parameters:
eventRowNumber- the 0-based row number within the event for which the offset is to be produced- See Also:
-
databaseEvent
Set the database that the current binlog event represents.- Parameters:
databaseName- the database name
-
tableEvent
Sets the associated table identifiers that the current binlog event represents.- Parameters:
tableIds- set of table ids, should not be null but may be empty
-
tableEvent
Sets the associate table identifier that the current binlog event represents.- Parameters:
tableId- the table id, should not be null
-
startGtid
Set the starting global transaction identifier- Parameters:
gtid- the global transaction identifier
-
setBinlogServerId
public void setBinlogServerId(long serverId) Set the server ID as found within the binary log file.- Parameters:
serverId- the server ID found within the binary log file
-
setSourceTime
Set the instant from the binlog log file for the specified event.- Parameters:
timestamp- the time the binlog event occurred
-
setBinlogThread
public void setBinlogThread(long threadId) Set the identifier of the binlog thread that generated the most recent event.- Parameters:
threadId- the thread identifier; may be negative if not known
-
binlogFilename
Get the name of the binary log file that has last been processed.- Returns:
- the name of the binary log file; null if it has not been set
-
binlogPosition
public long binlogPosition()Get the position within the binary log file of the next event to be processed.- Returns:
- the position within the binary log file; zero if it has not been set
-
getServerId
public long getServerId()Get the server ID- Returns:
- the server ID within the binary log file; 0 if it has not been set
-
getThreadId
public long getThreadId()Get the identifier of the binlog thread- Returns:
- the binary log thread identifier; -1 if it has not been set
-
table
Returns a string representation of the table(s) affected by the current event. Will only represent more than a single table for events in the user-facing schema history topic for certain types of DDL events. Will benullfor DDL events not applying to tables, i.e. CREATE DATABASE. -
getCurrentGtid
Get the current recorded global transaction identifier (GTID).- Returns:
- the current global transaction identifier (GTID); will be
nullif GTID is not enabled
-
getCurrentBinlogFilename
Get the current binlog file being processed.- Returns:
- the current binlog file being processed; null if it has not been set
-
getCurrentBinlogPosition
public long getCurrentBinlogPosition()Get the current binlog file position.- Returns:
- the current binlog file position; 0 if it has not been set
-
getCurrentRowNumber
public int getCurrentRowNumber()Returns the computed row number within a binlog event.- Returns:
- the computed binlog event row number; 0 if it has not been set
-
toString
-
createDocumentFromOffset
Create aDocumentfrom the given offset.- Parameters:
offset- the offset to create the document from.- Returns:
- a
Documentwith the offset data.
-