@NotThreadSafe final class SourceInfo extends BaseSourceInfo
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 source offset information is included in each event and captures where the connector should restart
if this event's offset is the last one recorded. 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 partition (which is renamed in the source to
make more sense), 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"
}
| Modifier and Type | Field and Description |
|---|---|
static String |
BINLOG_FILENAME_OFFSET_KEY |
static String |
BINLOG_POSITION_OFFSET_KEY |
static String |
BINLOG_ROW_IN_EVENT_OFFSET_KEY |
private String |
currentBinlogFilename |
private long |
currentBinlogPosition |
private String |
currentGtid |
private String |
currentQuery |
private int |
currentRowNumber |
private String |
databaseName |
static String |
GTID_KEY |
static String |
QUERY_KEY |
static String |
SERVER_ID_KEY |
private long |
serverId |
private Instant |
sourceTime |
private Set<TableId> |
tableIds |
static String |
THREAD_KEY |
private long |
threadId |
snapshotRecordCOLLECTION_NAME_KEY, DATABASE_NAME_KEY, DEBEZIUM_CONNECTOR_KEY, DEBEZIUM_VERSION_KEY, SCHEMA_NAME_KEY, SERVER_NAME_KEY, SNAPSHOT_KEY, TABLE_NAME_KEY, TIMESTAMP_KEY| Constructor and Description |
|---|
SourceInfo(MySqlConnectorConfig connectorConfig) |
| Modifier and Type | Method and Description |
|---|---|
String |
binlogFilename()
Get the name of the MySQL binary log file that has last been processed.
|
long |
binlogPosition()
Get the position within the MySQL binary log file of the next event to be processed.
|
static Document |
createDocumentFromOffset(Map<String,?> offset)
Create a
Document from the given offset. |
protected String |
database() |
void |
databaseEvent(String databaseName) |
(package private) long |
getBinlogTimestampSeconds() |
(package private) String |
getCurrentBinlogFilename() |
(package private) long |
getCurrentBinlogPosition() |
(package private) String |
getCurrentGtid() |
(package private) int |
getCurrentRowNumber() |
String |
getQuery() |
(package private) long |
getServerId() |
(package private) long |
getThreadId() |
boolean |
isLastSnapshot()
Deprecated.
|
void |
setBinlogPosition(String binlogFilename,
long positionOfFirstEvent)
Set the position in the MySQL binlog where we will start reading.
|
void |
setBinlogServerId(long serverId)
Set the server ID as found within the MySQL binary log file.
|
void |
setBinlogThread(long threadId)
Set the identifier of the MySQL thread that generated the most recent event.
|
void |
setBinlogTimestampSeconds(long timestampInSeconds)
Set the number of seconds since Unix epoch (January 1, 1970) as found within the MySQL binary log file.
|
void |
setEventPosition(long positionOfCurrentEvent)
Set the position within the MySQL binary log file of the current event.
|
void |
setQuery(String query)
Set the original SQL query.
|
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.
|
void |
setSourceTime(Instant timestamp) |
void |
startGtid(String gtid) |
(package private) String |
table()
Returns a string representation of the table(s) affected by the current
event.
|
void |
tableEvent(Set<TableId> tableIds) |
void |
tableEvent(TableId tableId) |
protected Instant |
timestamp() |
String |
toString() |
isSnapshot, setSnapshot, snapshotschema, serverName, struct, structMakerpublic static final String SERVER_ID_KEY
public static final String GTID_KEY
public static final String BINLOG_FILENAME_OFFSET_KEY
public static final String BINLOG_POSITION_OFFSET_KEY
public static final String BINLOG_ROW_IN_EVENT_OFFSET_KEY
public static final String THREAD_KEY
public static final String QUERY_KEY
private String currentGtid
private String currentBinlogFilename
private long currentBinlogPosition
private int currentRowNumber
private long serverId
private Instant sourceTime
private long threadId
private String currentQuery
private String databaseName
public SourceInfo(MySqlConnectorConfig connectorConfig)
public void setQuery(String query)
query - the original SQL query that generated the event.public String getQuery()
public void setBinlogPosition(String binlogFilename, long positionOfFirstEvent)
binlogFilename - the name of the binary log file; may not be nullpositionOfFirstEvent - the position in the binary log file to begin processingpublic void setEventPosition(long positionOfCurrentEvent)
positionOfCurrentEvent - the position within the binary log file of the current eventpublic void setRowNumber(int eventRowNumber)
This method should always be called before AbstractSourceInfo.struct().
eventRowNumber - the 0-based row number within the event for which the offset is to be producedAbstractSourceInfo.struct()public void databaseEvent(String databaseName)
public void tableEvent(TableId tableId)
public void startGtid(String gtid)
public void setBinlogServerId(long serverId)
serverId - the server ID found within the binary log filepublic void setBinlogTimestampSeconds(long timestampInSeconds)
timestampInSeconds - the timestamp in seconds found within the binary log filepublic void setSourceTime(Instant timestamp)
public void setBinlogThread(long threadId)
threadId - the thread identifier; may be negative if not knownpublic String binlogFilename()
setpublic long binlogPosition()
setlong getServerId()
long getThreadId()
String table()
null
for DDL events not applying to tables (CREATE DATABASE etc.).String getCurrentGtid()
String getCurrentBinlogFilename()
long getCurrentBinlogPosition()
long getBinlogTimestampSeconds()
int getCurrentRowNumber()
public static Document createDocumentFromOffset(Map<String,?> offset)
Document from the given offset.offset - the offset to create the document from.Document with the offset data.protected Instant timestamp()
timestamp in class AbstractSourceInfoprotected String database()
database in class AbstractSourceInfo@Deprecated public boolean isLastSnapshot()
Copyright © 2021 JBoss by Red Hat. All rights reserved.