Class SourceInfo
The source partition information describes the database whose log is being consumed. Typically, the
database is identified by the host address port number of the MySQL server and the name of the database. Here's a JSON-like
representation of an example database:
{
"server" : "production-server"
}
The offset includes the binlog filename, the position of the first event in the binlog, the
number of events to skip, and the
number of rows to also skip.
Here's a JSON-like representation of an example offset:
{
"server_id": 112233,
"ts_sec": 1465937,
"gtid": "db58b0ae-2c10-11e6-b284-0242ac110002:199",
"file": "mysql-bin.000003",
"pos" = 990,
"event" = 0,
"row": 0,
"snapshot": true
}
The "gtids" field only appears in offsets produced when GTIDs are enabled. The "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 Unix epoch (since Jan 1, 1970) of the MySQL event; the message envelopes also have a
timestamp, but that timestamp is the milliseconds since since Jan 1, 1970.
Each change event envelope also includes the source struct that contains MySQL information about that
particular event, including a mixture 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 than 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-like representation of the source for the metadata for an event that corresponds to the above partition and offset:
{
"name": "production-server",
"server_id": 112233,
"ts_sec": 1465937,
"gtid": "db58b0ae-2c10-11e6-b284-0242ac110002:199",
"file": "mysql-bin.000003",
"pos" = 1081,
"row": 0,
"snapshot": true,
"thread" : 1,
"db" : "inventory",
"table" : "products"
}
- Author:
- Randall Hauch
-
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 MySQL binary log file that has last been processed.longGet the position within the MySQL 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) (package private) String(package private) long(package private) String(package private) intgetQuery()(package private) long(package private) longvoidsetBinlogPosition(String binlogFilename, long positionOfFirstEvent) Set the position in the MySQL binlog where we will start reading.voidsetBinlogServerId(long serverId) Set the server ID as found within the MySQL binary log file.voidsetBinlogThread(long threadId) Set the identifier of the MySQL thread that generated the most recent event.voidsetEventPosition(long positionOfCurrentEvent) Set the position within the MySQL 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 be included in the produced change event describing the row.voidsetSourceTime(Instant timestamp) void(package private) Stringtable()Returns a string representation of the table(s) affected by the current event.voidtableEvent(TableId tableId) voidtableEvent(Set<TableId> tableIds) 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
-
SourceInfo
-
-
Method Details
-
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 MySQL 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 MySQL 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 be included in the produced change event describing the row.This method should always be called before
AbstractSourceInfo.struct().- Parameters:
eventRowNumber- the 0-based row number within the event for which the offset is to be produced- See Also:
-
databaseEvent
-
tableEvent
-
tableEvent
-
startGtid
-
setBinlogServerId
public void setBinlogServerId(long serverId) Set the server ID as found within the MySQL binary log file.- Parameters:
serverId- the server ID found within the binary log file
-
setSourceTime
-
setBinlogThread
public void setBinlogThread(long threadId) Set the identifier of the MySQL thread that generated the most recent event.- Parameters:
threadId- the thread identifier; may be negative if not known
-
binlogFilename
Get the name of the MySQL 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 MySQL binary log file of the next event to be processed.- Returns:
- the position within the binary log file; null if it has not been
set
-
getServerId
long getServerId() -
getThreadId
long getThreadId() -
table
String 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. Will benullfor DDL events not applying to tables (CREATE DATABASE etc.). -
getCurrentGtid
String getCurrentGtid() -
getCurrentBinlogFilename
String getCurrentBinlogFilename() -
getCurrentBinlogPosition
long getCurrentBinlogPosition() -
getCurrentRowNumber
int getCurrentRowNumber() -
toString
-
createDocumentFromOffset
Create aDocumentfrom the given offset.- Parameters:
offset- the offset to create the document from.- Returns:
- a
Documentwith the offset data.
-
timestamp
- Specified by:
timestampin classAbstractSourceInfo
-
database
- Specified by:
databasein classAbstractSourceInfo
-