{
  "id": "mysql",
  "title": "Write-behind configuration for mysql",
  "url": "https://redis.io/docs/latest/integrate/write-behind/reference/debezium/mysql/",
  "summary": "Describes the `application.properties` settings that configure Debezium Server for mysql",
  "tags": [
    "docs",
    "integrate",
    "rs",
    "rdi"
  ],
  "last_updated": "2026-04-01T08:10:08-05:00",
  "page_type": "content",
  "content_hash": "778da3eed7bb59a6c7a89504241053770343d6e6d1506a4d336311b0de1ced68",
  "sections": [
    {
      "id": "application-properties",
      "title": "application.properties",
      "role": "overview",
      "text": "[code example]"
    }
  ],
  "examples": [
    {
      "id": "application-properties-ex0",
      "language": "properties",
      "code": "debezium.sink.type=redis\ndebezium.sink.redis.message.format=extended\ndebezium.sink.redis.address=<RDI_HOST>:<RDI_PORT>\n# Comment the following line if not using a password for Write-behind.\ndebezium.sink.redis.password=<RDI_PASSWORD>\ndebezium.sink.redis.memory.limit.mb=80\n# Redis SSL/TLS\n#debezium.sink.redis.ssl.enabled=true\n# When Redis is configured with a replica shard, these properties allow to verify that the data has been written to the replica.\n#debezium.sink.redis.wait.enabled=true\n#debezium.sink.redis.wait.timeout.ms=1000\n#debezium.sink.redis.wait.retry.enabled=true\n#debezium.sink.redis.wait.retry.delay.ms=1000\n#debezium.source.database.history.redis.ssl.enabled=true\n# Location of the Java keystore file containing an application process' own certificate and private key.\n#javax.net.ssl.keyStore=<KEY_STORE_FILE_PATH>\n# Password to access the private key from the keystore file specified by javax.net.ssl.keyStore. This password is used twice: To unlock the keystore file (store password), and To decrypt the private key stored in the keystore (key password).\n#javax.net.ssl.keyStorePassword=<KEY_STORE_PASSWORD>\n# Location of the Java keystore file containing the collection of CA certificates trusted by this application process (trust store).\n#javax.net.ssl.trustStore=<TRUSE_STORE_FILE_PATH>\n# Password to unlock the keystore file (store password) specified by javax.net.ssl.trustStore.\n#javax.net.ssl.trustStorePassword=<TRUST_STORE_PASSWORD>\n\ndebezium.source.connector.class=io.debezium.connector.mysql.MySqlConnector\n# A numeric ID of this database client, which must be unique across all currently-running database processes in the MySQL cluster.\ndebezium.source.database.server.id=1\ndebezium.source.offset.storage=io.debezium.storage.redis.offset.RedisOffsetBackingStore\ndebezium.source.topic.prefix=<SOURCE_LOGICAL_SERVER_NAME>\n\ndebezium.source.database.hostname=<SOURCE_DB_HOST>\ndebezium.source.database.port=<SOURCE_DB_PORT>\ndebezium.source.database.user=<SOURCE_DB_USER>\ndebezium.source.database.password=<SOURCE_DB_PASSWORD>\ndebezium.source.include.schema.changes=false\n# Determines whether the connector should omit publishing change events when there are no modifications in the included columns.\ndebezium.source.skip.messages.without.change=true\ndebezium.source.offset.flush.interval.ms=1000\ndebezium.source.tombstones.on.delete=false\ndebezium.source.schema.history.internal=io.debezium.storage.redis.history.RedisSchemaHistory\n\n# Important: Do NOT use `include` and `exclude` database lists at the same time, use either `include` or `exclude`.\n# An optional, comma-separated list of regular expressions that match database names to be monitored.\n# By default, all databases are monitored.\n#debezium.source.database.include.list=<DB_NAME1>,<DB_NAME2>...\n# An optional, comma-separated list of regular expressions that match database names for which you do not want to capture changes.\n#debezium.source.database.exclude.list=<DB_NAME1>,<DB_NAME2>...\n# Important: Do NOT use `include` and `exclude` table lists at the same time, use either `include` or `exclude`.\n# An optional, comma-separated list of regular expressions that match fully-qualified table identifiers of tables whose changes you want to capture.\n#debezium.source.table.include.list=<DB_NAME.TABLE_NAME1>,<DB_NAME.TABLE_NAME2>...\n# An optional, comma-separated list of regular expressions that match fully-qualified table identifiers for tables whose changes you do not want to capture.\n#debezium.source.table.exclude.list=<DB_NAME.TABLE_NAME1>,<DB_NAME.TABLE_NAME2>...\n\n# Important: Do NOT use include and exclude column lists at the same time, use either include or exclude.\n# An optional, comma-separated list of regular expressions that match the fully-qualified names of columns to include in change event record values.\n#debezium.source.column.include.list=<DB_NAME.TABLE_NAME.COLUMN_NAME1>,<DB_NAME.TABLE_NAME.COLUMN_NAME2>...\n# An optional, comma-separated list of regular expressions that match the fully-qualified names of columns to exclude from change event record values.\n#debezium.source.column.exclude.list=<DB_NAME.TABLE_NAME.COLUMN_NAME1>,<DB_NAME.TABLE_NAME.COLUMN_NAME2>...\n\n# Records only DDL statements that are relevant to tables whose changes are being captured by Debezium.\n# In case of changing the captured tables, run `redis-di reset`.\ndebezium.source.schema.history.internal.store.only.captured.tables.ddl=true\n\n# Whether to include the detailed schema information generated by Debezium in each record written to RDI.\n# Note: Including the schema reduces the initial sync throughput and is not recommended for large data sets.\ndebezium.source.key.converter.schemas.enable=false\ndebezium.source.value.converter.schemas.enable=false\n# When detailed schema information is excluded, handle decimal numeric types as strings.\ndebezium.source.decimal.handling.mode=string\n\ndebezium.transforms=AddPrefix\ndebezium.transforms.AddPrefix.type=org.apache.kafka.connect.transforms.RegexRouter\ndebezium.transforms.AddPrefix.regex=.*\ndebezium.transforms.AddPrefix.replacement=data:$0\n\n# Logging\n# Uncomment the following lines if running Debezium Server as a Java standalone process (non-containerized).\n#quarkus.log.file.enable=true\n#quarkus.log.file.path=<LOG_FILE_PATH>\n#quarkus.log.file.rotation.max-file-size=100M\n#quarkus.log.file.rotation.rotate-on-boot=true\n#quarkus.log.file.rotation.file-suffix=.yyyy-MM-dd.gz\n#quarkus.log.file.rotation.max-backup-index=3\n\n# The default minimum log level for every log category, change only quarkus.log.level when needed.\nquarkus.log.min-level=TRACE\n# The default log level for every log category.\nquarkus.log.level=INFO\n# Determine whether to enable the JSON console formatting extension, which disables \"normal\" console formatting.\nquarkus.log.console.json=false\n# The port on which Debezium exposes Microprofile Health endpoint and other exposed status information.\nquarkus.http.port=8088",
      "section_id": "application-properties"
    }
  ]
}
