blob: 9701b7def0d90e472e0ea16a6fe58aff2119df83 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.camel.component.debezium.springboot;
import java.util.Map;
import org.apache.camel.component.debezium.configuration.MySqlConnectorEmbeddedDebeziumConfiguration;
import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
* Capture changes from a MySQL database.
*
* Generated by camel-package-maven-plugin - do not edit this file!
*/
@ConfigurationProperties(prefix = "camel.component.debezium-mysql")
public class DebeziumMySqlComponentConfiguration
extends
ComponentConfigurationPropertiesCommon {
/**
* Whether to enable auto configuration of the debezium-mysql component.
* This is enabled by default.
*/
private Boolean enabled;
/**
* Additional properties for debezium components in case they can't be set
* directly on the camel configurations (e.g: setting Kafka Connect
* properties needed by Debezium engine, for example setting
* KafkaOffsetBackingStore), the properties have to be prefixed with
* additionalProperties.. E.g:
* additionalProperties.transactional.id=12345&additionalProperties.schema.registry.url=http://localhost:8811/avro
*/
private Map<String, Object> additionalProperties;
/**
* Allows for bridging the consumer to the Camel routing Error Handler,
* which mean any exceptions (if possible) occurred while the Camel consumer
* is trying to pickup incoming messages, or the likes, will now be
* processed as a message and handled by the routing Error Handler.
* Important: This is only possible if the 3rd party component allows Camel
* to be alerted if an exception was thrown. Some components handle this
* internally only, and therefore bridgeErrorHandler is not possible. In
* other situations we may improve the Camel component to hook into the 3rd
* party component and make this possible for future releases. By default
* the consumer will use the org.apache.camel.spi.ExceptionHandler to deal
* with exceptions, that will be logged at WARN or ERROR level and ignored.
*/
private Boolean bridgeErrorHandler = false;
/**
* Allow pre-configured Configurations to be set. The option is a
* org.apache.camel.component.debezium.configuration.MySqlConnectorEmbeddedDebeziumConfiguration type.
*/
private MySqlConnectorEmbeddedDebeziumConfiguration configuration;
/**
* The Converter class that should be used to serialize and deserialize key
* data for offsets. The default is JSON converter.
*/
private String internalKeyConverter = "org.apache.kafka.connect.json.JsonConverter";
/**
* The Converter class that should be used to serialize and deserialize
* value data for offsets. The default is JSON converter.
*/
private String internalValueConverter = "org.apache.kafka.connect.json.JsonConverter";
/**
* The name of the Java class of the commit policy. It defines when offsets
* commit has to be triggered based on the number of events processed and
* the time elapsed since the last commit. This class must implement the
* interface 'OffsetCommitPolicy'. The default is a periodic commit policy
* based upon time intervals.
*/
private String offsetCommitPolicy;
/**
* Maximum number of milliseconds to wait for records to flush and partition
* offset data to be committed to offset storage before cancelling the
* process and restoring the offset data to be committed in a future
* attempt. The default is 5 seconds. The option is a long type.
*/
private Long offsetCommitTimeoutMs = 5000L;
/**
* Interval at which to try committing offsets. The default is 1 minute. The
* option is a long type.
*/
private Long offsetFlushIntervalMs = 60000L;
/**
* The name of the Java class that is responsible for persistence of
* connector offsets.
*/
private String offsetStorage = "org.apache.kafka.connect.storage.FileOffsetBackingStore";
/**
* Path to file where offsets are to be stored. Required when offset.storage
* is set to the FileOffsetBackingStore.
*/
private String offsetStorageFileName;
/**
* The number of partitions used when creating the offset storage topic.
* Required when offset.storage is set to the 'KafkaOffsetBackingStore'.
*/
private Integer offsetStoragePartitions;
/**
* Replication factor used when creating the offset storage topic. Required
* when offset.storage is set to the KafkaOffsetBackingStore
*/
private Integer offsetStorageReplicationFactor;
/**
* The name of the Kafka topic where offsets are to be stored. Required when
* offset.storage is set to the KafkaOffsetBackingStore.
*/
private String offsetStorageTopic;
/**
* Whether autowiring is enabled. This is used for automatic autowiring
* options (the option must be marked as autowired) by looking up in the
* registry to find if there is a single instance of matching type, which
* then gets configured on the component. This can be used for automatic
* configuring JDBC data sources, JMS connection factories, AWS Clients,
* etc.
*/
private Boolean autowiredEnabled = true;
/**
* Specify how BIGINT UNSIGNED columns should be represented in change
* events, including: 'precise' uses java.math.BigDecimal to represent
* values, which are encoded in the change events using a binary
* representation and Kafka Connect's
* 'org.apache.kafka.connect.data.Decimal' type; 'long' (the default)
* represents values using Java's 'long', which may not offer the precision
* but will be far easier to use in consumers.
*/
private String bigintUnsignedHandlingMode = "long";
/**
* Specify how binary (blob, binary, etc.) columns should be represented in
* change events, including: 'bytes' represents binary data as byte array
* (default); 'base64' represents binary data as base64-encoded string;
* 'base64-url-safe' represents binary data as base64-url-safe-encoded
* string; 'hex' represents binary data as hex-encoded (base16) string
*/
private String binaryHandlingMode = "bytes";
/**
* The size of a look-ahead buffer used by the binlog reader to decide
* whether the transaction in progress is going to be committed or rolled
* back. Use 0 to disable look-ahead buffering. Defaults to 0 (i.e.
* buffering is disabled).
*/
private Integer binlogBufferSize = 0;
/**
* Regular expressions matching columns to exclude from change events
*/
private String columnExcludeList;
/**
* Regular expressions matching columns to include in change events
*/
private String columnIncludeList;
/**
* A comma-separated list of regular expressions matching fully-qualified
* names of columns that adds the columns original type and original length
* as parameters to the corresponding field schemas in the emitted change
* records.
*/
private String columnPropagateSourceType;
/**
* Whether a separate thread should be used to ensure the connection is kept
* alive.
*/
private Boolean connectKeepAlive = true;
/**
* Interval for connection checking if keep alive thread is used, given in
* milliseconds Defaults to 1 minute (60,000 ms). The option is a long type.
*/
private Long connectKeepAliveIntervalMs = 60000L;
/**
* Specifies the connection adapter to be used
*/
private String connectorAdapter = "mysql";
/**
* Maximum time to wait after trying to connect to the database before
* timing out, given in milliseconds. Defaults to 30 seconds (30,000 ms).
* The option is a int type.
*/
private Integer connectTimeoutMs = 30000;
/**
* Optional list of custom converters that would be used instead of default
* ones. The converters are defined using '.type' config option and
* configured using options '.'
*/
private String converters;
/**
* The custom metric tags will accept key-value pairs to customize the MBean
* object name which should be appended the end of regular name, each key
* would represent a tag for the MBean object name, and the corresponding
* value would be the value of that tag the key is. For example: k1=v1,k2=v2
*/
private String customMetricTags;
/**
* A comma-separated list of regular expressions that match database names
* to be excluded from monitoring
*/
private String databaseExcludeList;
/**
* Resolvable hostname or IP address of the database server.
*/
private String databaseHostname;
/**
* The databases for which changes are to be captured
*/
private String databaseIncludeList;
/**
* A semicolon separated list of SQL statements to be executed when a JDBC
* connection (not binlog reading connection) to the database is
* established. Note that the connector may establish JDBC connections at
* its own discretion, so this should typically be used for configuration of
* session parameters only, but not for executing DML statements. Use
* doubled semicolon (';;') to use a semicolon as a character and not as a
* delimiter.
*/
private String databaseInitialStatements;
/**
* JDBC Driver class name used to connect to the MySQL database server.
*/
private String databaseJdbcDriver = "com.mysql.cj.jdbc.Driver";
/**
* Password of the database user to be used when connecting to the database.
*/
private String databasePassword;
/**
* Port of the database server.
*/
private Integer databasePort = 3306;
/**
* A numeric ID of this database client, which must be unique across all
* currently-running database processes in the cluster. This connector joins
* the MySQL database cluster as another server (with this unique ID) so it
* can read the binlog.
*/
private Long databaseServerId;
/**
* Only relevant if parallel snapshotting is configured. During parallel
* snapshotting, multiple (4) connections open to the database client, and
* they each need their own unique connection ID. This offset is used to
* generate those IDs from the base configured cluster ID.
*/
private Long databaseServerIdOffset = 10000L;
/**
* The location of the key store file. This is optional and can be used for
* two-way authentication between the client and the MySQL Server.
*/
private String databaseSslKeystore;
/**
* The password for the key store file. This is optional and only needed if
* 'database.ssl.keystore' is configured.
*/
private String databaseSslKeystorePassword;
/**
* Whether to use an encrypted connection to MySQL. Options include:
* 'disabled' to use an unencrypted connection; 'preferred' (the default) to
* establish a secure (encrypted) connection if the server supports secure
* connections, but fall back to an unencrypted connection otherwise;
* 'required' to use a secure (encrypted) connection, and fail if one cannot
* be established; 'verify_ca' like 'required' but additionally verify the
* server TLS certificate against the configured Certificate Authority (CA)
* certificates, or fail if no valid matching CA certificates are found;
* or'verify_identity' like 'verify_ca' but additionally verify that the
* server certificate matches the host to which the connection is attempted.
*/
private String databaseSslMode = "preferred";
/**
* The location of the trust store file for the server certificate
* verification.
*/
private String databaseSslTruststore;
/**
* The password for the trust store file. Used to check the integrity of the
* truststore, and unlock the truststore.
*/
private String databaseSslTruststorePassword;
/**
* Name of the database user to be used when connecting to the database.
*/
private String databaseUser;
/**
* A comma-separated list of regular expressions matching the
* database-specific data type names that adds the data type's original type
* and original length as parameters to the corresponding field schemas in
* the emitted change records.
*/
private String datatypePropagateSourceType;
/**
* Specify how DECIMAL and NUMERIC columns should be represented in change
* events, including: 'precise' (the default) uses java.math.BigDecimal to
* represent values, which are encoded in the change events using a binary
* representation and Kafka Connect's
* 'org.apache.kafka.connect.data.Decimal' type; 'string' uses string to
* represent values; 'double' represents values using Java's 'double', which
* may not offer the precision but will be far easier to use in consumers.
*/
private String decimalHandlingMode = "precise";
/**
* MySQL allows user to insert year value as either 2-digit or 4-digit. In
* case of two digit the value is automatically mapped into 1970 -
* 2069.false - delegates the implicit conversion to the databasetrue - (the
* default) Debezium makes the conversion
*/
private Boolean enableTimeAdjuster = true;
/**
* The maximum number of retries on connection errors before failing (-1 =
* no limit, 0 = disabled, 0 = num of retries).
*/
private Integer errorsMaxRetries = -1;
/**
* Specify how failures during deserialization of binlog events (i.e. when
* encountering a corrupted event) should be handled, including: 'fail' (the
* default) an exception indicating the problematic event and its binlog
* position is raised, causing the connector to be stopped; 'warn' the
* problematic event and its binlog position will be logged and the event
* will be skipped; 'ignore' the problematic event will be skipped.
*/
private String eventDeserializationFailureHandlingMode = "fail";
/**
* Specify how failures during processing of events (i.e. when encountering
* a corrupted event) should be handled, including: 'fail' (the default) an
* exception indicating the problematic event and its position is raised,
* causing the connector to be stopped; 'warn' the problematic event and its
* position will be logged and the event will be skipped; 'ignore' the
* problematic event will be skipped.
*/
private String eventProcessingFailureHandlingMode = "fail";
/**
* The source UUIDs used to exclude GTID ranges when determine the starting
* position in the MySQL server's binlog.
*/
private String gtidSourceExcludes;
/**
* If set to true, we will only produce DML events into Kafka for
* transactions that were written on mysql servers with UUIDs matching the
* filters defined by the gtid.source.includes or gtid.source.excludes
* configuration options, if they are specified.
*/
private Boolean gtidSourceFilterDmlEvents = true;
/**
* The source UUIDs used to include GTID ranges when determine the starting
* position in the MySQL server's binlog.
*/
private String gtidSourceIncludes;
/**
* The query executed with every heartbeat.
*/
private String heartbeatActionQuery;
/**
* Length of an interval in milli-seconds in in which the connector
* periodically sends heartbeat messages to a heartbeat topic. Use 0 to
* disable heartbeat messages. Disabled by default. The option is a int
* type.
*/
private Integer heartbeatIntervalMs = 0;
/**
* The prefix that is used to name heartbeat topics.Defaults to
* __debezium-heartbeat.
*/
private String heartbeatTopicsPrefix = "__debezium-heartbeat";
/**
* Whether the connector should include the original SQL query that
* generated the change event. Note: This option requires MySQL be
* configured with the binlog_rows_query_log_events option set to ON. If
* using MariaDB, configure the binlog_annotate_row_events option must be
* set to ON. Query will not be present for events generated from snapshot.
* WARNING: Enabling this option may expose tables or fields explicitly
* excluded or masked by including the original SQL statement in the change
* event. For this reason the default value is 'false'.
*/
private Boolean includeQuery = false;
/**
* Whether the connector should publish changes in the database schema to a
* Kafka topic with the same name as the database server ID. Each schema
* change will be recorded using a key that contains the database name and
* whose value include logical description of the new schema and optionally
* the DDL statement(s). The default is 'true'. This is independent of how
* the connector internally records database schema history.
*/
private Boolean includeSchemaChanges = true;
/**
* Whether the connector parse table and column's comment to metadata
* object. Note: Enable this option will bring the implications on memory
* usage. The number and size of ColumnImpl objects is what largely impacts
* how much memory is consumed by the Debezium connectors, and adding a
* String to each of them can potentially be quite heavy. The default is
* 'false'.
*/
private Boolean includeSchemaComments = false;
/**
* Specify how binlog events that belong to a table missing from internal
* schema representation (i.e. internal representation is not consistent
* with database) should be handled, including: 'fail' (the default) an
* exception indicating the problematic event and its binlog position is
* raised, causing the connector to be stopped; 'warn' the problematic event
* and its binlog position will be logged and the event will be skipped;
* 'skip' the problematic event will be skipped.
*/
private String inconsistentSchemaHandlingMode = "fail";
/**
* Detect schema change during an incremental snapshot and re-select a
* current chunk to avoid locking DDLs. Note that changes to a primary key
* are not supported and can cause incorrect results if performed during an
* incremental snapshot. Another limitation is that if a schema change
* affects only columns' default values, then the change won't be detected
* until the DDL is processed from the binlog stream. This doesn't affect
* the snapshot events' values, but the schema of snapshot events may have
* outdated defaults.
*/
private Boolean incrementalSnapshotAllowSchemaChanges = false;
/**
* The maximum size of chunk (number of documents/rows) for incremental
* snapshotting
*/
private Integer incrementalSnapshotChunkSize = 1024;
/**
* Specify the strategy used for watermarking during an incremental
* snapshot: 'insert_insert' both open and close signal is written into
* signal data collection (default); 'insert_delete' only open signal is
* written on signal data collection, the close will delete the relative
* open signal;
*/
private String incrementalSnapshotWatermarkingStrategy = "INSERT_INSERT";
/**
* Maximum size of each batch of source records. Defaults to 2048.
*/
private Integer maxBatchSize = 2048;
/**
* Maximum size of the queue for change events read from the database log
* but not yet recorded or forwarded. Defaults to 8192, and should always be
* larger than the maximum batch size.
*/
private Integer maxQueueSize = 8192;
/**
* Maximum size of the queue in bytes for change events read from the
* database log but not yet recorded or forwarded. Defaults to 0. Mean the
* feature is not enabled
*/
private Long maxQueueSizeInBytes = 0L;
/**
* A semicolon-separated list of expressions that match fully-qualified
* tables and column(s) to be used as message key. Each expression must
* match the pattern ':', where the table names could be defined as
* (DB_NAME.TABLE_NAME) or (SCHEMA_NAME.TABLE_NAME), depending on the
* specific connector, and the key columns are a comma-separated list of
* columns representing the custom key. For any table without an explicit
* key configuration the table's primary key column(s) will be used as
* message key. Example:
* dbserver1.inventory.orderlines:orderId,orderLineId;dbserver1.inventory.orders:id
*/
private String messageKeyColumns;
/**
* The number of rows a table must contain to stream results rather than
* pull all into memory during snapshots. Defaults to 1,000. Use 0 to stream
* all results and completely avoid checking the size of each table.
*/
private Integer minRowCountToStreamResults = 1000;
/**
* List of notification channels names that are enabled.
*/
private String notificationEnabledChannels;
/**
* The name of the topic for the notifications. This is required in case
* 'sink' is in the list of enabled channels
*/
private String notificationSinkTopicName;
/**
* Time to wait for new change events to appear after receiving no events,
* given in milliseconds. Defaults to 500 ms. The option is a long type.
*/
private Long pollIntervalMs = 500L;
/**
* Optional list of post processors. The processors are defined using
* '.type' config option and configured using options ''
*/
private String postProcessors;
/**
* Enables transaction metadata extraction together with event counting
*/
private Boolean provideTransactionMetadata = false;
/**
* The maximum number of records that should be loaded into memory while
* streaming. A value of '0' uses the default JDBC fetch size.
*/
private Integer queryFetchSize = 0;
/**
* Time to wait before restarting connector after retriable exception
* occurs. Defaults to 10000ms. The option is a long type.
*/
private Long retriableRestartConnectorWaitMs = 10000L;
/**
* The name of the SchemaHistory class that should be used to store and
* recover database schema changes. The configuration properties for the
* history are prefixed with the 'schema.history.internal.' string.
*/
private String schemaHistoryInternal = "io.debezium.storage.kafka.history.KafkaSchemaHistory";
/**
* The path to the file that will be used to record the database schema
* history
*/
private String schemaHistoryInternalFileFilename;
/**
* Controls the action Debezium will take when it meets a DDL statement in
* binlog, that it cannot parse.By default the connector will stop operating
* but by changing the setting it can ignore the statements which it cannot
* parse. If skipping is enabled then Debezium can miss metadata changes.
*/
private Boolean schemaHistoryInternalSkipUnparseableDdl = false;
/**
* Controls what DDL will Debezium store in database schema history. By
* default (true) only DDL that manipulates a table from captured
* schema/database will be stored. If set to false, then Debezium will store
* all incoming DDL statements.
*/
private Boolean schemaHistoryInternalStoreOnlyCapturedDatabasesDdl = true;
/**
* Controls what DDL will Debezium store in database schema history. By
* default (false) Debezium will store all incoming DDL statements. If set
* to true, then only DDL that manipulates a captured table will be stored.
*/
private Boolean schemaHistoryInternalStoreOnlyCapturedTablesDdl = false;
/**
* Specify how schema names should be adjusted for compatibility with the
* message converter used by the connector, including: 'avro' replaces the
* characters that cannot be used in the Avro type name with underscore;
* 'avro_unicode' replaces the underscore or characters that cannot be used
* in the Avro type name with corresponding unicode like _uxxxx. Note: _ is
* an escape sequence like backslash in Java;'none' does not apply any
* adjustment (default)
*/
private String schemaNameAdjustmentMode = "none";
/**
* The name of the data collection that is used to send signals/commands to
* Debezium. Signaling is disabled when not set.
*/
private String signalDataCollection;
/**
* List of channels names that are enabled. Source channel is enabled by
* default
*/
private String signalEnabledChannels = "source";
/**
* Interval for looking for new signals in registered channels, given in
* milliseconds. Defaults to 5 seconds. The option is a long type.
*/
private Long signalPollIntervalMs = 5000L;
/**
* The comma-separated list of operations to skip during streaming, defined
* as: 'c' for inserts/create; 'u' for updates; 'd' for deletes, 't' for
* truncates, and 'none' to indicate nothing skipped. By default, only
* truncate operations will be skipped.
*/
private String skippedOperations = "t";
/**
* A delay period before a snapshot will begin, given in milliseconds.
* Defaults to 0 ms. The option is a long type.
*/
private Long snapshotDelayMs = 0L;
/**
* The maximum number of records that should be loaded into memory while
* performing a snapshot.
*/
private Integer snapshotFetchSize;
/**
* This setting must be set to specify a list of tables/collections whose
* snapshot must be taken on creating or restarting the connector.
*/
private String snapshotIncludeCollectionList;
/**
* Controls how long the connector holds onto the global read lock while it
* is performing a snapshot. The default is 'minimal', which means the
* connector holds the global read lock (and thus prevents any updates) for
* just the initial portion of the snapshot while the database schemas and
* other metadata are being read. The remaining work in a snapshot involves
* selecting all rows from each table, and this can be done using the
* snapshot process' REPEATABLE READ transaction even when the lock is no
* longer held and other operations are updating the database. However, in
* some cases it may be desirable to block all writes for the entire
* duration of the snapshot; in such cases set this property to 'extended'.
* Using a value of 'none' will prevent the connector from acquiring any
* table locks during the snapshot process. This mode can only be used in
* combination with snapshot.mode values of 'schema_only' or
* 'schema_only_recovery' and is only safe to use if no schema changes are
* happening while the snapshot is taken.
*/
private String snapshotLockingMode = "minimal";
/**
* The maximum number of millis to wait for table locks at the beginning of
* a snapshot. If locks cannot be acquired in this time frame, the snapshot
* will be aborted. Defaults to 10 seconds. The option is a long type.
*/
private Long snapshotLockTimeoutMs = 10000L;
/**
* The maximum number of threads used to perform the snapshot. Defaults to
* 1.
*/
private Integer snapshotMaxThreads = 1;
/**
* The criteria for running a snapshot upon startup of the connector. Select
* one of the following snapshot options: 'when_needed': On startup, the
* connector runs a snapshot if one is needed.; 'schema_only': If the
* connector does not detect any offsets for the logical server name, it
* runs a snapshot that captures only the schema (table structures), but not
* any table data. After the snapshot completes, the connector begins to
* stream changes from the binlog.; 'schema_only_recovery': The connector
* performs a snapshot that captures only the database schema history. The
* connector then transitions back to streaming. Use this setting to restore
* a corrupted or lost database schema history topic. Do not use if the
* database schema was modified after the connector stopped.; 'initial'
* (default): If the connector does not detect any offsets for the logical
* server name, it runs a snapshot that captures the current full state of
* the configured tables. After the snapshot completes, the connector begins
* to stream changes from the binlog.; 'initial_only': The connector
* performs a snapshot as it does for the 'initial' option, but after the
* connector completes the snapshot, it stops, and does not stream changes
* from the binlog.; 'never': The connector does not run a snapshot. Upon
* first startup, the connector immediately begins reading from the
* beginning of the binlog. The 'never' mode should be used with care, and
* only when the binlog is known to contain all history.
*/
private String snapshotMode = "initial";
/**
* BETA FEATURE: On connector restart, the connector will check if there
* have been any new tables added to the configuration, and snapshot them.
* There is presently only two options: 'off': Default behavior. Do not
* snapshot new tables. 'parallel': The snapshot of the new tables will
* occur in parallel to the continued binlog reading of the old tables. When
* the snapshot completes, an independent binlog reader will begin reading
* the events for the new tables until it catches up to present time. At
* this point, both old and new binlog readers will be momentarily halted
* and new binlog reader will start that will read the binlog for all
* configured tables. The parallel binlog reader will have a configured
* server id of 10000 the primary binlog reader's server id.
*/
private String snapshotNewTables = "off";
/**
* This property contains a comma-separated list of fully-qualified tables
* (DB_NAME.TABLE_NAME) or (SCHEMA_NAME.TABLE_NAME), depending on the
* specific connectors. Select statements for the individual tables are
* specified in further configuration properties, one for each table,
* identified by the id
* 'snapshot.select.statement.overrides.DB_NAME.TABLE_NAME' or
* 'snapshot.select.statement.overrides.SCHEMA_NAME.TABLE_NAME',
* respectively. The value of those properties is the select statement to
* use when retrieving data from the specific table during snapshotting. A
* possible use case for large append-only tables is setting a specific
* point where to start (resume) snapshotting, in case a previous
* snapshotting was interrupted.
*/
private String snapshotSelectStatementOverrides;
/**
* Controls the order in which tables are processed in the initial snapshot.
* A descending value will order the tables by row count descending. A
* ascending value will order the tables by row count ascending. A value of
* disabled (the default) will disable ordering by row count.
*/
private String snapshotTablesOrderByRowCount = "disabled";
/**
* The name of the SourceInfoStructMaker class that returns SourceInfo
* schema and struct.
*/
private String sourceinfoStructMaker = "io.debezium.connector.mysql.MySqlSourceInfoStructMaker";
/**
* A comma-separated list of regular expressions that match the
* fully-qualified names of tables to be excluded from monitoring
*/
private String tableExcludeList;
/**
* Flag specifying whether built-in tables should be ignored.
*/
private Boolean tableIgnoreBuiltin = true;
/**
* The tables for which changes are to be captured
*/
private String tableIncludeList;
/**
* Time, date and timestamps can be represented with different kinds of
* precisions, including: 'adaptive_time_microseconds': the precision of
* date and timestamp values is based the database column's precision; but
* time fields always use microseconds precision; 'connect': always
* represents time, date and timestamp values using Kafka Connect's built-in
* representations for Time, Date, and Timestamp, which uses millisecond
* precision regardless of the database columns' precision.
*/
private String timePrecisionMode = "adaptive_time_microseconds";
/**
* Whether delete operations should be represented by a delete event and a
* subsequent tombstone event (true) or only by a delete event (false).
* Emitting the tombstone event (the default behavior) allows Kafka to
* completely delete all events pertaining to the given key once the source
* record got deleted.
*/
private Boolean tombstonesOnDelete = false;
/**
* The name of the TopicNamingStrategy class that should be used to
* determine the topic name for data change, schema change, transaction,
* heartbeat event etc.
*/
private String topicNamingStrategy = "io.debezium.schema.SchemaTopicNamingStrategy";
/**
* Topic prefix that identifies and provides a namespace for the particular
* database server/cluster is capturing changes. The topic prefix should be
* unique across all other connectors, since it is used as a prefix for all
* Kafka topic names that receive events emitted by this connector. Only
* alphanumeric characters, hyphens, dots and underscores must be accepted.
*/
private String topicPrefix;
public Map<String, Object> getAdditionalProperties() {
return additionalProperties;
}
public void setAdditionalProperties(Map<String, Object> additionalProperties) {
this.additionalProperties = additionalProperties;
}
public Boolean getBridgeErrorHandler() {
return bridgeErrorHandler;
}
public void setBridgeErrorHandler(Boolean bridgeErrorHandler) {
this.bridgeErrorHandler = bridgeErrorHandler;
}
public MySqlConnectorEmbeddedDebeziumConfiguration getConfiguration() {
return configuration;
}
public void setConfiguration(
MySqlConnectorEmbeddedDebeziumConfiguration configuration) {
this.configuration = configuration;
}
public String getInternalKeyConverter() {
return internalKeyConverter;
}
public void setInternalKeyConverter(String internalKeyConverter) {
this.internalKeyConverter = internalKeyConverter;
}
public String getInternalValueConverter() {
return internalValueConverter;
}
public void setInternalValueConverter(String internalValueConverter) {
this.internalValueConverter = internalValueConverter;
}
public String getOffsetCommitPolicy() {
return offsetCommitPolicy;
}
public void setOffsetCommitPolicy(String offsetCommitPolicy) {
this.offsetCommitPolicy = offsetCommitPolicy;
}
public Long getOffsetCommitTimeoutMs() {
return offsetCommitTimeoutMs;
}
public void setOffsetCommitTimeoutMs(Long offsetCommitTimeoutMs) {
this.offsetCommitTimeoutMs = offsetCommitTimeoutMs;
}
public Long getOffsetFlushIntervalMs() {
return offsetFlushIntervalMs;
}
public void setOffsetFlushIntervalMs(Long offsetFlushIntervalMs) {
this.offsetFlushIntervalMs = offsetFlushIntervalMs;
}
public String getOffsetStorage() {
return offsetStorage;
}
public void setOffsetStorage(String offsetStorage) {
this.offsetStorage = offsetStorage;
}
public String getOffsetStorageFileName() {
return offsetStorageFileName;
}
public void setOffsetStorageFileName(String offsetStorageFileName) {
this.offsetStorageFileName = offsetStorageFileName;
}
public Integer getOffsetStoragePartitions() {
return offsetStoragePartitions;
}
public void setOffsetStoragePartitions(Integer offsetStoragePartitions) {
this.offsetStoragePartitions = offsetStoragePartitions;
}
public Integer getOffsetStorageReplicationFactor() {
return offsetStorageReplicationFactor;
}
public void setOffsetStorageReplicationFactor(
Integer offsetStorageReplicationFactor) {
this.offsetStorageReplicationFactor = offsetStorageReplicationFactor;
}
public String getOffsetStorageTopic() {
return offsetStorageTopic;
}
public void setOffsetStorageTopic(String offsetStorageTopic) {
this.offsetStorageTopic = offsetStorageTopic;
}
public Boolean getAutowiredEnabled() {
return autowiredEnabled;
}
public void setAutowiredEnabled(Boolean autowiredEnabled) {
this.autowiredEnabled = autowiredEnabled;
}
public String getBigintUnsignedHandlingMode() {
return bigintUnsignedHandlingMode;
}
public void setBigintUnsignedHandlingMode(String bigintUnsignedHandlingMode) {
this.bigintUnsignedHandlingMode = bigintUnsignedHandlingMode;
}
public String getBinaryHandlingMode() {
return binaryHandlingMode;
}
public void setBinaryHandlingMode(String binaryHandlingMode) {
this.binaryHandlingMode = binaryHandlingMode;
}
public Integer getBinlogBufferSize() {
return binlogBufferSize;
}
public void setBinlogBufferSize(Integer binlogBufferSize) {
this.binlogBufferSize = binlogBufferSize;
}
public String getColumnExcludeList() {
return columnExcludeList;
}
public void setColumnExcludeList(String columnExcludeList) {
this.columnExcludeList = columnExcludeList;
}
public String getColumnIncludeList() {
return columnIncludeList;
}
public void setColumnIncludeList(String columnIncludeList) {
this.columnIncludeList = columnIncludeList;
}
public String getColumnPropagateSourceType() {
return columnPropagateSourceType;
}
public void setColumnPropagateSourceType(String columnPropagateSourceType) {
this.columnPropagateSourceType = columnPropagateSourceType;
}
public Boolean getConnectKeepAlive() {
return connectKeepAlive;
}
public void setConnectKeepAlive(Boolean connectKeepAlive) {
this.connectKeepAlive = connectKeepAlive;
}
public Long getConnectKeepAliveIntervalMs() {
return connectKeepAliveIntervalMs;
}
public void setConnectKeepAliveIntervalMs(Long connectKeepAliveIntervalMs) {
this.connectKeepAliveIntervalMs = connectKeepAliveIntervalMs;
}
public String getConnectorAdapter() {
return connectorAdapter;
}
public void setConnectorAdapter(String connectorAdapter) {
this.connectorAdapter = connectorAdapter;
}
public Integer getConnectTimeoutMs() {
return connectTimeoutMs;
}
public void setConnectTimeoutMs(Integer connectTimeoutMs) {
this.connectTimeoutMs = connectTimeoutMs;
}
public String getConverters() {
return converters;
}
public void setConverters(String converters) {
this.converters = converters;
}
public String getCustomMetricTags() {
return customMetricTags;
}
public void setCustomMetricTags(String customMetricTags) {
this.customMetricTags = customMetricTags;
}
public String getDatabaseExcludeList() {
return databaseExcludeList;
}
public void setDatabaseExcludeList(String databaseExcludeList) {
this.databaseExcludeList = databaseExcludeList;
}
public String getDatabaseHostname() {
return databaseHostname;
}
public void setDatabaseHostname(String databaseHostname) {
this.databaseHostname = databaseHostname;
}
public String getDatabaseIncludeList() {
return databaseIncludeList;
}
public void setDatabaseIncludeList(String databaseIncludeList) {
this.databaseIncludeList = databaseIncludeList;
}
public String getDatabaseInitialStatements() {
return databaseInitialStatements;
}
public void setDatabaseInitialStatements(String databaseInitialStatements) {
this.databaseInitialStatements = databaseInitialStatements;
}
public String getDatabaseJdbcDriver() {
return databaseJdbcDriver;
}
public void setDatabaseJdbcDriver(String databaseJdbcDriver) {
this.databaseJdbcDriver = databaseJdbcDriver;
}
public String getDatabasePassword() {
return databasePassword;
}
public void setDatabasePassword(String databasePassword) {
this.databasePassword = databasePassword;
}
public Integer getDatabasePort() {
return databasePort;
}
public void setDatabasePort(Integer databasePort) {
this.databasePort = databasePort;
}
public Long getDatabaseServerId() {
return databaseServerId;
}
public void setDatabaseServerId(Long databaseServerId) {
this.databaseServerId = databaseServerId;
}
public Long getDatabaseServerIdOffset() {
return databaseServerIdOffset;
}
public void setDatabaseServerIdOffset(Long databaseServerIdOffset) {
this.databaseServerIdOffset = databaseServerIdOffset;
}
public String getDatabaseSslKeystore() {
return databaseSslKeystore;
}
public void setDatabaseSslKeystore(String databaseSslKeystore) {
this.databaseSslKeystore = databaseSslKeystore;
}
public String getDatabaseSslKeystorePassword() {
return databaseSslKeystorePassword;
}
public void setDatabaseSslKeystorePassword(
String databaseSslKeystorePassword) {
this.databaseSslKeystorePassword = databaseSslKeystorePassword;
}
public String getDatabaseSslMode() {
return databaseSslMode;
}
public void setDatabaseSslMode(String databaseSslMode) {
this.databaseSslMode = databaseSslMode;
}
public String getDatabaseSslTruststore() {
return databaseSslTruststore;
}
public void setDatabaseSslTruststore(String databaseSslTruststore) {
this.databaseSslTruststore = databaseSslTruststore;
}
public String getDatabaseSslTruststorePassword() {
return databaseSslTruststorePassword;
}
public void setDatabaseSslTruststorePassword(
String databaseSslTruststorePassword) {
this.databaseSslTruststorePassword = databaseSslTruststorePassword;
}
public String getDatabaseUser() {
return databaseUser;
}
public void setDatabaseUser(String databaseUser) {
this.databaseUser = databaseUser;
}
public String getDatatypePropagateSourceType() {
return datatypePropagateSourceType;
}
public void setDatatypePropagateSourceType(
String datatypePropagateSourceType) {
this.datatypePropagateSourceType = datatypePropagateSourceType;
}
public String getDecimalHandlingMode() {
return decimalHandlingMode;
}
public void setDecimalHandlingMode(String decimalHandlingMode) {
this.decimalHandlingMode = decimalHandlingMode;
}
public Boolean getEnableTimeAdjuster() {
return enableTimeAdjuster;
}
public void setEnableTimeAdjuster(Boolean enableTimeAdjuster) {
this.enableTimeAdjuster = enableTimeAdjuster;
}
public Integer getErrorsMaxRetries() {
return errorsMaxRetries;
}
public void setErrorsMaxRetries(Integer errorsMaxRetries) {
this.errorsMaxRetries = errorsMaxRetries;
}
public String getEventDeserializationFailureHandlingMode() {
return eventDeserializationFailureHandlingMode;
}
public void setEventDeserializationFailureHandlingMode(
String eventDeserializationFailureHandlingMode) {
this.eventDeserializationFailureHandlingMode = eventDeserializationFailureHandlingMode;
}
public String getEventProcessingFailureHandlingMode() {
return eventProcessingFailureHandlingMode;
}
public void setEventProcessingFailureHandlingMode(
String eventProcessingFailureHandlingMode) {
this.eventProcessingFailureHandlingMode = eventProcessingFailureHandlingMode;
}
public String getGtidSourceExcludes() {
return gtidSourceExcludes;
}
public void setGtidSourceExcludes(String gtidSourceExcludes) {
this.gtidSourceExcludes = gtidSourceExcludes;
}
public Boolean getGtidSourceFilterDmlEvents() {
return gtidSourceFilterDmlEvents;
}
public void setGtidSourceFilterDmlEvents(Boolean gtidSourceFilterDmlEvents) {
this.gtidSourceFilterDmlEvents = gtidSourceFilterDmlEvents;
}
public String getGtidSourceIncludes() {
return gtidSourceIncludes;
}
public void setGtidSourceIncludes(String gtidSourceIncludes) {
this.gtidSourceIncludes = gtidSourceIncludes;
}
public String getHeartbeatActionQuery() {
return heartbeatActionQuery;
}
public void setHeartbeatActionQuery(String heartbeatActionQuery) {
this.heartbeatActionQuery = heartbeatActionQuery;
}
public Integer getHeartbeatIntervalMs() {
return heartbeatIntervalMs;
}
public void setHeartbeatIntervalMs(Integer heartbeatIntervalMs) {
this.heartbeatIntervalMs = heartbeatIntervalMs;
}
public String getHeartbeatTopicsPrefix() {
return heartbeatTopicsPrefix;
}
public void setHeartbeatTopicsPrefix(String heartbeatTopicsPrefix) {
this.heartbeatTopicsPrefix = heartbeatTopicsPrefix;
}
public Boolean getIncludeQuery() {
return includeQuery;
}
public void setIncludeQuery(Boolean includeQuery) {
this.includeQuery = includeQuery;
}
public Boolean getIncludeSchemaChanges() {
return includeSchemaChanges;
}
public void setIncludeSchemaChanges(Boolean includeSchemaChanges) {
this.includeSchemaChanges = includeSchemaChanges;
}
public Boolean getIncludeSchemaComments() {
return includeSchemaComments;
}
public void setIncludeSchemaComments(Boolean includeSchemaComments) {
this.includeSchemaComments = includeSchemaComments;
}
public String getInconsistentSchemaHandlingMode() {
return inconsistentSchemaHandlingMode;
}
public void setInconsistentSchemaHandlingMode(
String inconsistentSchemaHandlingMode) {
this.inconsistentSchemaHandlingMode = inconsistentSchemaHandlingMode;
}
public Boolean getIncrementalSnapshotAllowSchemaChanges() {
return incrementalSnapshotAllowSchemaChanges;
}
public void setIncrementalSnapshotAllowSchemaChanges(
Boolean incrementalSnapshotAllowSchemaChanges) {
this.incrementalSnapshotAllowSchemaChanges = incrementalSnapshotAllowSchemaChanges;
}
public Integer getIncrementalSnapshotChunkSize() {
return incrementalSnapshotChunkSize;
}
public void setIncrementalSnapshotChunkSize(
Integer incrementalSnapshotChunkSize) {
this.incrementalSnapshotChunkSize = incrementalSnapshotChunkSize;
}
public String getIncrementalSnapshotWatermarkingStrategy() {
return incrementalSnapshotWatermarkingStrategy;
}
public void setIncrementalSnapshotWatermarkingStrategy(
String incrementalSnapshotWatermarkingStrategy) {
this.incrementalSnapshotWatermarkingStrategy = incrementalSnapshotWatermarkingStrategy;
}
public Integer getMaxBatchSize() {
return maxBatchSize;
}
public void setMaxBatchSize(Integer maxBatchSize) {
this.maxBatchSize = maxBatchSize;
}
public Integer getMaxQueueSize() {
return maxQueueSize;
}
public void setMaxQueueSize(Integer maxQueueSize) {
this.maxQueueSize = maxQueueSize;
}
public Long getMaxQueueSizeInBytes() {
return maxQueueSizeInBytes;
}
public void setMaxQueueSizeInBytes(Long maxQueueSizeInBytes) {
this.maxQueueSizeInBytes = maxQueueSizeInBytes;
}
public String getMessageKeyColumns() {
return messageKeyColumns;
}
public void setMessageKeyColumns(String messageKeyColumns) {
this.messageKeyColumns = messageKeyColumns;
}
public Integer getMinRowCountToStreamResults() {
return minRowCountToStreamResults;
}
public void setMinRowCountToStreamResults(Integer minRowCountToStreamResults) {
this.minRowCountToStreamResults = minRowCountToStreamResults;
}
public String getNotificationEnabledChannels() {
return notificationEnabledChannels;
}
public void setNotificationEnabledChannels(
String notificationEnabledChannels) {
this.notificationEnabledChannels = notificationEnabledChannels;
}
public String getNotificationSinkTopicName() {
return notificationSinkTopicName;
}
public void setNotificationSinkTopicName(String notificationSinkTopicName) {
this.notificationSinkTopicName = notificationSinkTopicName;
}
public Long getPollIntervalMs() {
return pollIntervalMs;
}
public void setPollIntervalMs(Long pollIntervalMs) {
this.pollIntervalMs = pollIntervalMs;
}
public String getPostProcessors() {
return postProcessors;
}
public void setPostProcessors(String postProcessors) {
this.postProcessors = postProcessors;
}
public Boolean getProvideTransactionMetadata() {
return provideTransactionMetadata;
}
public void setProvideTransactionMetadata(Boolean provideTransactionMetadata) {
this.provideTransactionMetadata = provideTransactionMetadata;
}
public Integer getQueryFetchSize() {
return queryFetchSize;
}
public void setQueryFetchSize(Integer queryFetchSize) {
this.queryFetchSize = queryFetchSize;
}
public Long getRetriableRestartConnectorWaitMs() {
return retriableRestartConnectorWaitMs;
}
public void setRetriableRestartConnectorWaitMs(
Long retriableRestartConnectorWaitMs) {
this.retriableRestartConnectorWaitMs = retriableRestartConnectorWaitMs;
}
public String getSchemaHistoryInternal() {
return schemaHistoryInternal;
}
public void setSchemaHistoryInternal(String schemaHistoryInternal) {
this.schemaHistoryInternal = schemaHistoryInternal;
}
public String getSchemaHistoryInternalFileFilename() {
return schemaHistoryInternalFileFilename;
}
public void setSchemaHistoryInternalFileFilename(
String schemaHistoryInternalFileFilename) {
this.schemaHistoryInternalFileFilename = schemaHistoryInternalFileFilename;
}
public Boolean getSchemaHistoryInternalSkipUnparseableDdl() {
return schemaHistoryInternalSkipUnparseableDdl;
}
public void setSchemaHistoryInternalSkipUnparseableDdl(
Boolean schemaHistoryInternalSkipUnparseableDdl) {
this.schemaHistoryInternalSkipUnparseableDdl = schemaHistoryInternalSkipUnparseableDdl;
}
public Boolean getSchemaHistoryInternalStoreOnlyCapturedDatabasesDdl() {
return schemaHistoryInternalStoreOnlyCapturedDatabasesDdl;
}
public void setSchemaHistoryInternalStoreOnlyCapturedDatabasesDdl(
Boolean schemaHistoryInternalStoreOnlyCapturedDatabasesDdl) {
this.schemaHistoryInternalStoreOnlyCapturedDatabasesDdl = schemaHistoryInternalStoreOnlyCapturedDatabasesDdl;
}
public Boolean getSchemaHistoryInternalStoreOnlyCapturedTablesDdl() {
return schemaHistoryInternalStoreOnlyCapturedTablesDdl;
}
public void setSchemaHistoryInternalStoreOnlyCapturedTablesDdl(
Boolean schemaHistoryInternalStoreOnlyCapturedTablesDdl) {
this.schemaHistoryInternalStoreOnlyCapturedTablesDdl = schemaHistoryInternalStoreOnlyCapturedTablesDdl;
}
public String getSchemaNameAdjustmentMode() {
return schemaNameAdjustmentMode;
}
public void setSchemaNameAdjustmentMode(String schemaNameAdjustmentMode) {
this.schemaNameAdjustmentMode = schemaNameAdjustmentMode;
}
public String getSignalDataCollection() {
return signalDataCollection;
}
public void setSignalDataCollection(String signalDataCollection) {
this.signalDataCollection = signalDataCollection;
}
public String getSignalEnabledChannels() {
return signalEnabledChannels;
}
public void setSignalEnabledChannels(String signalEnabledChannels) {
this.signalEnabledChannels = signalEnabledChannels;
}
public Long getSignalPollIntervalMs() {
return signalPollIntervalMs;
}
public void setSignalPollIntervalMs(Long signalPollIntervalMs) {
this.signalPollIntervalMs = signalPollIntervalMs;
}
public String getSkippedOperations() {
return skippedOperations;
}
public void setSkippedOperations(String skippedOperations) {
this.skippedOperations = skippedOperations;
}
public Long getSnapshotDelayMs() {
return snapshotDelayMs;
}
public void setSnapshotDelayMs(Long snapshotDelayMs) {
this.snapshotDelayMs = snapshotDelayMs;
}
public Integer getSnapshotFetchSize() {
return snapshotFetchSize;
}
public void setSnapshotFetchSize(Integer snapshotFetchSize) {
this.snapshotFetchSize = snapshotFetchSize;
}
public String getSnapshotIncludeCollectionList() {
return snapshotIncludeCollectionList;
}
public void setSnapshotIncludeCollectionList(
String snapshotIncludeCollectionList) {
this.snapshotIncludeCollectionList = snapshotIncludeCollectionList;
}
public String getSnapshotLockingMode() {
return snapshotLockingMode;
}
public void setSnapshotLockingMode(String snapshotLockingMode) {
this.snapshotLockingMode = snapshotLockingMode;
}
public Long getSnapshotLockTimeoutMs() {
return snapshotLockTimeoutMs;
}
public void setSnapshotLockTimeoutMs(Long snapshotLockTimeoutMs) {
this.snapshotLockTimeoutMs = snapshotLockTimeoutMs;
}
public Integer getSnapshotMaxThreads() {
return snapshotMaxThreads;
}
public void setSnapshotMaxThreads(Integer snapshotMaxThreads) {
this.snapshotMaxThreads = snapshotMaxThreads;
}
public String getSnapshotMode() {
return snapshotMode;
}
public void setSnapshotMode(String snapshotMode) {
this.snapshotMode = snapshotMode;
}
public String getSnapshotNewTables() {
return snapshotNewTables;
}
public void setSnapshotNewTables(String snapshotNewTables) {
this.snapshotNewTables = snapshotNewTables;
}
public String getSnapshotSelectStatementOverrides() {
return snapshotSelectStatementOverrides;
}
public void setSnapshotSelectStatementOverrides(
String snapshotSelectStatementOverrides) {
this.snapshotSelectStatementOverrides = snapshotSelectStatementOverrides;
}
public String getSnapshotTablesOrderByRowCount() {
return snapshotTablesOrderByRowCount;
}
public void setSnapshotTablesOrderByRowCount(
String snapshotTablesOrderByRowCount) {
this.snapshotTablesOrderByRowCount = snapshotTablesOrderByRowCount;
}
public String getSourceinfoStructMaker() {
return sourceinfoStructMaker;
}
public void setSourceinfoStructMaker(String sourceinfoStructMaker) {
this.sourceinfoStructMaker = sourceinfoStructMaker;
}
public String getTableExcludeList() {
return tableExcludeList;
}
public void setTableExcludeList(String tableExcludeList) {
this.tableExcludeList = tableExcludeList;
}
public Boolean getTableIgnoreBuiltin() {
return tableIgnoreBuiltin;
}
public void setTableIgnoreBuiltin(Boolean tableIgnoreBuiltin) {
this.tableIgnoreBuiltin = tableIgnoreBuiltin;
}
public String getTableIncludeList() {
return tableIncludeList;
}
public void setTableIncludeList(String tableIncludeList) {
this.tableIncludeList = tableIncludeList;
}
public String getTimePrecisionMode() {
return timePrecisionMode;
}
public void setTimePrecisionMode(String timePrecisionMode) {
this.timePrecisionMode = timePrecisionMode;
}
public Boolean getTombstonesOnDelete() {
return tombstonesOnDelete;
}
public void setTombstonesOnDelete(Boolean tombstonesOnDelete) {
this.tombstonesOnDelete = tombstonesOnDelete;
}
public String getTopicNamingStrategy() {
return topicNamingStrategy;
}
public void setTopicNamingStrategy(String topicNamingStrategy) {
this.topicNamingStrategy = topicNamingStrategy;
}
public String getTopicPrefix() {
return topicPrefix;
}
public void setTopicPrefix(String topicPrefix) {
this.topicPrefix = topicPrefix;
}
}