
āĻāĻŽāĻžāϰ āĻāĻžāĻā§, āĻāĻŽāĻŋ āĻĒā§āϰāĻžāϝāĻŧāĻļāĻ āύāϤā§āύ āĻĒā§āϰāϝā§āĻā§āϤāĻŋāĻāϤ āϏāĻŽāĻžāϧāĻžāύ / āϏāĻĢā§āĻāĻāϝāĻŧā§āϝāĻžāϰ āĻĒāĻŖā§āϝāĻā§āϞāĻŋ āĻĻā§āĻāϤ⧠āĻĒāĻžāĻ, āϝāĻžāϰ āϏāĻŽā§āĻĒāϰā§āĻā§ āϤāĻĨā§āϝ āϰāĻžāĻļāĻŋāϝāĻŧāĻžāύ-āĻāĻžāώ⧠āĻāύā§āĻāĻžāϰāύā§āĻā§ āĻā§āĻŦ āĻāĻŽāĨ¤ āĻāĻ āύāĻŋāĻŦāύā§āϧāĻāĻŋāϰ āĻŽāĻžāϧā§āϝāĻŽā§, āĻāĻŽāĻŋ āĻāĻŽāĻžāϰ āϏāĻžāĻŽā§āĻĒā§āϰāϤāĻŋāĻ āĻ
āύā§āĻļā§āϞāύ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ āĻĻāĻŋāϝāĻŧā§ āĻāĻŽāύ āĻāĻāĻāĻŋ āĻļā§āύā§āϝāϤāĻž āĻĒā§āϰāĻŖ āĻāϰāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰāĻŦ, āϝāĻāύ āĻāĻŽāĻžāĻā§ āĻĻā§āĻāĻŋ āĻāύāĻĒā§āϰāĻŋāϝāĻŧ DBMSs (PostgreSQL āĻāĻŦāĻ MongoDB) āĻĨā§āĻā§ Debezium āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻāĻāĻŋ āĻāĻžāĻĢāĻāĻž āĻā§āϞāĻžāϏā§āĻāĻžāϰ⧠CDC āĻāĻā§āύā§āĻ āĻĒāĻžāĻ āĻžāύā§āϰ āϏā§āĻ āĻāĻĒ āĻāϰāϤ⧠āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ āĻāĻŽāĻŋ āĻāĻļāĻž āĻāϰāĻŋ āϝ⧠āĻāĻ āĻĒāϰā§āϝāĻžāϞā§āĻāύāĻž āύāĻŋāĻŦāύā§āϧāĻāĻŋ, āϝāĻž āĻāĻžāĻā§āϰ āĻĢāϞāĻžāĻĢāϞ āĻšāĻŋāϏāĻžāĻŦā§ āĻāĻĒāϏā§āĻĨāĻŋāϤ āĻšāϝāĻŧā§āĻāĻŋāϞ, āĻ
āύā§āϝāĻĻā§āϰ āĻāύā§āϝ āĻĻāϰāĻāĻžāϰ⧠āĻšāĻŦā§āĨ¤
āϏāĻžāϧāĻžāϰāĻŖāĻāĻžāĻŦā§ Debezium āĻāĻŦāĻ CDC āĻāĻŋ?
- āϏāĻŋāĻĄāĻŋāϏāĻŋ āϏāĻĢā§āĻāĻāϝāĻŧā§āϝāĻžāϰ āĻŦāĻŋāĻāĻžāĻā§āϰ āĻĒā§āϰāϤāĻŋāύāĻŋāϧāĻŋ (), āĻŦāĻž āĻāϰāĻ āϏā§āĻĒāώā§āĻāĻāĻžāĻŦā§, āĻāĻāĻŋ āĻŦāĻŋāĻāĻŋāύā§āύ DBMS-āĻāϰ āĻāύā§āϝ āϏāĻāϝā§āĻāĻāĻžāϰā§āϰ āĻāĻāĻāĻŋ āϏā§āĻ āϝāĻž Apache Kafka Connect āĻĢā§āϰā§āĻŽāĻāϝāĻŧāĻžāϰā§āĻā§āϰ āϏāĻžāĻĨā§ āϏāĻžāĻŽāĻā§āĻāϏā§āϝāĻĒā§āϰā§āĻŖāĨ¤
āĻāĻ Apache License v2.0 āĻāϰ āĻ āϧā§āύ⧠āϞāĻžāĻāϏā§āύā§āϏāĻĒā§āϰāĻžāĻĒā§āϤ āĻāĻŦāĻ Red Hat āĻĻā§āĻŦāĻžāϰāĻž āϏā§āĻĒāύāϏāϰ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤ 2016 āϏāĻžāϞ āĻĨā§āĻā§ āĻāύā§āύāϝāĻŧāύ āĻāϞāĻā§ āĻāĻŦāĻ āĻāĻ āĻŽā§āĻšā§āϰā§āϤ⧠āĻāĻāĻŋ āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ DBMS-āĻāϰ āĻāύā§āϝ āϏāϰāĻāĻžāϰ⧠āϏāĻšāĻžāϝāĻŧāϤāĻž āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§: MySQL, PostgreSQL, MongoDB, SQL āϏāĻžāϰā§āĻāĻžāϰāĨ¤ āĻā§āϝāĻžāϏāĻžāύā§āĻĄā§āϰāĻž āĻāĻŦāĻ āĻāϰāĻžāĻāϞā§āϰ āĻāύā§āϝāĻ āϏāĻāϝā§āĻāĻāĻžāϰ⧠āϰāϝāĻŧā§āĻā§, āĻāĻŋāύā§āϤ⧠āϤāĻžāϰāĻž āĻŦāϰā§āϤāĻŽāĻžāύ⧠"āĻāϰā§āϞāĻŋ āĻ ā§āϝāĻžāĻā§āϏā§āϏ" āĻ āĻŦāϏā§āĻĨāĻžāϝāĻŧ āϰāϝāĻŧā§āĻā§ āĻāĻŦāĻ āύāϤā§āύ āϰāĻŋāϞāĻŋāĻāĻā§āϞāĻŋ āĻĒāĻļā§āĻāĻžāĻĻāĻĒāĻĻ āϏāĻžāĻŽāĻā§āĻāϏā§āϝā§āϰ āĻā§āϝāĻžāϰāĻžāύā§āĻāĻŋ āĻĻā§āϝāĻŧ āύāĻžāĨ¤
āϝāĻĻāĻŋ āĻāĻŽāϰāĻž āϏāĻŋāĻĄāĻŋāϏāĻŋāĻā§ āĻāϤāĻŋāĻšā§āϝāĻāϤ āĻĒāĻĻā§āϧāϤāĻŋāϰ āϏāĻžāĻĨā§ āϤā§āϞāύāĻž āĻāϰāĻŋ (āϝāĻāύ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻāĻŋ āϏāϰāĻžāϏāϰāĻŋ āĻĄāĻŋāĻŦāĻŋāĻāĻŽāĻāϏ āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻĒāĻĄāĻŧā§), āϤāĻŦā§ āĻāϰ āĻĒā§āϰāϧāĻžāύ āϏā§āĻŦāĻŋāϧāĻžāĻā§āϞāĻŋāϰ āĻŽāϧā§āϝ⧠āϰāϝāĻŧā§āĻā§ āĻāĻŽ āĻŦāĻŋāϞāĻŽā§āĻŦ, āĻāĻā§āĻ āύāĻŋāϰā§āĻāϰāϝā§āĻā§āϝāϤāĻž āĻāĻŦāĻ āĻĒā§āϰāĻžāĻĒā§āϝāϤāĻž āϏāĻš āϏāĻžāϰāĻŋ āϏā§āϤāϰ⧠āĻĄā§āĻāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āϏā§āĻā§āϰāĻŋāĻŽāĻŋāĻ āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύāĨ¤ CDC āĻāĻā§āύā§āĻāĻā§āϞāĻŋāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āϏāĻāĻā§āϰāĻšāϏā§āĻĨāϞ āĻšāĻŋāϏāĻžāĻŦā§ āĻāĻžāĻĢāĻāĻž āĻā§āϞāĻžāϏā§āĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻļā§āώ āĻĻā§āĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻ āĻ āϰā§āĻāύ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
āĻāĻāĻžāĻĄāĻŧāĻžāĻ, āϏā§āĻŦāĻŋāϧāĻžāϰ āĻŽāϧā§āϝ⧠āϰāϝāĻŧā§āĻā§ āϝ⧠āĻāĻāĻāĻŋ āĻāĻāĻ āĻŽāĻĄā§āϞ āĻāĻā§āύā§āĻāĻā§āϞāĻŋ āϏāĻā§āĻāϝāĻŧ āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšā§āϤ āĻšāϝāĻŧ, āϤāĻžāĻ āĻā§āĻĄāĻŧāĻžāύā§āϤ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻāĻŋāĻā§ āĻŦāĻŋāĻāĻŋāύā§āύ āĻĄāĻŋāĻŦāĻŋāĻāĻŽāĻāϏ āĻĒāϰāĻŋāĻāĻžāϞāύāĻžāϰ āϏā§āĻā§āώā§āĻŽāϤāĻž āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāĻŋāύā§āϤāĻž āĻāϰāϤ⧠āĻšāĻŦā§ āύāĻžāĨ¤
āĻ āĻŦāĻļā§āώā§, āĻāĻāĻāĻŋ āĻŦāĻžāϰā§āϤāĻž āĻŦā§āϰā§āĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻā§āϞāĻŋāϰ āĻ āύā§āĻā§āĻŽāĻŋāĻ āϏā§āĻā§āϞāĻŋāĻ āĻāϰāĻžāϰ āϏā§āϝā§āĻ āĻā§āϞ⧠āĻĻā§āϝāĻŧ āϝāĻž āĻĄā§āĻāĻžāϤ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻā§āϞāĻŋ āĻā§āϰā§āϝāĻžāĻ āĻāϰā§āĨ¤ āĻāĻāĻ āϏāĻŽāϝāĻŧā§, āĻĄā§āĻāĻž āĻāϤā§āϏā§āϰ āĻāĻĒāϰ āĻĒā§āϰāĻāĻžāĻŦ āĻšā§āϰāĻžāϏ āĻāϰāĻž āĻšāϝāĻŧ, āϝā§āĻšā§āϤ⧠āĻĄā§āĻāĻž āϏāϰāĻžāϏāϰāĻŋ āĻĄāĻŋāĻŦāĻŋāĻāĻŽāĻāϏ āĻĨā§āĻā§ āύāϝāĻŧ, āĻāĻžāĻĢāĻāĻž āĻā§āϞāĻžāϏā§āĻāĻžāϰ āĻĨā§āĻā§ āĻĒā§āϰāĻžāĻĒā§āϤ āĻšāϝāĻŧāĨ¤
āĻĄā§āĻŦā§āĻāĻŋāϝāĻŧāĻžāĻŽ āϏā§āĻĨāĻžāĻĒāϤā§āϝ āϏāĻŽā§āĻĒāϰā§āĻā§
Debezium āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻāĻ āϏāĻšāĻ āϏā§āĻāĻŋāĻŽā§ āύā§āĻŽā§ āĻāϏā§:
DBMS (āĻĄā§āĻāĻž āĻā§āϏ āĻšāĻŋāϏā§āĻŦā§) â āĻāĻžāĻĢāĻāĻž āĻāĻžāύā§āĻā§āĻā§ āϏāĻāϝā§āĻāĻāĻžāϰ⧠â āĻ ā§āϝāĻžāĻĒāĻžāĻāĻŋ āĻāĻžāĻĢāĻāĻž â āĻā§āĻā§āϤāĻž
āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ āĻšāĻŋāϏāĻžāĻŦā§, āĻāĻŽāĻŋ āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻāϝāĻŧā§āĻŦāϏāĻžāĻāĻ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻĄāĻžāϝāĻŧāĻžāĻā§āϰāĻžāĻŽ āĻĻā§āĻŦ:

āϝāĻžāĻāĻšā§āĻ, āĻāĻŽāĻŋ āĻāĻ āϏā§āĻāĻŋāĻŽāĻāĻŋ āϏāϤā§āϝāĻŋāĻ āĻĒāĻāύā§āĻĻ āĻāϰāĻŋ āύāĻž, āĻāĻžāϰāĻŖ āĻŽāύ⧠āĻšāĻā§āĻā§ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻāĻāĻāĻŋ āϏāĻŋāĻā§āĻ āϏāĻāϝā§āĻāĻāĻžāϰ⧠āϏāĻŽā§āĻāĻŦāĨ¤
āĻŦāĻžāϏā§āϤāĻŦā§, āĻĒāϰāĻŋāϏā§āĻĨāĻŋāϤāĻŋ āĻāĻŋāύā§āύ: āĻāĻĒāύāĻžāϰ āĻĄā§āĻāĻž āϞā§āĻ āĻāϰāĻžāĻ āĻāϰāĻž (āĻāĻĒāϰā§āϰ āĻāĻŋāϤā§āϰā§āϰ āĻļā§āώ āϞāĻŋāĻā§āĻ) Debezium āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻāĻāĻŽāĻžāϤā§āϰ āĻāĻĒāĻžāϝāĻŧ āύāϝāĻŧāĨ¤ Apache Kafka-āϤ⧠āĻĒāĻžāĻ āĻžāύ⧠āĻāĻā§āύā§āĻāĻā§āϞāĻŋ āĻŦāĻŋāĻāĻŋāύā§āύ āĻĒāϰāĻŋāϏā§āĻĨāĻŋāϤāĻŋāϤ⧠āĻŽā§āĻāĻžāĻŦā§āϞāĻž āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻā§āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖ āϏā§āĻŦāϰā§āĻĒ:
- āĻā§āϝāĻžāĻļā§ āĻĨā§āĻā§ āĻ āĻĒā§āϰāĻžāϏāĻā§āĻāĻŋāĻ āϤāĻĨā§āϝ āĻ āĻĒāϏāĻžāϰāĻŖ;
- āĻŦāĻŋāĻā§āĻāĻĒā§āϤāĻŋ āĻĒāĻžāĻ āĻžāύā§;
- āĻ āύā§āϏāύā§āϧāĻžāύ āϏā§āĻāĻ āĻāĻĒāĻĄā§āĻ;
- āĻāĻŋāĻā§ āϧāϰāύā§āϰ āĻ āĻĄāĻŋāĻ āϞāĻ;
- ...
āĻāĻĒāύāĻžāϰ āϝāĻĻāĻŋ āĻāĻāĻāĻŋ āĻāĻžāĻāĻž āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻĨāĻžāĻā§ āĻāĻŦāĻ āĻāĻžāĻĢāĻāĻž āĻā§āϞāĻžāϏā§āĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻā§āύ āĻĒā§āϰāϝāĻŧā§āĻāύ/āϏāĻŽā§āĻāĻžāĻŦāύāĻž āύāĻž āĻĨāĻžāĻā§, āϤāĻžāĻšāϞ⧠āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻžāĻ āĻāϰāĻžāϰ āϏāĻŽā§āĻāĻžāĻŦāύāĻžāĻ āϰāϝāĻŧā§āĻā§ . āϏā§āϏā§āĻĒāώā§āĻ āĻĒā§āϞāĻžāϏ āĻšāϞ āϝ⧠āĻāĻāĻŋāϰ āϏāĻžāĻĨā§ āĻāĻĒāύāĻŋ āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āĻ āĻŦāĻāĻžāĻ āĻžāĻŽā§ (āĻāĻāĻāĻŋ āϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻāĻŦāĻ āĻāĻžāĻĢāĻāĻžāϰ āĻāĻāĻžāϰā§) āĻĒā§āϰāϤā§āϝāĻžāĻā§āϝāĻžāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āϝāĻžāĻāĻšā§āĻ, āĻāĻ āϏāĻŽāĻžāϧāĻžāύāĻāĻŋ āϏāĻāϏā§āĻāϰāĻŖ 1.1 āĻĨā§āĻā§ āĻ āĻŦāĻŽā§āϞā§āϝāĻžāϝāĻŧāĻŋāϤ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āĻāύā§āϝ āϏā§āĻĒāĻžāϰāĻŋāĻļ āĻāϰāĻž āĻšāϝāĻŧ āύāĻž (āĻāĻāĻŋ āĻāĻŦāĻŋāώā§āϝāϤā§āϰ āĻĒā§āϰāĻāĻžāĻļāĻā§āϞāĻŋāϤ⧠āϏāϰāĻžāύ⧠āĻšāϤ⧠āĻĒāĻžāϰā§)āĨ¤
āĻāĻ āύāĻŋāĻŦāύā§āϧāĻāĻŋ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāϰā§āĻĻā§āϰ āĻĻā§āĻŦāĻžāϰāĻž āϏā§āĻĒāĻžāϰāĻŋāĻļāĻā§āϤ āĻāϰā§āĻāĻŋāĻā§āĻāĻāĻžāϰ āύāĻŋāϝāĻŧā§ āĻāϞā§āĻāύāĻž āĻāϰāĻŦā§, āϝāĻž āϤā§āϰā§āĻāĻŋ āϏāĻšāύāĻļā§āϞāϤāĻž āĻāĻŦāĻ āĻŽāĻžāĻĒāϝā§āĻā§āϝāϤāĻž āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§āĨ¤
āϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ
āϏāĻŦāĻā§āϝāĻŧā§ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻŽāĻžāύ - āĻĄā§āĻāĻž - āĻāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻā§āϞāĻŋ āĻā§āϰā§āϝāĻžāĻ āĻāϰāĻž āĻļā§āϰ⧠āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻŽāĻžāĻĻā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύ:
- āĻĄā§āĻāĻž āĻā§āϏ, āϝāĻž MySQL āĻšāϤ⧠āĻĒāĻžāϰ⧠āϏāĻāϏā§āĻāϰāĻŖ 5.7 āĻĨā§āĻā§ āĻļā§āϰ⧠āĻāϰā§, PostgreSQL 9.6+, MongoDB 3.2+ ();
- āĻ ā§āϝāĻžāĻĒāĻžāĻāĻŋ āĻāĻžāĻĢāĻāĻž āĻā§āϞāĻžāϏā§āĻāĻžāϰ
- āĻāĻžāĻĢāĻāĻž āĻāĻžāύā§āĻā§āĻ āĻāύāϏā§āĻā§āϝāĻžāύā§āϏ (āϏāĻāϏā§āĻāϰāĻŖ 1.x, 2.x);
- āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰāĻž Debezium āϏāĻāϝā§āĻāĻāĻžāϰā§.
āĻĒā§āϰāĻĨāĻŽ āĻĻā§āĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻā§ āĻāĻžāĻ āĻāϰā§āύ, āϝā§āĻŽāύ āĻāĻāĻāĻŋ DBMS āĻāĻŦāĻ Apache Kafka āĻāύāϏā§āĻāϞ āĻāϰāĻžāϰ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āύāĻŋāĻŦāύā§āϧā§āϰ āϏā§āϝā§āĻā§āϰ āĻŦāĻžāĻāϰā§āĨ¤ āϝāĻžāĻāĻšā§āĻ, āϝāĻžāϰāĻž āĻāĻāĻāĻŋ āϏā§āϝāĻžāύā§āĻĄāĻŦāĻā§āϏ⧠āϏāĻŦāĻāĻŋāĻā§ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāϤ⧠āĻāĻžāύ, āϤāĻžāĻĻā§āϰ āĻāύā§āϝ āĻ āĻĢāĻŋāϏāĻŋāϝāĻŧāĻžāϞ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋāϤ⧠āĻāĻĻāĻžāĻšāϰāĻŖ āϏāĻš āĻāĻāĻāĻŋ āϰā§āĻĄāĻŋāĻŽā§āĻĄ āϰāϝāĻŧā§āĻā§ .
āĻāĻŽāϰāĻž āĻāϰāĻ āĻŦāĻŋāĻļāĻĻā§ āĻļā§āώ āĻĻā§āĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻā§ āĻĢā§āĻāĻžāϏ āĻāϰāĻŦāĨ¤
0. āĻāĻžāĻĢāĻāĻž āĻāĻžāύā§āĻā§āĻ
āĻāĻāĻžāύ⧠āĻāĻŦāĻ āĻĒāϰ⧠āύāĻŋāĻŦāύā§āϧā§, āϏāĻŽāϏā§āϤ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻāĻĻāĻžāĻšāϰāĻŖ Debezium āĻĄā§āĻā§āϞāĻĒāĻžāϰāĻĻā§āϰ āĻĻā§āĻŦāĻžāϰāĻž āĻŦāĻŋāϤāϰāĻŖ āĻāϰāĻž āĻĄāĻāĻžāϰ āĻāĻŋāϤā§āϰā§āϰ āĻĒā§āϰāϏāĻā§āĻā§ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤ āĻāĻāĻŋāϤ⧠āϏāĻŽāϏā§āϤ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻĒā§āϞāĻžāĻāĻāύ āĻĢāĻžāĻāϞ (āϏāĻāϝā§āĻāĻāĻžāϰā§) āϰāϝāĻŧā§āĻā§ āĻāĻŦāĻ āĻĒāϰāĻŋāĻŦā§āĻļ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻžāĻĢāĻāĻž āĻāĻžāύā§āĻā§āĻ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§āĨ¤
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāύāĻĢā§āϞā§āϝāĻŧā§āύā§āĻ āĻĨā§āĻā§ āĻāĻžāĻĢāĻāĻž āĻāĻžāύā§āĻā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻāĻžāύ, āϤāĻžāĻšāϞ⧠āĻāĻĒāύāĻžāĻā§ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻāĻžāύā§āĻā§āĻāϰā§āϰ āĻĒā§āϞāĻžāĻāĻāύāĻā§āϞāĻŋāĻā§ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋāϤ⧠āϝā§āĻ āĻāϰāϤ⧠āĻšāĻŦā§ plugin.path āĻ
āĻĨāĻŦāĻž āĻāĻāĻāĻŋ āĻĒāϰāĻŋāĻŦā§āĻļ āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻļā§āϞ āĻŽāĻžāϧā§āϝāĻŽā§ āϏā§āĻ CLASSPATH. āĻāĻžāĻĢāĻāĻž āĻāĻžāύā§āĻā§āĻ āĻāϰā§āĻŽā§ āĻāĻŦāĻ āϏāĻāϝā§āĻāĻāĻžāϰā§āϰ āϏā§āĻāĻŋāĻāϏ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻĢāĻžāĻāϞā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻāϰāĻž āĻšāϝāĻŧ āϝāĻž āĻāϰā§āĻŽā§ āϏā§āĻāĻžāϰā§āĻ āĻāĻŽāĻžāύā§āĻĄā§ āĻāϰā§āĻā§āĻŽā§āύā§āĻ āĻšāĻŋāϏāĻžāĻŦā§ āĻĒāĻžāϏ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤ āĻāĻžāύāĻžāϰ āĻāύā§āϝ āĻĻā§āĻā§āύ .
āϏāĻāϝā§āĻāĻāĻžāϰ⧠āϏāĻāϏā§āĻāϰāĻŖā§ Debeizum āϏā§āĻ āĻāĻĒ āĻāϰāĻžāϰ āĻĒā§āϰ⧠āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āĻĻā§āĻāĻŋ āĻĒāϰā§āϝāĻžāϝāĻŧā§ āϏāĻā§āĻāĻžāϞāĻŋāϤ āĻšāϝāĻŧāĨ¤ āĻāϏā§āύ āϤāĻžāĻĻā§āϰ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰāĻž āϝāĻžāĻ:
1. āĻāĻžāĻĢāĻāĻž āĻāĻžāύā§āĻā§āĻ āĻĢā§āϰā§āĻŽāĻāϝāĻŧāĻžāϰā§āĻ āϏā§āĻ āĻāĻĒ āĻāϰāĻž
Apache Kafka āĻā§āϞāĻžāϏā§āĻāĻžāϰ⧠āĻĄā§āĻāĻž āϏā§āĻā§āϰāĻŋāĻŽ āĻāϰāϤā§, āĻāĻžāĻĢāĻāĻž āĻāĻžāύā§āĻā§āĻ āĻĢā§āϰā§āĻŽāĻāϝāĻŧāĻžāϰā§āĻā§ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āϏā§āĻ āĻāϰāĻž āĻšāϝāĻŧ, āϝā§āĻŽāύ:
- āĻā§āϞāĻžāϏā§āĻāĻžāϰ āϏāĻāϝā§āĻ āϏā§āĻāĻŋāĻāϏ,
- āĻŦāĻŋāώāϝāĻŧāĻā§āϞāĻŋāϰ āύāĻžāĻŽ āϝā§āĻāĻžāύ⧠āϏāĻāϝā§āĻāĻāĻžāϰā§āϰ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āύāĻŋāĻā§āĻ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āĻšāĻŦā§,
- āϝ⧠āĻā§āϰā§āĻĒā§ āϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻāϞāĻā§ āϤāĻžāϰ āύāĻžāĻŽ (āĻĄāĻŋāϏā§āĻā§āϰāĻŋāĻŦāĻŋāĻāĻā§āĻĄ āĻŽā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻā§āώā§āϤā§āϰā§)āĨ¤
āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻ āĻĢāĻŋāϏāĻŋāϝāĻŧāĻžāϞ āĻĄāĻāĻžāϰ āĻāĻŽā§āĻ āĻĒāϰāĻŋāĻŦā§āĻļā§āϰ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āϏāĻŽāϰā§āĻĨāύ āĻāϰ⧠- āĻāĻāĻŋāĻ āĻāĻŽāϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦāĨ¤ āϤ⧠āĻāϞā§āύ āĻāĻŦāĻŋāĻāĻŋ āĻĄāĻžāĻāύāϞā§āĻĄ āĻāϰāĻŋāĻ
docker pull debezium/connectāϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻāĻžāϞāĻžāύā§āϰ āĻāύā§āϝ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻĒāϰāĻŋāĻŦā§āĻļ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞā§āϰ āύā§āϝā§āύāϤāĻŽ āϏā§āĻ āύāĻŋāĻŽā§āύāϰā§āĻĒ:
-
BOOTSTRAP_SERVERS=kafka-1:9092,kafka-2:9092,kafka-3:9092- āĻā§āϞāĻžāϏā§āĻāĻžāϰ āϏāĻĻāϏā§āϝāĻĻā§āϰ āĻāĻāĻāĻŋ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āϤāĻžāϞāĻŋāĻāĻž āĻĒā§āϤ⧠āĻāĻžāĻĢāĻāĻž āĻā§āϞāĻžāϏā§āĻāĻžāϰ āϏāĻžāϰā§āĻāĻžāϰā§āϰ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ āϤāĻžāϞāĻŋāĻāĻž; -
OFFSET_STORAGE_TOPIC=connector-offsetsâ āϝā§āĻāĻžāύ⧠āϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻŦāϰā§āϤāĻŽāĻžāύ⧠āĻ āĻŦāϏā§āĻĨāĻŋāϤ āϏā§āĻāĻžāύ⧠āĻ āĻŦāϏā§āĻĨāĻžāύ āϏāĻāϰāĻā§āώāĻŖā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻŦāĻŋāώāϝāĻŧ; -
CONNECT_STATUS_STORAGE_TOPIC=connector-status- āϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻāĻŦāĻ āĻāϰ āĻāĻžāĻāĻā§āϞāĻŋāϰ āϏā§āĻĨāĻŋāϤāĻŋ āϏāĻāϰāĻā§āώāĻŖā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻŦāĻŋāώāϝāĻŧ; -
CONFIG_STORAGE_TOPIC=connector-config- āϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻĄā§āĻāĻž āĻāĻŦāĻ āĻāϰ āĻāĻžāĻāĻā§āϞāĻŋ āϏāĻāϰāĻā§āώāĻŖā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻŦāĻŋāώāϝāĻŧ; -
GROUP_ID=1â āĻļā§āϰāĻŽāĻŋāĻāĻĻā§āϰ āĻā§āϰā§āĻĒā§āϰ āĻļāύāĻžāĻā§āϤāĻāĻžāϰ⧠āϝāĻžāϰ āĻāĻĒāϰ āϏāĻāϝā§āĻāĻāĻžāϰā§āϰ āĻāĻžāĻāĻāĻŋ āĻāĻžāϞāĻžāύ⧠āϝā§āϤ⧠āĻĒāĻžāϰā§; āĻŦāĻŋāϤāϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻĒā§āϰāϝāĻŧā§āĻāύ (āĻŦāĻŋāϤāϰāĻŖ āĻāϰāĻž) āĻļāĻžāϏāύ
āĻāĻŽāϰāĻž āĻāĻ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻĻāĻŋāϝāĻŧā§ āϧāĻžāϰāĻ āĻļā§āϰ⧠āĻāϰāĻŋ:
docker run
-e BOOTSTRAP_SERVERS='kafka-1:9092,kafka-2:9092,kafka-3:9092'
-e GROUP_ID=1
-e CONFIG_STORAGE_TOPIC=my_connect_configs
-e OFFSET_STORAGE_TOPIC=my_connect_offsets
-e STATUS_STORAGE_TOPIC=my_connect_statuses debezium/connect:1.2āĻ āĻā§āϰ āϏāĻŽā§āĻĒāϰā§āĻā§ āύā§āĻ
āĻĄāĻŋāĻĢāϞā§āĻāϰā§āĻĒā§, Debezium JSON āĻĢāϰā§āĻŽā§āϝāĻžāĻā§ āĻĄā§āĻāĻž āϞā§āĻā§, āϝāĻž āϏā§āϝāĻžāύā§āĻĄāĻŦāĻā§āϏ āĻāĻŦāĻ āĻ āϞā§āĻĒ āĻĒāϰāĻŋāĻŽāĻžāĻŖ āĻĄā§āĻāĻžāϰ āĻāύā§āϝ āĻā§āϰāĻšāĻŖāϝā§āĻā§āϝ, āĻāĻŋāύā§āϤ⧠āĻāĻžāϰ⧠āϞā§āĻĄ āĻāϰāĻž āĻĄā§āĻāĻžāĻŦā§āϏ⧠āϏāĻŽāϏā§āϝāĻž āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ JSON āϰā§āĻĒāĻžāύā§āϤāϰāĻāĻžāϰā§āϰ āĻāĻāĻāĻŋ āĻŦāĻŋāĻāϞā§āĻĒ āĻšāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻŦāĻžāϰā§āϤāĻžāĻā§āϞāĻŋāĻā§ āϏāĻŋāϰāĻŋāϝāĻŧāĻžāϞāĻžāĻāĻ āĻāϰāĻž āĻāĻāĻāĻŋ āĻŦāĻžāĻāύāĻžāϰāĻŋ āĻŦāĻŋāύā§āϝāĻžāϏā§, āϝāĻž Apache Kafka-āϤ⧠I/O āϏāĻžāĻŦāϏāĻŋāϏā§āĻā§āĻŽā§āϰ āϞā§āĻĄ āĻšā§āϰāĻžāϏ āĻāϰā§āĨ¤
āĻ āĻā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻāύā§āϝ, āĻāĻĒāύāĻžāĻā§ āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāϤ⧠āĻšāĻŦā§ (āϏā§āĻāĻŋāĻŽ āϏāĻāϰāĻā§āώāĻŖā§āϰ āĻāύā§āϝ)āĨ¤ āϰā§āĻĒāĻžāύā§āϤāϰāĻāĻžāϰā§āϰ āĻāύā§āϝ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻāĻ āĻŽāϤ āĻĻā§āĻāĻžāĻŦā§:
name: CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL
value: http://kafka-registry-01:8081/
name: CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL
value: http://kafka-registry-01:8081/
name: VALUE_CONVERTER
value: io.confluent.connect.avro.AvroConverterāĻ āĻā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāĻŦāĻ āĻāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āϰā§āĻāĻŋāϏā§āĻā§āϰāĻŋ āϏā§āĻ āĻāĻĒ āĻāϰāĻžāϰ āĻŦāĻŋāĻļāĻĻ āĻŦāĻŋāĻŦāϰāĻŖ āύāĻŋāĻŦāύā§āϧā§āϰ āϏā§āϝā§āĻā§āϰ āĻŦāĻžāĻāϰ⧠- āĻāϰāĻ, āϏā§āĻĒāώā§āĻāϤāĻžāϰ āĻāύā§āϝ, āĻāĻŽāϰāĻž JSON āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦāĨ¤
2. āϏāĻāϝā§āĻāĻāĻžāϰ⧠āύāĻŋāĻā§āĻ āϏā§āĻ āĻāĻĒ āĻāϰāĻž
āĻāĻāύ āĻāĻĒāύāĻŋ āϏāϰāĻžāϏāϰāĻŋ āϏāĻāϝā§āĻāĻāĻžāϰā§āϰ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ⧠āϝā§āϤ⧠āĻĒāĻžāϰā§āύ, āϝāĻž āĻā§āϏ āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻĒāĻĄāĻŧāĻŦā§āĨ¤
āĻāϏā§āύ āĻĻā§āĻāĻŋ DBMS-āĻāϰ āϏāĻāϝā§āĻāĻāĻžāϰā§āϰ āĻāĻĻāĻžāĻšāϰāĻŖ āĻĻā§āĻāĻŋ: PostgreSQL āĻāĻŦāĻ MongoDB, āϝāĻžāϰ āĻāύā§āϝ āĻāĻŽāĻžāϰ āĻ āĻāĻŋāĻā§āĻāϤāĻž āĻāĻā§ āĻāĻŦāĻ āϝāĻžāϰ āĻāύā§āϝ āĻĒāĻžāϰā§āĻĨāĻā§āϝ āϰāϝāĻŧā§āĻā§ (āĻā§āĻ āĻšāϞā§āĻ, āϤāĻŦā§ āĻāĻŋāĻā§ āĻā§āώā§āϤā§āϰ⧠āϤāĻžā§āĻĒāϰā§āϝāĻĒā§āϰā§āĻŖ!)
āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύāĻāĻŋ JSON āϏā§āĻŦāϰāϞāĻŋāĻĒāĻŋāϤ⧠āĻŦāϰā§āĻŖāύāĻž āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āĻāĻŦāĻ āĻāĻāĻāĻŋ POST āĻ āύā§āϰā§āϧ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻžāĻĢāĻāĻž āĻāĻžāύā§āĻā§āĻā§ āĻāĻĒāϞā§āĻĄ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤
2.1āĨ¤ āĻĒā§āϏā§āĻāĻā§āϰā§āĻāϏāĻāĻŋāĻāĻāϞ
PostgreSQL āĻāϰ āĻāύā§āϝ āϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύā§āϰ āĻāĻĻāĻžāĻšāϰāĻŖ:
{
"name": "pg-connector",
"config": {
"connector.class": "io.debezium.connector.postgresql.PostgresConnector",
"plugin.name": "pgoutput",
"database.hostname": "127.0.0.1",
"database.port": "5432",
"database.user": "debezium",
"database.password": "definitelynotpassword",
"database.dbname" : "dbname",
"database.server.name": "pg-dev",
"table.include.list": "public.(.*)",
"heartbeat.interval.ms": "5000",
"slot.name": "dbname_debezium",
"publication.name": "dbname_publication",
"transforms": "AddPrefix",
"transforms.AddPrefix.type": "org.apache.kafka.connect.transforms.RegexRouter",
"transforms.AddPrefix.regex": "pg-dev.public.(.*)",
"transforms.AddPrefix.replacement": "data.cdc.dbname"
}
}āĻāĻ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύā§āϰ āĻĒāϰ⧠āϏāĻāϝā§āĻāĻāĻžāϰā§āϰ āĻ āĻĒāĻžāϰā§āĻļāύā§āϰ āύā§āϤāĻŋāĻāĻŋ āĻŦā§āĻļ āϏāĻšāĻ:
- āĻĒā§āϰāĻĨāĻŽ āĻļā§āϰā§āϤā§, āĻāĻāĻŋ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ⧠āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰāĻž āĻĄāĻžāĻāĻžāĻŦā§āϏā§āϰ āϏāĻžāĻĨā§ āϏāĻāϝā§āĻ āĻāϰ⧠āĻāĻŦāĻ āĻŽā§āĻĄā§ āĻļā§āϰ⧠āĻšāϝāĻŧ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ āϏā§āύā§āϝāĻžāĻĒāĻļāĻ, āĻļāϰā§āϤāϏāĻžāĻĒā§āĻā§āώ⧠āĻĒā§āϰāĻžāĻĒā§āϤ āĻĄā§āĻāĻžāϰ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ āϏā§āĻ āĻāĻžāĻĢāĻāĻžāĻā§ āĻĒāĻžāĻ āĻžāύ⧠āĻšāĻā§āĻā§
SELECT * FROM table_name. - āĻāϰāĻŽā§āĻ āĻāϰāĻžāϰ āĻĒāϰā§, āϏāĻāϝā§āĻāĻāĻžāϰ⧠PostgreSQL WAL āĻĢāĻžāĻāϞāĻā§āϞāĻŋ āĻĨā§āĻā§ āĻĒāĻĄāĻŧāĻžāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϰ āĻŽā§āĻĄā§ āĻĒā§āϰāĻŦā§āĻļ āĻāϰā§āĨ¤
āĻŦā§āϝāĻŦāĻšā§āϤ āĻŦāĻŋāĻāϞā§āĻĒ āϏāĻŽā§āĻĒāϰā§āĻā§:
-
nameâ āϏāĻāϝā§āĻāĻāĻžāϰā§āϰ āύāĻžāĻŽ āϝāĻžāϰ āĻāύā§āϝ āύā§āĻā§ āĻŦāϰā§āĻŖāĻŋāϤ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§; āĻāĻŦāĻŋāώā§āϝāϤā§, āĻāĻ āύāĻžāĻŽāĻāĻŋ āĻāĻžāĻĢāĻāĻž āĻāĻžāύā§āĻā§āĻ REST API-āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϏāĻāϝā§āĻāĻāĻžāϰā§āϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāĻŦā§ (āĻ āϰā§āĻĨāĻžā§ āϏā§āĻĨāĻŋāϤāĻŋ āĻĻā§āĻā§āύ / āĻĒā§āύāϰāĻžāϝāĻŧ āĻāĻžāϞ⧠āĻāϰā§āύ / āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻāĻĒāĻĄā§āĻ āĻāϰā§āύ); -
connector.classâ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰāĻž āϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻĻā§āĻŦāĻžāϰāĻž āĻŦā§āϝāĻŦāĻšā§āϤ DBMS āϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻļā§āϰā§āĻŖā§; -
plugin.nameWAL āĻĢāĻžāĻāϞ āĻĨā§āĻā§ āĻĄā§āĻāĻžāϰ āϝā§āĻā§āϤāĻŋāĻ āĻĄāĻŋāĻā§āĻĄāĻŋāĻāϝāĻŧā§āϰ āĻāύā§āϝ āĻĒā§āϞāĻžāĻāĻāύāĻāĻŋāϰ āύāĻžāĻŽāĨ¤ āĻĨā§āĻā§ āĻāϝāĻŧāύ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻĒāϞāĻŦā§āϧwal2json,decoderbuffsиpgoutput. āĻĒā§āϰāĻĨāĻŽ āĻĻā§āĻāĻŋāϰ āĻāύā§āϝ āĻĄāĻŋāĻŦāĻŋāĻāĻŽāĻāϏ⧠āĻāĻĒāϝā§āĻā§āϤ āĻāĻā§āϏāĻā§āύāĻļāύ āĻāύāϏā§āĻāϞ āĻāϰāĻž āĻĒā§āϰāϝāĻŧā§āĻāύ, āĻāĻŦāĻpgoutputPostgreSQL āϏāĻāϏā§āĻāϰāĻŖ 10 āĻāĻŦāĻ āĻāĻā§āĻāϤāϰ āĻāύā§āϝ āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āĻŽā§āϝāĻžāύāĻŋāĻĒā§āϞā§āĻļāύ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻšāϝāĻŧ āύāĻž; -
database.*â āĻĄāĻžāĻāĻžāĻŦā§āϏā§āϰ āϏāĻžāĻĨā§ āϏāĻāϝā§āĻ āĻāϰāĻžāϰ āĻŦāĻŋāĻāϞā§āĻĒ, āϝā§āĻāĻžāύā§database.server.name- āĻāĻžāĻĢāĻāĻž āĻā§āϞāĻžāϏā§āĻāĻžāϰ⧠āĻŦāĻŋāώāϝāĻŧā§āϰ āύāĻžāĻŽ āĻāĻ āύ āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšā§āϤ PostgreSQL āĻāĻĻāĻžāĻšāϰāĻŖā§āϰ āύāĻžāĻŽ; -
table.include.list- āĻā§āĻŦāĻŋāϞā§āϰ āĻāĻāĻāĻŋ āϤāĻžāϞāĻŋāĻāĻž āϝā§āĻāĻžāύ⧠āĻāĻŽāϰāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻā§āϞāĻŋ āĻā§āϰā§āϝāĻžāĻ āĻāϰāϤ⧠āĻāĻžāĻ; āĻŦāĻŋāύā§āϝāĻžāϏ⧠āĻĻā§āĻāϝāĻŧāĻžschema.table_name; āϏāĻā§āĻā§ āĻāĻāϏāĻā§āĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝāĻžāĻŦā§ āύāĻžtable.exclude.list; -
heartbeat.interval.ms- āĻŦā§āϝāĻŦāϧāĻžāύ (āĻŽāĻŋāϞāĻŋāϏā§āĻā§āύā§āĻĄā§) āϝāĻžāϰ āϏāĻžāĻĨā§ āϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻāĻāĻāĻŋ āĻŦāĻŋāĻļā§āώ āĻŦāĻŋāώāϝāĻŧā§ āĻšāĻžāϰā§āĻāĻŦāĻŋāĻ āĻŦāĻžāϰā§āϤāĻž āĻĒāĻžāĻ āĻžāϝāĻŧ; -
heartbeat.action.query- āĻāĻāĻāĻŋ āĻ āύā§āϰā§āϧ āϝāĻž āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻšāĻžāϰā§āĻāĻŦāĻŋāĻ āĻŦāĻžāϰā§āϤāĻž āĻĒāĻžāĻ āĻžāύā§āϰ āϏāĻŽāϝāĻŧ āĻāĻžāϰā§āϝāĻāϰ āĻāϰāĻž āĻšāĻŦā§ (āĻŦāĻŋāĻāϞā§āĻĒāĻāĻŋ āϏāĻāϏā§āĻāϰāĻŖ 1.1 āĻĨā§āĻā§ āĻāĻĒāϏā§āĻĨāĻŋāϤ āĻšāϝāĻŧā§āĻā§); -
slot.nameâ āĻĒā§āϰāϤāĻŋāϞāĻŋāĻĒāĻŋ āϏā§āϞāĻā§āϰ āύāĻžāĻŽ āϝāĻž āϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻĻā§āĻŦāĻžāϰāĻž āĻŦā§āϝāĻŦāĻšā§āϤ āĻšāĻŦā§; publication.name- āύāĻžāĻŽ PostgreSQL-āĻ āϝāĻž āϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤ āϝāĻĻāĻŋ āĻāĻāĻŋ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āύāĻž āĻĨāĻžāĻā§, Debezium āĻāĻāĻŋ āϤā§āϰāĻŋ āĻāϰāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰāĻŦā§āĨ¤ āϝ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻ āϧā§āύ⧠āϏāĻāϝā§āĻāĻāĻŋ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āϤāĻžāϰ āϝāĻĻāĻŋ āĻāĻ āĻā§āϰāĻŋāϝāĻŧāĻžāĻāϞāĻžāĻĒā§āϰ āĻāύā§āϝ āĻĒāϰā§āϝāĻžāĻĒā§āϤ āĻ āϧāĻŋāĻāĻžāϰ āύāĻž āĻĨāĻžāĻā§ āϤāĻŦā§ āϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻāĻāĻāĻŋ āϤā§āϰā§āĻāĻŋ āϏāĻš āĻĒā§āϰāϏā§āĻĨāĻžāύ āĻāϰāĻŦā§;-
transformsāϞāĻā§āώā§āϝ āĻŦāĻŋāώāϝāĻŧā§āϰ āύāĻžāĻŽ āĻ āĻŋāĻ āĻāĻŋāĻāĻžāĻŦā§ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāϤ⧠āĻšāĻŦā§ āϤāĻž āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰā§:-
transforms.AddPrefix.typeāύāĻŋāϰā§āĻĻā§āĻļ āĻāϰ⧠āϝ⧠āĻāĻŽāϰāĻž āϰā§āĻā§āϞāĻžāϰ āĻāĻā§āϏāĻĒā§āϰā§āĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦ; -
transforms.AddPrefix.regexâ āĻŽā§āĻā§āĻļ āϝāĻžāϰ āĻĻā§āĻŦāĻžāϰāĻž āϞāĻā§āώā§āϝ āĻŦāĻŋāώāϝāĻŧā§āϰ āύāĻžāĻŽ āĻĒā§āύāϰāĻžāϝāĻŧ āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§; -
transforms.AddPrefix.replacement- āϏāϰāĻžāϏāϰāĻŋ āĻāĻŽāϰāĻž āĻāĻŋ āĻĒā§āύāϰāĻžāϝāĻŧ āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻāϰāĻŋāĨ¤
-
āĻšāĻžāϰā§āĻāĻŦāĻŋāĻ āĻāĻŦāĻ āϰā§āĻĒāĻžāύā§āϤāϰ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāϰāĻ
āĻĄāĻŋāĻĢāϞā§āĻāϰā§āĻĒā§, āϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĒā§āϰāϤāĻŋāĻļā§āϰā§āϤāĻŋāĻŦāĻĻā§āϧ āϞā§āύāĻĻā§āύā§āϰ āĻāύā§āϝ āĻāĻžāĻĢāĻāĻžāϰ āĻāĻžāĻā§ āĻĄā§āĻāĻž āĻĒāĻžāĻ āĻžāϝāĻŧ āĻāĻŦāĻ āĻĒāϰāĻŋāώā§āĻŦāĻžāϰ āĻŦāĻŋāώāϝāĻŧā§ āϤāĻžāϰ LSN (āϞāĻ āϏāĻŋāĻā§āϝāĻŧā§āύā§āϏ āύāĻŽā§āĻŦāϰ) āϞāĻŋāĻā§ āĻĻā§āϝāĻŧāĨ¤ offset. āϤāĻŦā§ āĻāĻŋ āĻšāĻŦā§ āϝāĻĻāĻŋ āϏāĻāϝā§āĻāĻāĻžāϰā§āĻāĻŋ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻĒāĻĄāĻŧāĻžāϰ āĻāύā§āϝ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ āύāĻž, āϤāĻŦā§ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āϤāĻžāϰ āĻā§āĻŦāĻŋāϞā§āϰ āĻāĻāĻāĻŋ āĻ
āĻāĻļ (āϝāĻžāϤ⧠āĻĄā§āĻāĻž āĻāĻĻāĻžāĻāĻŋā§ āĻāĻĒāĻĄā§āĻ āĻāϰāĻž āĻšāϝāĻŧ)?
- āϏāĻāϝā§āĻāĻāĻžāϰ⧠WAL āĻĢāĻžāĻāϞāĻā§āϞāĻŋ āĻĒāĻĄāĻŧāĻŦā§ āĻāĻŦāĻ āϏā§āĻā§āϞāĻŋāϰ āĻŽāϧā§āϝ⧠āϞā§āύāĻĻā§āύā§āϰ āĻĒā§āϰāϤāĻŋāĻļā§āϰā§āϤāĻŋ āϏāύāĻžāĻā§āϤ āĻāϰāĻŦā§ āύāĻž āϝ⧠āĻā§āĻŦāĻŋāϞāĻā§āϞāĻŋ āĻāĻāĻŋ āύāĻŋāϰā§āĻā§āώāĻŖ āĻāϰā§ā§ˇ
- āĻ āϤāĻāĻŦ, āĻāĻāĻŋ āĻŦāĻŋāώāϝāĻŧ āĻŦāĻž āĻĒā§āϰāϤāĻŋāϞāĻŋāĻĒāĻŋ āϏā§āϞāĻā§ āϤāĻžāϰ āĻŦāϰā§āϤāĻŽāĻžāύ āĻ āĻŦāϏā§āĻĨāĻžāύ āĻāĻĒāĻĄā§āĻ āĻāϰāĻŦā§ āύāĻžāĨ¤
- āĻāϰ āĻĢāϞā§, WAL āĻĢāĻžāĻāϞāĻā§āϞāĻŋ āĻĄāĻŋāϏā§āĻā§ "āĻāĻāĻā§" āϝāĻžāĻŦā§ āĻāĻŦāĻ āϏāĻŽā§āĻāĻŦāϤ āĻĄāĻŋāϏā§āĻā§āϰ āϏā§āĻĨāĻžāύ āĻĢā§āϰāĻŋāϝāĻŧā§ āϝāĻžāĻŦā§āĨ¤
āĻāĻŦāĻ āĻāĻāĻžāύ⧠āĻŦāĻŋāĻāϞā§āĻĒāĻā§āϞāĻŋ āĻāĻĻā§āϧāĻžāϰ āĻāϰāϤ⧠āĻāϏā§āĨ¤ heartbeat.interval.ms и heartbeat.action.query. āĻā§āĻĄāĻŧāĻžāϝāĻŧ āĻā§āĻĄāĻŧāĻžāϝāĻŧ āĻāĻ āĻŦāĻŋāĻāϞā§āĻĒāĻā§āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ āĻšāĻžāϰā§āĻāĻŦāĻŋāĻ āĻŽā§āϏā§āĻ āĻĒāĻžāĻ āĻžāύ⧠āĻšāϞ⧠āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻā§āĻŦāĻŋāϞ⧠āĻĄā§āĻāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻžāϰ āĻ
āύā§āϰā§āϧ āĻāĻžāϰā§āϝāĻāϰ āĻāϰāĻž āϏāĻŽā§āĻāĻŦ āĻāϰā§āĨ¤ āĻāĻāĻāĻžāĻŦā§, āϝ⧠LSNāĻāĻŋāϤ⧠āϏāĻāϝā§āĻāĻāĻžāϰā§āĻāĻŋ āĻŦāϰā§āϤāĻŽāĻžāύ⧠āĻ
āĻŦāϏā§āĻĨāĻŋāϤ (āĻĒā§āϰāϤāĻŋāϞāĻŋāĻĒāĻŋ āϏā§āϞāĻā§) āϤāĻž āĻā§āϰāĻŽāĻžāĻāϤ āĻāĻĒāĻĄā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻŋ DBMS āĻā§ WAL āĻĢāĻžāĻāϞāĻā§āϞāĻŋ āϏāϰāĻžāϤ⧠āĻĻā§āϝāĻŧ āϝāĻž āĻāϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āύā§āĻ⧎ āĻŦāĻŋāĻāϞā§āĻĒāĻā§āϞāĻŋ āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰ⧠āϏ⧠āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāϰāĻ āϤāĻĨā§āϝā§āϰ āĻāύā§āϝ, āĻĻā§āĻā§āύ .
āĻāύāĻŋāώā§āĻ āĻŽāύā§āϝā§āĻ āĻĒā§āϰāĻžāĻĒā§āϝ āĻāϰā§āĻāĻāĻŋ āĻŦāĻŋāĻāϞā§āĻĒ āĻšāϝāĻŧ transforms. āϝāĻĻāĻŋāĻ āĻāĻāĻŋ āϏā§āĻŦāĻŋāϧāĻž āĻāĻŦāĻ āϏā§āύā§āĻĻāϰā§āϝ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāϰāĻ ...
āĻĄāĻŋāĻĢāϞā§āĻāϰā§āĻĒā§, Debezium āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āύāĻžāĻŽāĻāϰāĻŖ āύā§āϤāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻŦāĻŋāώāϝāĻŧ āϤā§āϰāĻŋ āĻāϰā§: serverName.schemaName.tableName. āĻāĻāĻŋ āϏāĻŦāϏāĻŽāϝāĻŧ āϏā§āĻŦāĻŋāϧāĻžāĻāύāĻ āύāĻžāĻ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻ
āĻĒāĻļāύ transforms āϰā§āĻā§āϞāĻžāϰ āĻāĻā§āϏāĻĒā§āϰā§āĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āĻāĻĒāύāĻŋ āĻā§āĻŦāĻŋāϞā§āϰ āĻāĻāĻāĻŋ āϤāĻžāϞāĻŋāĻāĻž āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āϝāĻžāϰ āĻāĻā§āύā§āĻāĻā§āϞāĻŋāĻā§ āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āύāĻžāĻŽā§āϰ āϏāĻžāĻĨā§ āĻāĻāĻāĻŋ āĻŦāĻŋāώāϝāĻŧā§ āϰāĻžāĻāĻ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
āĻāĻŽāĻžāĻĻā§āϰ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āϧāύā§āϝāĻŦāĻžāĻĻ transforms āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤāĻāĻŋ āĻāĻā§: āĻā§āϰā§āϝāĻžāĻ āĻāϰāĻž āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻĨā§āĻā§ āϏāĻŽāϏā§āϤ CDC āĻāĻā§āύā§āĻ āύāĻžāĻŽ āϏāĻš āĻāĻĒāĻŋāĻā§ āϝāĻžāĻŦā§ data.cdc.dbname. āĻ
āύā§āϝāĻĨāĻžāϝāĻŧ (āĻāĻ āϏā§āĻāĻŋāĻāϏ āĻāĻžāĻĄāĻŧāĻž), Debezium āĻĄāĻŋāĻĢāϞā§āĻāϰā§āĻĒā§ āĻĢāϰā§āĻŽā§āϰ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻā§āĻŦāĻŋāϞā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻŦāĻŋāώāϝāĻŧ āϤā§āϰāĻŋ āĻāϰāĻŦā§: pg-dev.public.<table_name>.
āϏāĻāϝā§āĻāĻāĻžāϰā§āϰ āϏā§āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž
PostgreSQL āĻāϰ āĻāύā§āϝ āϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύā§āϰ āĻŦāϰā§āĻŖāύāĻžāϰ āĻļā§āώā§, āĻāĻāĻŋāϰ āĻāĻžāĻā§āϰ āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ / āϏā§āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāĻĨāĻž āĻŦāϞāĻž āĻŽā§āϞā§āϝāĻŦāĻžāύ:
- PostgreSQL-āĻāϰ āϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻāĻžāϰā§āϝāĻāĻžāϰāĻŋāϤāĻž āϞāĻāĻŋāĻā§āϝāĻžāϞ āĻĄāĻŋāĻā§āĻĄāĻŋāĻāϝāĻŧā§āϰ āϧāĻžāϰāĻŖāĻžāϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰā§āĨ¤ āϤāĻžāĻ āϏ⧠āĻĄāĻžāĻāĻžāĻŦā§āϏā§āϰ āĻāĻ āύ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻžāϰ āĻ āύā§āϰā§āϧ āĻā§āϰā§āϝāĻžāĻ āĻāϰ⧠āύāĻž (DDL) - āϏā§āĻ āĻ āύā§āϝāĻžāϝāĻŧā§, āĻāĻ āĻĄā§āĻāĻž āĻŦāĻŋāώāϝāĻŧāĻā§āϞāĻŋāϤ⧠āĻĨāĻžāĻāĻŦā§ āύāĻžāĨ¤
- āϝā§āĻšā§āϤ⧠āĻĒā§āϰāϤāĻŋāϞāĻŋāĻĒāĻŋ āϏā§āϞāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ, āϏāĻāϝā§āĻāĻāĻžāϰā§āϰ āϏāĻāϝā§āĻ āϏāĻŽā§āĻāĻŦ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻŽāĻžāϏā§āĻāĻžāϰ āĻĄāĻŋāĻŦāĻŋāĻāĻŽāĻāϏ āĻāĻĻāĻžāĻšāϰāĻŖā§āĨ¤
- āĻĄāĻžāĻāĻžāĻŦā§āϏā§āϰ āϏāĻžāĻĨā§ āϏāĻāϝā§āĻāĻāĻžāϰ⧠āϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āϝāĻĻāĻŋ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻĒāĻĄāĻŧāĻžāϰ āĻ āϧāĻŋāĻāĻžāϰ āĻĨāĻžāĻā§, āϤāĻžāĻšāϞ⧠āĻĒā§āϰāĻĨāĻŽ āϞāĻā§āĻā§āϰ āĻāĻā§, āĻāĻĒāύāĻžāĻā§ āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ āĻāĻāĻāĻŋ āĻĒā§āϰāϤāĻŋāϞāĻŋāĻĒāĻŋ āϏā§āϞāĻ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻšāĻŦā§ āĻāĻŦāĻ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āĻĒā§āϰāĻāĻžāĻļ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
āĻāĻāĻāĻŋ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰāĻž āĻšāĻā§āĻā§
āϤāĻžāĻšāϞ⧠āĻāϏā§āύ āĻāĻŽāĻžāĻĻā§āϰ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύāĻāĻŋ āϏāĻāϝā§āĻāĻāĻžāϰā§āϤ⧠āϞā§āĻĄ āĻāϰāĻŋ:
curl -i -X POST -H "Accept:application/json"
-H "Content-Type:application/json" http://localhost:8083/connectors/
-d @pg-con.jsonāĻāĻŽāϰāĻž āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻŋ āϝ⧠āĻĄāĻžāĻāύāϞā§āĻĄ āϏāĻĢāϞ āĻšāϝāĻŧā§āĻā§ āĻāĻŦāĻ āϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻļā§āϰ⧠āĻšāϝāĻŧā§āĻā§:
$ curl -i http://localhost:8083/connectors/pg-connector/status
HTTP/1.1 200 OK
Date: Thu, 17 Sep 2020 20:19:40 GMT
Content-Type: application/json
Content-Length: 175
Server: Jetty(9.4.20.v20190813)
{"name":"pg-connector","connector":{"state":"RUNNING","worker_id":"172.24.0.5:8083"},"tasks":[{"id":0,"state":"RUNNING","worker_id":"172.24.0.5:8083"}],"type":"source"}āĻĻā§āϰā§āĻĻāĻžāύā§āϤ: āĻāĻāĻŋ āϏā§āĻ āĻāĻĒ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āĻāĻŦāĻ āϝā§āϤ⧠āĻĒā§āϰāϏā§āϤā§āϤ⧎ āĻāĻāύ āĻāϏā§āύ āĻāĻāĻāύ āĻā§āĻā§āϤāĻž āĻšāĻāϝāĻŧāĻžāϰ āĻāĻžāύ āĻāϰāĻŋ āĻāĻŦāĻ āĻāĻžāĻĢāĻāĻžāϰ āϏāĻžāĻĨā§ āϏāĻāϝā§āĻ āĻāϰāĻŋ, āϤāĻžāϰāĻĒāϰ⧠āĻāĻŽāϰāĻž āĻā§āĻŦāĻŋāϞ⧠āĻāĻāĻāĻŋ āĻāύā§āĻā§āϰāĻŋ āϝā§āĻ āĻāϰāĻŋ āĻāĻŦāĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻŋ:
$ kafka/bin/kafka-console-consumer.sh
--bootstrap-server kafka:9092
--from-beginning
--property print.key=true
--topic data.cdc.dbname
postgres=# insert into customers (id, first_name, last_name, email) values (1005, 'foo', 'bar', 'foo@bar.com');
INSERT 0 1
postgres=# update customers set first_name = 'egg' where id = 1005;
UPDATE 1āĻāĻŽāĻžāĻĻā§āϰ āĻŦāĻŋāώāϝāĻŧā§, āĻāĻāĻŋ āύāĻŋāĻŽā§āύāϰā§āĻĒ āĻĒā§āϰāĻĻāϰā§āĻļāĻŋāϤ āĻšāĻŦā§:
āĻāĻŽāĻžāĻĻā§āϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϰ āϏāĻžāĻĨā§ āĻā§āĻŦ āĻĻā§āϰā§āĻ JSON
{
"schema":{
"type":"struct",
"fields":[
{
"type":"int32",
"optional":false,
"field":"id"
}
],
"optional":false,
"name":"data.cdc.dbname.Key"
},
"payload":{
"id":1005
}
}{
"schema":{
"type":"struct",
"fields":[
{
"type":"struct",
"fields":[
{
"type":"int32",
"optional":false,
"field":"id"
},
{
"type":"string",
"optional":false,
"field":"first_name"
},
{
"type":"string",
"optional":false,
"field":"last_name"
},
{
"type":"string",
"optional":false,
"field":"email"
}
],
"optional":true,
"name":"data.cdc.dbname.Value",
"field":"before"
},
{
"type":"struct",
"fields":[
{
"type":"int32",
"optional":false,
"field":"id"
},
{
"type":"string",
"optional":false,
"field":"first_name"
},
{
"type":"string",
"optional":false,
"field":"last_name"
},
{
"type":"string",
"optional":false,
"field":"email"
}
],
"optional":true,
"name":"data.cdc.dbname.Value",
"field":"after"
},
{
"type":"struct",
"fields":[
{
"type":"string",
"optional":false,
"field":"version"
},
{
"type":"string",
"optional":false,
"field":"connector"
},
{
"type":"string",
"optional":false,
"field":"name"
},
{
"type":"int64",
"optional":false,
"field":"ts_ms"
},
{
"type":"string",
"optional":true,
"name":"io.debezium.data.Enum",
"version":1,
"parameters":{
"allowed":"true,last,false"
},
"default":"false",
"field":"snapshot"
},
{
"type":"string",
"optional":false,
"field":"db"
},
{
"type":"string",
"optional":false,
"field":"schema"
},
{
"type":"string",
"optional":false,
"field":"table"
},
{
"type":"int64",
"optional":true,
"field":"txId"
},
{
"type":"int64",
"optional":true,
"field":"lsn"
},
{
"type":"int64",
"optional":true,
"field":"xmin"
}
],
"optional":false,
"name":"io.debezium.connector.postgresql.Source",
"field":"source"
},
{
"type":"string",
"optional":false,
"field":"op"
},
{
"type":"int64",
"optional":true,
"field":"ts_ms"
},
{
"type":"struct",
"fields":[
{
"type":"string",
"optional":false,
"field":"id"
},
{
"type":"int64",
"optional":false,
"field":"total_order"
},
{
"type":"int64",
"optional":false,
"field":"data_collection_order"
}
],
"optional":true,
"field":"transaction"
}
],
"optional":false,
"name":"data.cdc.dbname.Envelope"
},
"payload":{
"before":null,
"after":{
"id":1005,
"first_name":"foo",
"last_name":"bar",
"email":"foo@bar.com"
},
"source":{
"version":"1.2.3.Final",
"connector":"postgresql",
"name":"dbserver1",
"ts_ms":1600374991648,
"snapshot":"false",
"db":"postgres",
"schema":"public",
"table":"customers",
"txId":602,
"lsn":34088472,
"xmin":null
},
"op":"c",
"ts_ms":1600374991762,
"transaction":null
}
}{
"schema":{
"type":"struct",
"fields":[
{
"type":"int32",
"optional":false,
"field":"id"
}
],
"optional":false,
"name":"data.cdc.dbname.Key"
},
"payload":{
"id":1005
}
}{
"schema":{
"type":"struct",
"fields":[
{
"type":"struct",
"fields":[
{
"type":"int32",
"optional":false,
"field":"id"
},
{
"type":"string",
"optional":false,
"field":"first_name"
},
{
"type":"string",
"optional":false,
"field":"last_name"
},
{
"type":"string",
"optional":false,
"field":"email"
}
],
"optional":true,
"name":"data.cdc.dbname.Value",
"field":"before"
},
{
"type":"struct",
"fields":[
{
"type":"int32",
"optional":false,
"field":"id"
},
{
"type":"string",
"optional":false,
"field":"first_name"
},
{
"type":"string",
"optional":false,
"field":"last_name"
},
{
"type":"string",
"optional":false,
"field":"email"
}
],
"optional":true,
"name":"data.cdc.dbname.Value",
"field":"after"
},
{
"type":"struct",
"fields":[
{
"type":"string",
"optional":false,
"field":"version"
},
{
"type":"string",
"optional":false,
"field":"connector"
},
{
"type":"string",
"optional":false,
"field":"name"
},
{
"type":"int64",
"optional":false,
"field":"ts_ms"
},
{
"type":"string",
"optional":true,
"name":"io.debezium.data.Enum",
"version":1,
"parameters":{
"allowed":"true,last,false"
},
"default":"false",
"field":"snapshot"
},
{
"type":"string",
"optional":false,
"field":"db"
},
{
"type":"string",
"optional":false,
"field":"schema"
},
{
"type":"string",
"optional":false,
"field":"table"
},
{
"type":"int64",
"optional":true,
"field":"txId"
},
{
"type":"int64",
"optional":true,
"field":"lsn"
},
{
"type":"int64",
"optional":true,
"field":"xmin"
}
],
"optional":false,
"name":"io.debezium.connector.postgresql.Source",
"field":"source"
},
{
"type":"string",
"optional":false,
"field":"op"
},
{
"type":"int64",
"optional":true,
"field":"ts_ms"
},
{
"type":"struct",
"fields":[
{
"type":"string",
"optional":false,
"field":"id"
},
{
"type":"int64",
"optional":false,
"field":"total_order"
},
{
"type":"int64",
"optional":false,
"field":"data_collection_order"
}
],
"optional":true,
"field":"transaction"
}
],
"optional":false,
"name":"data.cdc.dbname.Envelope"
},
"payload":{
"before":{
"id":1005,
"first_name":"foo",
"last_name":"bar",
"email":"foo@bar.com"
},
"after":{
"id":1005,
"first_name":"egg",
"last_name":"bar",
"email":"foo@bar.com"
},
"source":{
"version":"1.2.3.Final",
"connector":"postgresql",
"name":"dbserver1",
"ts_ms":1600375609365,
"snapshot":"false",
"db":"postgres",
"schema":"public",
"table":"customers",
"txId":603,
"lsn":34089688,
"xmin":null
},
"op":"u",
"ts_ms":1600375609778,
"transaction":null
}
}āĻāĻāϝāĻŧ āĻā§āώā§āϤā§āϰā§āĻ, āϰā§āĻāϰā§āĻĄāĻā§āϞāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻž āϰā§āĻāϰā§āĻĄā§āϰ āĻā§ (PK) āĻāĻŦāĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϰ āϏāĻžāϰāĻžāĻāĻļ āύāĻŋāϝāĻŧā§ āĻāĻ āĻŋāϤ: āϰā§āĻāϰā§āĻĄāĻāĻŋ āĻāĻā§ āĻā§ āĻāĻŋāϞ āĻāĻŦāĻ āĻĒāϰ⧠āĻā§ āĻšāϝāĻŧā§āĻāĻŋāϞ⧎
- āĻā§āώā§āϤā§āϰā§
INSERT: āĻŽāĻžāύ āĻāĻā§ (before) āϏāĻŽāĻžāύnullāĻĸā§āĻāĻžāύ⧠āĻšāϝāĻŧā§āĻā§ āϝ⧠āϏā§āĻā§āϰāĻŋāĻ āĻĻā§āĻŦāĻžāϰāĻž āĻ āύā§āϏāϰāĻŖ. - āĻā§āώā§āϤā§āϰā§
UPDATE: āĻpayload.beforeāϏāĻžāϰāĻŋāϰ āĻĒā§āϰā§āĻŦāĻŦāϰā§āϤ⧠āĻ āĻŦāϏā§āĻĨāĻž āĻĒā§āϰāĻĻāϰā§āĻļāĻŋāϤ āĻšāϝāĻŧ, āĻāĻŦāĻ āĻŽāϧā§āϝā§payload.after- āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϰ āϏāĻžāϰāĻžāĻāĻļ āϏāĻš āύāϤā§āύāĨ¤
2.2 āĻŽāĻā§āĻā§āĻĄāĻŋāĻŦāĻŋ
āĻāĻ āϏāĻāϝā§āĻāĻāĻžāϰā§āĻāĻŋ DBMS āĻĒā§āϰāĻžāĻāĻŽāĻžāϰāĻŋ āύā§āĻĄā§āϰ āĻ āĻĒāϞāĻ āĻĨā§āĻā§ āϤāĻĨā§āϝ āĻĒāĻĄāĻŧāĻž āϏā§āĻā§āϝāĻžāύā§āĻĄāĻžāϰā§āĻĄ MongoDB āϰā§āĻĒā§āϞāĻŋāĻā§āĻļāύ āĻŽā§āĻāĻžāύāĻŋāĻāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤
āĻāĻāĻāĻāĻžāĻŦā§ PgSQL-āĻāϰ āĻāύā§āϝ āĻāϤāĻŋāĻŽāϧā§āϝ⧠āĻŦāϰā§āĻŖāĻŋāϤ āϏāĻāϝā§āĻāĻāĻžāϰā§āϰ āĻŽāϤā§, āĻāĻāĻžāύā§āĻ, āĻĒā§āϰāĻĨāĻŽ āĻļā§āϰā§āϤā§, āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ āĻĄā§āĻāĻž āϏā§āύā§āϝāĻžāĻĒāĻļāĻ āύā§āĻāϝāĻŧāĻž āĻšāϝāĻŧ, āϤāĻžāϰāĻĒāϰ⧠āϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻ āĻĒāϞāĻ āϰāĻŋāĻĄāĻŋāĻ āĻŽā§āĻĄā§ āϏā§āϝā§āĻāĻ āĻāϰā§āĨ¤
āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻāĻĻāĻžāĻšāϰāĻŖ:
{
"name": "mp-k8s-mongo-connector",
"config": {
"connector.class": "io.debezium.connector.mongodb.MongoDbConnector",
"tasks.max": "1",
"mongodb.hosts": "MainRepSet/mongo:27017",
"mongodb.name": "mongo",
"mongodb.user": "debezium",
"mongodb.password": "dbname",
"database.whitelist": "db_1,db_2",
"transforms": "AddPrefix",
"transforms.AddPrefix.type": "org.apache.kafka.connect.transforms.RegexRouter",
"transforms.AddPrefix.regex": "mongo.([a-zA-Z_0-9]*).([a-zA-Z_0-9]*)",
"transforms.AddPrefix.replacement": "data.cdc.mongo_$1"
}
}āĻāĻĒāύāĻŋ āĻĻā§āĻāϤ⧠āĻĒāĻžāĻā§āĻā§āύ, āĻĒā§āϰā§āĻŦāĻŦāϰā§āϤ⧠āĻāĻĻāĻžāĻšāϰāĻŖā§āϰ āϤā§āϞāύāĻžāϝāĻŧ āĻā§āύ āύāϤā§āύ āĻŦāĻŋāĻāϞā§āĻĒ āύā§āĻ, āϤāĻŦā§ āĻĄāĻžāĻāĻžāĻŦā§āϏā§āϰ āϏāĻžāĻĨā§ āϏāĻāϝā§āĻ āĻāϰāĻžāϰ āĻāύā§āϝ āĻĻāĻžāϝāĻŧā§ āĻŦāĻŋāĻāϞā§āĻĒāĻā§āϞāĻŋāϰ āϏāĻāĻā§āϝāĻž āĻāĻŦāĻ āϤāĻžāĻĻā§āϰ āĻāĻĒāϏāϰā§āĻāĻā§āϞāĻŋ āĻšā§āϰāĻžāϏ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤
āϏā§āĻāĻŋāĻāϏ transforms āĻāĻ āϏāĻŽāϝāĻŧ āϤāĻžāϰāĻž āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻāĻžāĻ āĻāϰā§: āϏā§āĻāĻŋāĻŽ āĻĨā§āĻā§ āĻāĻžāϰā§āĻā§āĻ āĻŦāĻŋāώāϝāĻŧā§āϰ āύāĻžāĻŽ āĻāĻžāϞ⧠āĻāϰā§āύ <server_name>.<db_name>.<collection_name> в data.cdc.mongo_<db_name>.
āĻĻā§āώ āϏāĻšāύāĻļā§āϞāϤāĻž
āĻāĻŽāĻžāĻĻā§āϰ āϏāĻŽāϝāĻŧā§ āϤā§āϰā§āĻāĻŋ āϏāĻšāύāĻļā§āϞāϤāĻž āĻāĻŦāĻ āĻāĻā§āĻ āĻĒā§āϰāĻžāĻĒā§āϝāϤāĻžāϰ āϏāĻŽāϏā§āϝāĻžāĻāĻŋ āĻāĻā§āϰ āĻā§āϝāĻŧā§ āĻāϰāĻ āϤā§āĻŦā§āϰ - āĻŦāĻŋāĻļā§āώāϤ āϝāĻāύ āĻāĻŽāϰāĻž āĻĄā§āĻāĻž āĻāĻŦāĻ āϞā§āύāĻĻā§āύ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāĻĨāĻž āĻŦāϞāĻŋ āĻāĻŦāĻ āĻĄā§āĻāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻā§āϰā§āϝāĻžāĻāĻŋāĻ āĻāĻ āĻā§āώā§āϤā§āϰ⧠āϏāĻžāĻāĻĄāϞāĻžāĻāύ⧠āύā§āĻāĨ¤ āĻāϏā§āύ āύā§āϤāĻŋāĻāϤāĻāĻžāĻŦā§ āĻā§ āĻā§āϞ āĻšāϤ⧠āĻĒāĻžāϰ⧠āĻāĻŦāĻ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻā§āώā§āϤā§āϰ⧠āĻĄā§āĻŦā§āĻāĻŋāϝāĻŧāĻžāĻŽā§āϰ āĻā§ āĻšāĻŦā§ āϤāĻž āĻĻā§āĻā§āύāĨ¤
āϤāĻŋāύāĻāĻŋ āĻ āĻĒā§āĻ-āĻāĻāĻ āĻŦāĻŋāĻāϞā§āĻĒ āĻāĻā§:
- āĻāĻžāĻĢāĻāĻž āϏāĻāϝā§āĻ āĻŦā§āϝāϰā§āĻĨāϤāĻž. āϝāĻĻāĻŋ āĻāĻžāύā§āĻā§āĻ āĻĄāĻŋāϏā§āĻā§āϰāĻŋāĻŦāĻŋāĻāĻā§āĻĄ āĻŽā§āĻĄā§ āĻāĻžāĻ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰāĻž āĻĨāĻžāĻā§, āϤāĻžāĻšāϞ⧠āĻāĻāĻ group.id āϏā§āĻ āĻāϰāϤ⧠āĻāĻāĻžāϧāĻŋāĻ āĻāϰā§āĻŽā§āĻĻā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύāĨ¤ āϤāĻžāϰāĻĒāϰ, āϝāĻĻāĻŋ āϤāĻžāĻĻā§āϰ āĻŽāϧā§āϝ⧠āĻāĻāĻāĻŋ āĻŦā§āϝāϰā§āĻĨ āĻšāϝāĻŧ, āϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻ āύā§āϝ āĻāϰā§āĻŽā§āϰ āĻāĻĒāϰ āĻĒā§āύāϰāĻžāϝāĻŧ āĻāĻžāϞ⧠āĻšāĻŦā§ āĻāĻŦāĻ Kafka āĻŦāĻŋāώāϝāĻŧā§āϰ āĻļā§āώ āĻĒā§āϰāϤāĻŋāĻļā§āϰā§āϤāĻŋāĻŦāĻĻā§āϧ āĻ āĻŦāϏā§āĻĨāĻžāύ āĻĨā§āĻā§ āĻĒāĻĄāĻŧāĻž āĻāĻžāϞāĻŋāϝāĻŧā§ āϝāĻžāĻŦā§āĨ¤
- āĻāĻžāĻĢāĻāĻž āĻā§āϞāĻžāϏā§āĻāĻžāϰā§āϰ āϏāĻžāĻĨā§ āϏāĻāϝā§āĻ āĻŦāĻŋāĻā§āĻāĻŋāύā§āύ. āϏāĻāϝā§āĻāĻāĻžāϰā§āĻāĻŋ āĻāĻžāĻĢāĻāĻžāĻā§ āĻĒāĻžāĻ āĻžāϤ⧠āĻŦā§āϝāϰā§āĻĨ āĻšāĻāϝāĻŧāĻž āĻ āĻŦāϏā§āĻĨāĻžāύ⧠āĻĒāĻĄāĻŧāĻž āĻŦāύā§āϧ āĻāϰāĻŦā§ āĻāĻŦāĻ āĻĒā§āϰāĻā§āώā§āĻāĻž āϏāĻĢāϞ āύāĻž āĻšāĻāϝāĻŧāĻž āĻĒāϰā§āϝāύā§āϤ āĻĒāϰā§āϝāĻžāϝāĻŧāĻā§āϰāĻŽā§ āĻāĻāĻŋ āĻĒā§āύāϰāĻžāϝāĻŧ āĻĒāĻžāĻ āĻžāύā§āϰ āĻā§āώā§āĻāĻž āĻāϰāĻŦā§āĨ¤
- āĻĄā§āĻāĻž āĻā§āϏ āĻ
āύā§āĻĒāϞāĻŦā§āϧ. āϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻ
āύā§āϝāĻžāϝāĻŧā§ āĻā§āϏā§āϰ āϏāĻžāĻĨā§ āĻĒā§āύāϰāĻžāϝāĻŧ āϏāĻāϝā§āĻ āĻāϰāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰāĻŦā§āĨ¤ āĻĄāĻŋāĻĢāϞā§āĻ āĻšāϞ 16āĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻĒā§āϰāĻā§āώā§āĻāĻž . 16 āϤāĻŽ āĻŦā§āϝāϰā§āĻĨ āĻĒā§āϰāĻā§āώā§āĻāĻžāϰ āĻĒāϰā§, āĻāĻžāϏā§āĻāĻāĻŋ āĻšāĻŋāϏāĻžāĻŦā§ āĻāĻŋāĻšā§āύāĻŋāϤ āĻāϰāĻž āĻšāĻŦā§ā§ˇ āĻŦā§āϝāϰā§āĻĨ āĻāĻŦāĻ āĻāĻāĻŋ āĻāĻžāĻĢāĻāĻž āĻāĻžāύā§āĻā§āĻ REST āĻāύā§āĻāĻžāϰāĻĢā§āϏā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ āϰāĻŋāϏā§āĻāĻžāϰā§āĻ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
- āĻā§āώā§āϤā§āϰ⧠āĻĒā§āϏā§āĻāĻā§āϰāĻŋ āĻĄā§āĻāĻž āĻšāĻžāϰāĻŋāϝāĻŧā§ āϝāĻžāĻŦā§ āύāĻž, āĻāĻžāϰāĻŖ āĻĒā§āϰāϤāĻŋāϞāĻŋāĻĒāĻŋ āϏā§āϞāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻĻā§āĻŦāĻžāϰāĻž āĻĒāĻĄāĻŧāĻž āĻšāϝāĻŧāύāĻŋ āĻāĻŽāύ WAL āĻĢāĻžāĻāϞ āĻŽā§āĻā§ āĻĢā§āϞāĻž āĻĒā§āϰāϤāĻŋāϰā§āϧ āĻāϰāĻŦā§āĨ¤ āĻāĻ āĻā§āώā§āϤā§āϰā§, āĻāĻāĻāĻŋ āύā§āϤāĻŋāĻŦāĻžāĻāĻ āĻĻāĻŋāĻ āϰāϝāĻŧā§āĻā§: āϝāĻĻāĻŋ āϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻāĻŦāĻ DBMS-āĻāϰ āĻŽāϧā§āϝ⧠āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ āϏāĻāϝā§āĻ āĻĻā§āϰā§āĻ āϏāĻŽāϝāĻŧā§āϰ āĻāύā§āϝ āĻŦā§āϝāĻžāĻšāϤ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧠āĻĄāĻŋāϏā§āĻā§āϰ āϏā§āĻĨāĻžāύ āĻĢā§āϰāĻŋāϝāĻŧā§ āϝāĻžāĻāϝāĻŧāĻžāϰ āϏāĻŽā§āĻāĻžāĻŦāύāĻž āϰāϝāĻŧā§āĻā§ āĻāĻŦāĻ āĻāĻāĻŋ āϏāĻŽā§āĻĒā§āϰā§āĻŖ DBMS-āĻāϰ āĻŦā§āϝāϰā§āĻĨāϤāĻžāϰ āĻĻāĻŋāĻā§ āύāĻŋāϝāĻŧā§ āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
- āĻā§āώā§āϤā§āϰ⧠āĻŽāĻžāĻāĻāϏāĻāĻŋāĻāĻāϞ āϏāĻāϝā§āĻ āĻĒā§āύāϰā§āĻĻā§āϧāĻžāϰ āĻāϰāĻžāϰ āĻāĻā§ binlog āĻĢāĻžāĻāϞāĻā§āϞāĻŋ DBMS āύāĻŋāĻā§āĻ āĻā§āϰāĻžāύ⧠āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāϰ āĻĢāϞ⧠āϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻŦā§āϝāϰā§āĻĨ āĻ āĻŦāϏā§āĻĨāĻžāϝāĻŧ āĻāϞ⧠āϝāĻžāĻŦā§ āĻāĻŦāĻ āϏā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻā§āϰāĻŋāϝāĻŧāĻžāĻāϞāĻžāĻĒ āĻĒā§āύāϰā§āĻĻā§āϧāĻžāϰ āĻāϰāϤ⧠āĻŦāĻŋāύāϞāĻ āĻĨā§āĻā§ āĻĒāĻĄāĻŧāĻž āĻāĻžāϞāĻŋāϝāĻŧā§ āϝā§āϤ⧠āĻāĻāĻŋāĻā§ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ āϏā§āύā§āϝāĻžāĻĒāĻļāĻ āĻŽā§āĻĄā§ āĻĒā§āύāϰāĻžāϝāĻŧ āĻāĻžāϞ⧠āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
- āĻāĻĒāϰ MongoDB. āĻĄāĻā§āĻŽā§āύā§āĻā§āĻļāύ⧠āĻŦāϞāĻž āĻšāϝāĻŧā§āĻā§: āϞāĻ/āĻ
āĻĒāϞāĻ āĻĢāĻžāĻāϞāĻā§āϞāĻŋ āĻŽā§āĻā§ āĻĢā§āϞāĻžāϰ āĻā§āώā§āϤā§āϰ⧠āϏāĻāϝā§āĻāĻāĻžāϰā§āϰ āĻāĻāϰāĻŖ āĻāĻŦāĻ āϏāĻāϝā§āĻāĻāĻžāϰ⧠āϝ⧠āĻ
āĻŦāϏā§āĻĨāĻžāύ āĻĨā§āĻā§ āĻĒāĻĄāĻŧāĻž āĻāĻžāϞāĻŋāϝāĻŧā§ āϝā§āϤ⧠āĻĒāĻžāϰ⧠āύāĻž āϤāĻž āϏāĻŦ DBMS-āĻāϰ āĻāύā§āϝ āĻāĻāĻāĨ¤ āĻāĻāĻž āϏāϤā§āϝ āϝ⧠āϏāĻāϝā§āĻāĻāĻžāϰ⧠āϰāĻžāώā§āĻā§āϰ āϝā§āϤ⧠āĻšāĻŦā§ āĻŦā§āϝāϰā§āĻĨ āĻāĻŦāĻ āĻŽā§āĻĄā§ āĻāĻāĻāĻŋ āĻĒā§āύāϰāĻžāϝāĻŧ āĻāĻžāϞ⧠āĻāϰāϤ⧠āĻšāĻŦā§ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ āϏā§āύā§āϝāĻžāĻĒāĻļāĻ.
āϝāĻžāĻāĻšā§āĻ, āĻŦā§āϝāϤāĻŋāĻā§āϰāĻŽ āĻāĻā§. āϝāĻĻāĻŋ āϏāĻāϝā§āĻāĻāĻžāϰā§āĻāĻŋ āĻĻā§āϰā§āĻ āϏāĻŽāϝāĻŧā§āϰ āĻāύā§āϝ āϏāĻāϝā§āĻ āĻŦāĻŋāĻā§āĻāĻŋāύā§āύ āĻ āĻŦāϏā§āĻĨāĻžāϝāĻŧ āĻĨāĻžāĻā§ (āĻŦāĻž āĻŽāĻā§āĻā§āĻĄāĻŋāĻŦāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖā§ āĻĒā§āĻāĻāĻžāϤ⧠āĻĒāĻžāϰā§āύāĻŋ), āĻāĻŦāĻ āĻāĻ āϏāĻŽāϝāĻŧā§ āĻ āĻĒāϞāĻāĻāĻŋ āĻā§āϰāĻžāύ⧠āĻšāϝāĻŧā§āĻāĻŋāϞ, āϤāĻāύ āϏāĻāϝā§āĻāĻāĻŋ āĻĒā§āύāϰā§āĻĻā§āϧāĻžāϰ āĻāϰāĻž āĻšāϞā§, āϏāĻāϝā§āĻāĻāĻžāϰ⧠āĻļāĻžāύā§āϤāĻāĻžāĻŦā§ āĻĒā§āϰāĻĨāĻŽ āĻāĻĒāϞāĻŦā§āϧ āĻ āĻŦāϏā§āĻĨāĻžāύ āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻĒāĻĄāĻŧāϤ⧠āĻĨāĻžāĻāĻŦā§āĨ¤ , āϝ⧠āĻāĻžāϰāĻŖā§ āĻāĻžāĻĢāĻāĻžāϰ āĻāĻŋāĻā§ āϤāĻĨā§āϝ āύāĻž āĻāĻāĻžāϤ āĻāϰāĻŦā§
āĻāĻĒāϏāĻāĻšāĻžāϰ
Debezium āĻšāϞ CDC āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āϏāĻžāĻĨā§ āĻāĻŽāĻžāϰ āĻĒā§āϰāĻĨāĻŽ āĻ āĻāĻŋāĻā§āĻāϤāĻž āĻāĻŦāĻ āϏāĻžāĻŽāĻā§āϰāĻŋāĻāĻāĻžāĻŦā§ āĻā§āĻŦāĻ āĻāϤāĻŋāĻŦāĻžāĻāĻāĨ¤ āĻĒā§āϰāĻāϞā§āĻĒāĻāĻŋ āĻĒā§āϰāϧāĻžāύ DBMS-āĻāϰ āϏāĻŽāϰā§āĻĨāύ, āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύā§āϰ āϏāĻšāĻāϤāĻž, āĻā§āϞāĻžāϏā§āĻāĻžāϰāĻŋāĻāϝāĻŧā§āϰ āĻāύā§āϝ āϏāĻŽāϰā§āĻĨāύ āĻāĻŦāĻ āĻāĻāĻāĻŋ āϏāĻā§āϰāĻŋāϝāĻŧ āϏāĻŽā§āĻĒā§āϰāĻĻāĻžāϝāĻŧāĻā§ āĻā§āώ āĻĻāĻŋāϝāĻŧā§āĻā§āĨ¤ āĻ āύā§āĻļā§āϞāύ⧠āĻāĻā§āϰāĻšā§āĻĻā§āϰ āĻāύā§āϝ, āĻāĻŽāĻŋ āϏā§āĻĒāĻžāϰāĻŋāĻļ āĻāϰāĻāĻŋ āϝ⧠āĻāĻĒāύāĻŋ āĻāĻžāĻāĻĄāĻā§āϞāĻŋ āĻĒāĻĄāĻŧā§āύ и .
āĻāĻžāĻĢāĻāĻž āϏāĻāϝā§āĻā§āϰ āĻāύā§āϝ JDBC āϏāĻāϝā§āĻāĻāĻžāϰā§āϰ āϤā§āϞāύāĻžāϝāĻŧ, Debezium-āĻāϰ āĻĒā§āϰāϧāĻžāύ āϏā§āĻŦāĻŋāϧāĻž āĻšāϞ āϝ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻā§āϞāĻŋ DBMS āϞāĻāĻā§āϞāĻŋ āĻĨā§āĻā§ āĻĒāĻĄāĻŧāĻž āĻšāϝāĻŧ, āϝāĻž āύā§āϝā§āύāϤāĻŽ āĻŦāĻŋāϞāĻŽā§āĻŦā§āϰ āϏāĻžāĻĨā§ āĻĄā§āĻāĻž āĻā§āϰāĻšāĻŖ āĻāϰāĻžāϰ āĻ āύā§āĻŽāϤāĻŋ āĻĻā§āϝāĻŧāĨ¤ JDBC āϏāĻāϝā§āĻāĻāĻžāϰ⧠(āĻāĻžāĻĢāĻāĻž āĻāĻžāύā§āĻā§āĻ āĻĻā§āĻŦāĻžāϰāĻž āϏāϰāĻŦāϰāĻžāĻš āĻāϰāĻž) āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻŦā§āϝāĻŦāϧāĻžāύ⧠āĻā§āϰā§āϝāĻžāĻ āĻāϰāĻž āĻā§āĻŦāĻŋāϞāĻāĻŋ āĻāĻŋāĻā§āĻāĻžāϏāĻž āĻāϰ⧠āĻāĻŦāĻ (āĻāĻāĻ āĻāĻžāϰāĻŖā§) āĻĄā§āĻāĻž āĻŽā§āĻā§ āĻĢā§āϞāĻžāϰ āϏāĻŽāϝāĻŧ āĻŦāĻžāϰā§āϤāĻž āϤā§āϰāĻŋ āĻāϰ⧠āύāĻž (āϝā§āĻāĻŋ āύā§āĻ āĻāĻŽāύ āĻĄā§āĻāĻžāϰ āĻāύā§āϝ āĻāĻĒāύāĻŋ āĻā§āĻāĻžāĻŦā§ āĻ āύā§āϏāύā§āϧāĻžāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ?)āĨ¤
āĻ āύā§āϰā§āĻĒ āϏāĻŽāϏā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύā§āϰ āĻāύā§āϝ, āĻāĻĒāύāĻŋ āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āϏāĻŽāĻžāϧāĻžāύāĻā§āϞāĻŋāϤ⧠āĻŽāύā§āϝā§āĻ āĻĻāĻŋāϤ⧠āĻĒāĻžāϰā§āύ (āĻĄā§āĻŦā§āĻāĻŋāϝāĻŧāĻžāĻŽ āĻāĻžāĻĄāĻŧāĻžāĻ):
- āĻāĻŋāĻā§ MySQL-āĻļā§āϧ⧠āϏāĻŽāĻžāϧāĻžāύ:
- , āĻāĻŋāύā§āϤ⧠āĻāĻāĻŋ āĻāĻāĻāĻŋ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻāĻŋāύā§āύ "āĻāĻāύ āĻŦāĻŋāĻāĻžāĻ"āĨ¤
āĻĻā§āϰāώā§āĻāĻŦā§āϝ
āĻāĻŽāĻžāĻĻā§āϰ āĻŦā§āϞāĻā§āĻ āĻĒāĻĄāĻŧā§āύ:
- ÂĢ";
- ÂĢ";
- ÂĢÂģ.
āĻāϤā§āϏ: www.habr.com
