Reference
Configuration options are set either via command line or the "config.properties" file.
general
option | argument | description | default |
---|---|---|---|
config | STRING | location of config.properties file |
$PWD/config.properties |
log_level | LOG_LEVEL | log level | info |
daemon | running maxwell as a daemon | ||
env_config_prefix | STRING | env vars matching prefix are treated as config values |
mysql
option | argument | description | default |
---|---|---|---|
host | STRING | mysql host | localhost |
user | STRING | mysql username | |
password | STRING | mysql password | (no password) |
port | INT | mysql port | 3306 |
jdbc_options | STRING | mysql jdbc connection options | DEFAULT_JDBC_OPTS |
ssl | SSL_OPT | SSL behavior for mysql cx | DISABLED |
schema_database | STRING | database to store schema and position in | maxwell |
client_id | STRING | unique text identifier for maxwell instance | maxwell |
replica_server_id | LONG | unique numeric identifier for this maxwell instance | 6379 (see notes) |
master_recovery | BOOLEAN | enable experimental master recovery code | false |
gtid_mode | BOOLEAN | enable GTID-based replication | false |
recapture_schema | BOOLEAN | recapture the latest schema. Not available in config.properties. | false |
max_schemas | LONG | how many schema deltas to keep before triggering compaction operation | unlimited |
binlog_heartbeat | BOOLEAN | enable binlog heartbeats to detect stale connections | DISABLED |
replication_host | STRING | server to replicate from. See split server roles | schema-store host |
replication_password | STRING | password on replication server | (none) |
replication_port | INT | port on replication server | 3306 |
replication_user | STRING | user on replication server | |
replication_ssl | SSL_OPT | SSL behavior for replication cx cx | DISABLED |
replication_jdbc_options | STRING | mysql jdbc connection options for replication server | DEFAULT_JDBC_OPTS |
schema_host | STRING | server to capture schema from. See split server roles | schema-store host |
schema_password | STRING | password on schema-capture server | (none) |
schema_port | INT | port on schema-capture server | 3306 |
schema_user | STRING | user on schema-capture server | |
schema_ssl | SSL_OPT | SSL behavior for schema-capture server | DISABLED |
schema_jdbc_options | STRING | mysql jdbc connection options for schema server | DEFAULT_JDBC_OPTS |
producer options
option | argument | description | default |
---|---|---|---|
producer | PRODUCER_TYPE | type of producer to use | stdout |
custom_producer.factory | CLASS_NAME | fully qualified custom producer factory class, see example | |
producer_ack_timeout | PRODUCER_ACK_TIMEOUT | time in milliseconds before async producers consider a message lost | |
producer_partition_by | PARTITION_BY | input to kafka/kinesis partition function | database |
producer_partition_columns | STRING | if partitioning by 'column', a comma separated list of columns | |
producer_partition_by_fallback | PARTITION_BY_FALLBACK | required when producer_partition_by=column. Used when the column is missing | |
ignore_producer_error | BOOLEAN | When false, Maxwell will terminate on kafka/kinesis/pubsub publish errors (aside from RecordTooLargeException). When true, errors are only logged. See also dead_letter_topic | true |
file producer
option | argument | description | default |
---|---|---|---|
output_file | STRING | output file for file producer |
|
javascript | STRING | file containing javascript filters |
kafka producer
option | argument | description | default |
---|---|---|---|
kafka.bootstrap.servers | STRING | kafka brokers, given as HOST:PORT[,HOST:PORT] |
|
kafka_topic | STRING | kafka topic to write to. | maxwell |
dead_letter_topic | STRING | the topic to write a "skeleton row" (a row where data includes only primary key columns) when there's an error publishing a row. When ignore_producer_error is false , only RecordTooLargeException causes a fallback record to be published, since other errors cause termination. Currently only supported in Kafka publisher |
|
kafka_version | KAFKA_VERSION | run maxwell with specified kafka producer version. Not available in config.properties. | 0.11.0.1 |
kafka_partition_hash | [ default | murmur3 ] | hash function to use when choosing kafka partition | default |
kafka_key_format | [ array | hash ] | how maxwell outputs kafka keys, either a hash or an array of hashes | hash |
ddl_kafka_topic | STRING | if output_ddl is true, kafka topic to write DDL changes to | kafka_topic |
See also: Kafka Producer Documentation
kinesis producer
option | argument | description | default |
---|---|---|---|
kinesis_stream | STRING | kinesis stream name |
See also: Kinesis Producer Documentation
sqs producer
option | argument | description | default |
---|---|---|---|
sqs_queue_uri | STRING | SQS Queue URI |
See also: SQS Producer Documentation
sns producer
option | argument | description | default |
---|---|---|---|
sns_topic | STRING | The SNS topic to publish to. FIFO topics should end with .fifo |
|
sns_attrs | STRING | Properties to set as attributes on the SNS message |
See also: SNS Producer Documentation
nats producer
option | argument | description | default |
---|---|---|---|
nats_url | STRING | Comma separated list of nats urls. may include user:password style auth | nats://localhost:4222 |
nats_subject | STRING | Nats subject hierarchy. Topic substitution available. | %{database}.%{table} |
See also: Nats Producer Documentation
pubsub producer
option | argument | description | default |
---|---|---|---|
pubsub_topic | STRING | Google Cloud pub-sub topic | |
pubsub_platform_id | STRING | Google Cloud platform id associated with topic | |
ddl_pubsub_topic | STRING | Google Cloud pub-sub topic to send DDL events to | |
pubsub_request_bytes_threshold | LONG | Set number of bytes until batch is send | 1 |
pubsub_message_count_batch_size | LONG | Set number of messages until batch is send | 1 |
pubsub_message_ordering_key | STRING | Google Cloud pub-sub ordering key template (also enables message ordering when set) | |
pubsub_publish_delay_threshold | LONG | Set time passed in millis until batch is send | 1 |
pubsub_retry_delay | LONG | Controls the delay in millis before sending the first retry message | 100 |
pubsub_retry_delay_multiplier | FLOAT | Controls the increase in retry delay per retry | 1.3 |
pubsub_max_retry_delay | LONG | Puts a limit on the value in seconds of the retry delay | 60 |
pubsub_initial_rpc_timeout | LONG | Controls the timeout in seconds for the initial RPC | 5 |
pubsub_rpc_timeout_multiplier | FLOAT | Controls the change in RPC timeout | 1.0 |
pubsub_max_rpc_timeout | LONG | Puts a limit on the value in seconds of the RPC timeout | 600 |
pubsub_total_timeout | LONG | Puts a limit on the value in seconds of the retry delay, so that the RetryDelayMultiplier can't increase the retry delay higher than this amount | 600 |
pubsub_emulator | STRING | Google Cloud pub-sub emulator host to send events to |
See also: PubSub Producer Documentation
bigquery producer
option | argument | description | default |
---|---|---|---|
bigquery_project_id | STRING | Google Cloud bigquery project id | |
bigquery_dataset | STRING | Google Cloud bigquery dataset id | |
bigquery_table | STRING | Google Cloud bigquery table id |
See also: PubSub Producer Documentation
rabbitmq producer
option | argument | description | default |
---|---|---|---|
rabbitmq_user | STRING | Username of Rabbitmq connection | guest |
rabbitmq_pass | STRING | Password of Rabbitmq connection | guest |
rabbitmq_host | STRING | Host of Rabbitmq machine | |
rabbitmq_port | INT | Port of Rabbitmq machine | |
rabbitmq_virtual_host | STRING | Virtual Host of Rabbitmq | |
rabbitmq_handshake_timeout | STRING | Handshake timeout of Rabbitmq connection in milliseconds | |
rabbitmq_exchange | STRING | Name of exchange for rabbitmq publisher | |
rabbitmq_exchange_type | STRING | Exchange type for rabbitmq | |
rabbitmq_exchange_durable | BOOLEAN | Exchange durability. | false |
rabbitmq_exchange_autodelete | BOOLEAN | If set, the exchange is deleted when all queues have finished using it. | false |
rabbitmq_routing_key_template | STRING | A string template for the routing key, %db% and %table% will be substituted. |
%db%.%table% . |
rabbitmq_message_persistent | BOOLEAN | Eanble message persistence. | false |
rabbitmq_declare_exchange | BOOLEAN | Should declare the exchange for rabbitmq publisher | true |
See also: RabbitMQ Producer Documentation
redis producer
option | argument | description | default |
---|---|---|---|
redis_host | STRING | Host of Redis server | localhost |
redis_port | INT | Port of Redis server | 6379 |
redis_auth | STRING | Authentication key for a password-protected Redis server | |
redis_database | INT | Database of Redis server | 0 |
redis_type | [ pubsub | xadd | lpush | rpush ] | Selects either Redis Pub/Sub, Stream, or List. | pubsub |
redis_key | STRING | Redis channel/key for Pub/Sub, XADD or LPUSH/RPUSH | maxwell |
redis_stream_json_key | STRING | Redis XADD Stream Message Field Name | message |
redis_sentinels | STRING | Redis sentinels list in format host1:port1,host2:port2,host3:port3... Must be only used with redis_sentinel_master_name | |
redis_sentinel_master_name | STRING | Redis sentinel master name. Must be only used with redis_sentinels |
See also: Redis Producer Documentation
formatting
option | argument | description | default |
---|---|---|---|
output_binlog_position | BOOLEAN | records include binlog position | false |
output_gtid_position | BOOLEAN | records include gtid position, if available | false |
output_commit_info | BOOLEAN | records include commit and xid | true |
output_xoffset | BOOLEAN | records include virtual tx-row offset | false |
output_push_timestamp | BOOLEAN | records are timestamped with a high-precision value before being sent to the producer | false |
output_nulls | BOOLEAN | records include fields with NULL values | true |
output_server_id | BOOLEAN | records include server_id | false |
output_thread_id | BOOLEAN | records include thread_id | false |
output_schema_id | BOOLEAN | records include schema_id, schema_id is the id of the latest schema tracked by maxwell and doesn't relate to any mysql tracked value | false |
output_row_query | BOOLEAN | records include INSERT/UPDATE/DELETE statement. Mysql option "binlog_rows_query_log_events" must be enabled | false |
row_query_max_length | INT | The maximum number of characters output in the "query" field. The rest will be truncated. | |
output_primary_keys | BOOLEAN | DML records include list of values that make up a row's primary key | false |
output_primary_key_columns | BOOLEAN | DML records include list of columns that make up a row's primary key | false |
output_ddl | BOOLEAN | output DDL (table-alter, table-create, etc) events | false |
output_null_zerodates | BOOLEAN | should we transform '0000-00-00' to null? | false |
output_naming_strategy | STRING | naming strategy of field name of JSON. can be underscore_to_camelcase |
none |
filtering
option | argument | description | default |
---|---|---|---|
filter | STRING | filter rules, eg exclude: db.*, include: *.tbl, include: *./bar(bar)?/, exclude: foo.bar.col=val |
See also: filtering
encryption
option | argument | description | default |
---|---|---|---|
encrypt | [ none | data | all ] | encrypt mode: none = no encryption. "data": encrypt the data field only. all : encrypt entire maxwell message |
none |
secret_key | string | specify the encryption key to be used | null |
high availability
option | argument | description | default |
---|---|---|---|
ha | enable maxwell client HA | ||
jgroups_config | string | location of xml configuration file for jGroups | $PWD/raft.xml |
raft_member_id | string | uniquely identify this node within jgroups-raft cluster |
See also: High Availability
monitoring / metrics
option | argument | description | default |
---|---|---|---|
metrics_prefix | STRING | the prefix maxwell will apply to all metrics | MaxwellMetrics |
metrics_type | [slf4j | jmx | http | datadog] | how maxwell metrics will be reported | |
metrics_jvm | BOOLEAN | enable jvm metrics: memory usage, GC stats, etc. | false |
metrics_slf4j_interval | SECONDS | the frequency metrics are emitted to the log, in seconds, when slf4j reporting is configured | 60 |
http_port | INT | the port the server will bind to when http reporting is configured | 8080 |
http_path_prefix | STRING | http path prefix for the server | / |
http_bind_address | STRING | the address the server will bind to when http reporting is configured | all addresses |
http_diagnostic | BOOLEAN | enable http diagnostic endpoint | false |
http_diagnostic_timeout | MILLISECONDS | the http diagnostic response timeout | 10000 |
metrics_datadog_type | [udp | http] | when metrics_type includes datadog this is the way metrics will be reported, can only be one of [udp | http] |
udp |
metrics_datadog_tags | STRING | datadog tags that should be supplied, e.g. tag1:value1,tag2:value2 | |
metrics_age_slo | INT | Latency service level objective threshold in seconds (Optional). When set, a message.publish.age.slo_violation metric is emitted to Datadog if the latency exceeds the threshold |
|
metrics_datadog_interval | INT | the frequency metrics are pushed to datadog, in seconds | 60 |
metrics_datadog_apikey | STRING | the datadog api key to use when metrics_datadog_type = http |
|
metrics_datadog_site | STRING | the site to publish metrics to when metrics_datadog_type = http |
us |
metrics_datadog_host | STRING | the host to publish metrics to when metrics_datadog_type = udp |
localhost |
metrics_datadog_port | INT | the port to publish metrics to when metrics_datadog_type = udp |
8125 |
custom_health.factory | CLASS_NAME | fully qualified maxwell health check factory class, see example |
See also: Monitoring
misc
option | argument | description | default |
---|---|---|---|
bootstrapper | [async | sync | none] | bootstrapper type. See bootstrapping docs. | async |
init_position | FILE:POSITION[:HEARTBEAT] | ignore the information in maxwell.positions and start at the given binlog position. Not available in config.properties. see note | |
replay | BOOLEAN | enable maxwell's read-only "replay" mode: don't store a binlog position or schema changes. Not available in config.properties. | |
buffer_memory_usage | FLOAT | Determines how much memory the Maxwell event buffer will use from the jvm max memory. Size of the buffer is: buffer_memory_usage * -Xmx" | 0.25 |
http_config | BOOLEAN | enable http config endpoint for config updates without restart | false |
binlog_event_queue_size | INT | Size of queue to buffer events parsed from binlog | 5000 |
LOG_LEVEL: [ debug | info | warn | error ]
SSL_OPTION: [ DISABLED | PREFERRED | REQUIRED | VERIFY_CA | VERIFY_IDENTITY ]
PRODUCER_TYPE: [ stdout | file | kafka | kinesis | pubsub | sqs | rabbitmq | redis ]
DEFAULT_JDBC_OPTS: zeroDateTimeBehavior=convertToNull&connectTimeout=5000
PARTITION_BY: [ database | table | primary_key | transaction_id | column | random ]
PARTITION_BY_FALLBACK: [ database | table | primary_key | transaction_id ]
KAFKA_VERSION: [ 0.8.2.2 | 0.9.0.1 | 0.10.0.1 | 0.10.2.1 | 0.11.0.1 ]
PRODUCER_ACK_TIMEOUT: In certain failure modes, async producers (kafka, kinesis, pubsub, sqs) may simply disappear a message, never notifying maxwell of success or failure. This timeout can be set as a heuristic; after this many milliseconds, maxwell will consider an outstanding message lost and fail it.
Configuration methods
Maxwell is configurable via the command-line, a properties file, or the environment. The configuration priority is:
command line options > scoped env vars > properties file > default values
config.properties
Maxwell can be configured via a java properties file, specified via --config
or named "config.properties" in the current working directory.
Any command line options (except init_position
, replay
, kafka_version
and
daemon
) may be specified as "key=value" pairs.
via environment
If env_config_prefix
given via command line or in config.properties
, Maxwell
will configure itself with all environment variables that match the prefix. The
environment variable names are case insensitive. For example, if maxwell is
started with --env_config_prefix=FOO_
and the environment contains FOO_USER=auser
,
this would be equivalent to passing --user=auser
.
via PATCH: /config
If http_config
is set to true in config.properties or in the environment,
the endpoint /config will be exposed. Currently only filter updates are supported,
and a filter can be updated with a request in the following format
PATCH: /config
{
"filter": "exclude: noisy_db.*"
}
A get request will return the live config state
GET: /config
{
"filter": "exclude: noisy_db.*"
}