Uploaded image for project: 'Debezium'
  1. Debezium
  2. DBZ-9718

When JdbcSchemaHistory and the captured database are in the same instance, the program cannot start normally.

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • 3.4.0.CR1
    • None
    • debezium-core
    • None
    • False
    • Hide

      None

      Show
      None
    • False

      Bug report

      RelationalSnapshotChangeEventSource the doExecute method "the Snapshot step 3 - Locking captured tables" lock for the database, However, the lock is released after saving the schema history. The schema history operation performed in between cannot be written to the database and will wait for the database to release the lock, thus causing the program to fail to start normally

      What Debezium connector do you use and what version?

      All versions between 2.7 and 3.3

      What is the connector configuration?

      final Properties props = new Properties();
      props.setProperty("name", "engine");
      props.setProperty("connector.class", "io.debezium.connector.mysql.MySqlConnector");
      props.setProperty("offset.storage", JdbcOffsetBackingStore.class.getCanonicalName());
      props.setProperty("offset.storage.jdbc.url", "jdbc:mysql://localhost:3306/study");
      props.setProperty("offset.storage.jdbc.user", "root");
      props.setProperty("offset.storage.jdbc.password", "******");
      props.setProperty("database.hostname", "localhost");
      props.setProperty("database.port", "3306");
      props.setProperty("database.user", "****");
      props.setProperty("database.password", "******");
      props.setProperty("database.server.id", String.valueOf(randomServerId()));
      props.setProperty("database.include.list", "study");
      props.setProperty("table.include.list", "study.fine_authority");
      props.setProperty("topic.prefix", "my-app-connector1");
      props.setProperty("schema.history.internal", JdbcSchemaHistory.class.getCanonicalName());
      props.setProperty("schema.history.internal.jdbc.url", "jdbc:mysql://localhost:3306/history");
      props.setProperty("schema.history.internal.jdbc.user", "debezium");
      props.setProperty("schema.history.internal.jdbc.password", "******");
      props.setProperty("schema.history.internal.jdbc.schema.history.table.ddl","CREATE TABLE %s (\n" +
      "    id VARCHAR(36) NOT NULL primary key,\n" +
      "    history_data varchar(12000),\n" +
      "    history_data_seq INTEGER,\n" +
      "    record_insert_ts TIMESTAMP NOT NULL,\n" +
      "    record_insert_seq INTEGER NOT NULL\n" +
      ")");
      props.setProperty("schema.history.internal.store.only.captured.tables.ddl","true");
       

      What is the captured database version and mode of deployment?

      database version: mysql 8.0.44 

      What behavior do you expect?

      The program can start normally.

      What behavior do you see?

      The program is stuck in the "JdbcSchemaHistory.storeRecord" method, and there is a "Waiting for global read lock" issue in the database

      Do you see the same behaviour using the latest released Debezium version?

      yes

       

              Unassigned Unassigned
              hzhili-1 志利 贺
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated: