PostgreSQL CDC Kafka con Debezium

  1. 安装 JDK
    - # tar zxvf jdk-8u281-linux-x64.tar.gz -C / opt /
    - # vi / etc / profile
    - #### zookeeper ####
    export JAVA_HOME = / opt / jdk1.8.0_281
    export CLASSPATH = $ JAVA_HOME / jre / lib: $ JAVA_HOME / lib
    export PATH = $ JAVA_HOME / bin: $ PATH

- # source / etc / profile
- # java -version
java versión "1.8.0_281"
Java (TM) SE Runtime Environment (compilación 1.8.0_281-b09)
Java HotSpot (TM) 64-Bit Server VM (compilación 25.281-b09, modo mixto)
- #

  1. Kafka

- # tar zxvf kafka_2.13-2.7.0.tgz -C / opt /
- # cd /opt/kafka_2.13-2.7.0/config

- # vi / etc / profile

- #### zookeeper ####
export JAVA_HOME = / opt / jdk1.8.0_281
export KAFKA_HOME = / opt / kafka_2.13-2.7.0
export CLASSPATH = $ JAVA_HOME / jre / lib: $ JAVA_HOME / lib: $ KAFKA_HOME / lib
export PATH = $ KAFKA_HOME / bin: $ JAVA_HOME / bin: $ PATH

- #### 启动 zookeeper #####
- # cd /opt/kafka_2.13-2.7.0/
- # nohup bin / zookeeper-server-start.sh config / zookeeper.properties &

- #### 启动 kafka #####
- # nohup bin / kafka-server-start.sh config / server.properties &

- ### 创建 topic ###
- # kafka-topics.sh --create --zookeeper localhost: 2181 --replication-factor 1 --partitions 1 --topic test
Prueba de tema creada.
- #

- ### 显示 tema ###
- # kafka-topics.sh -list -zookeeper localhost: 2181
prueba
- #

Cree un productor de kafka:
- # kafka-console-producer.sh --broker-list localhost: 9092 --topic test

hola
test_msg
test_topic

Cree un consumidor kafka:
- # kafka-console-consumer.sh --bootstrap-server localhost: 9092 --topic test --from- begin
hello
test_msg
test_topic

Explicación:
--broker-list: El puerto predeterminado es 9092. Puede cambiarlo usted mismo

  1. Preparación de la base de datos

postgres = # crear usuario sync_user con contraseña de replicación 'sync_user';
postgres = # modificar usuario sync_user con superusuario;
postgres = # crear base de datos tdb01;
CREATE DATABASE
postgres = # CREATE TABLE clientes (
id SERIAL,
first_name VARCHAR (255) NOT NULL,
last_name VARCHAR (255) NOT NULL,
email VARCHAR (255) NOT NULL,
PRIMARY KEY (id)
);

pg_hba.conf

- # TIPO DE BASE DE DATOS DIRECCIÓN DE USUARIO MÉTODO

- # "local" es para conexiones de socket de dominio Unix solo
local todas todas de confianza
- # conexiones locales IPv4:
alojar todas las 127.0.0.1/32 de confianza
alojar todas todas 0.0.0.0/0 md5
- # conexiones locales IPv6:
alojar todas todas: : 1/128 confianza
- # Permitir conexiones de replicación desde localhost, por un usuario con el
- # privilegio de replicación.
replicación local todos confiabilidad
replicación de host todos 127.0.0.1/32 confiabilidad
replicación de host todos 192.168.1.0/24 md5
$

- ### Modificación del archivo de configuración ####
$ vi postgresql.conf
wal_level =
logic #max_wal_senders = 10
#max_replication_slots = 10

- #### reiniciar la base de datos ####
$ pg_ctl stop –D / pgdata
$ pg_ctl start –D / pgdata

  1. Configurar e instalar connect

- # tar zxvf debezium-connector-postgres-1.4.1.Final-plugin.tar.gz -C / opt /
- # cd / opt / debezium-connector-postgres /
- # cp * .jar /opt/kafka_2.13 -2.7.0 / libs /
- # cd /opt/kafka_2.13-2.7.0/config
- # vi kafka-postgres.properties
name = postgres-connector
connector.class = io.debezium.connector.postgresql.PostgresConnector
database. hostname = 192.168.1.141
database.port = 5432
database.user = sync_user
database.password = sync_user
database.dbname = tdb01
database.server.name = tdb01
plugin.name = pgoutput
table.whitelist =
errors.log.enable =
errores verdaderos . logs.include.messages = true
- #

  1. Prueba de inserción de datos de base de datos

- #### 数据库 端 ####
postgres = # \ c tdb01
tdb01 = # insertar en los clientes (nombre, apellido, correo electrónico) valores ('él', 'mia', '[email protected]');
INSERTAR 0 1
tdb01 = #

- #### borde kafka #####

- # kafka-topics.sh -list -zookeeper localhost: 2181
tdb01.public.customers
- # kafka-console-consumer.sh --bootstrap-server localhost: 9092 --topic tdb01.public.customers --desde-principio
{"esquema": {"tipo": "estructura", "campos": [{"tipo": "estructura", "campos": [{"tipo": "int32", "opcional": falso, "campo ":" id "}, {" tipo ":" cadena "," opcional ": falso," campo ":" primer_nombre "}, {" tipo ":" cadena "," opcional ": falso," campo ": "apellido"}, {"tipo": "cadena", "opcional": falso, "campo": "correo electrónico"}], "opcional": verdadero, "nombre": "tdb01.public.customers.Value", "campo": "antes"}, {"tipo": "estructura", "campos": [{"tipo": "int32", "opcional": falso, "campo": "id"}, {"tipo ":"cuerda","opcional": falso, "campo": "primer nombre"}, {"tipo": "cadena", "opcional": falso, "campo": "apellido"}, {"tipo": "cadena", "opcional ": falso," campo ":" correo electrónico "}]," opcional ": verdadero," nombre ":" tdb01.public.customers.Value "," campo ":" después "}, {" tipo ":" estructura "," campos ": [{" tipo ":" cadena "," opcional ": falso," campo ":" versión "}, {" tipo ":" cadena "," opcional ": falso," campo ": "conector"}, {"tipo": "cadena", "opcional": falso, "campo": "nombre"}, {"tipo": "int64", "opcional": falso, "campo": "ts_ms "}, {"tipo": "cadena", "opcional": verdadero, "nombre": "io.debezium.data.Enum", "versión": 1, "parámetros": {"permitido": "verdadero, último , falso "}," predeterminado ":" falso "," campo ":" instantánea "}, {" tipo ":" cadena "," opcional ": falso," campo ":" db "}, {" tipo " : "cadena", "opcional": falso, "campo": "esquema"}, {"tipo": "cadena", "opcional": falso, "campo": "tabla"}, {"tipo": " int64 "," opcional ": verdadero," campo ":" txId "}, {" tipo ":" int64 "," opcional ": verdadero," campo ":" lsn "}, {" tipo ":" int64 " , "opcional": verdadero, "campo ":" xmin "}]," opcional ": falso," nombre ":" io.debezium.connector.postgresql.Source "," campo ":" fuente "}, {" tipo ":" cadena "," opcional ": falso," campo ":" op "}, {" tipo ":" int64 "," opcional ": verdadero," campo ":" ts_ms "}, {" tipo ":" estructura "," campos " : [{"tipo": "cadena", "opcional": falso, "campo": "id"}, {"tipo": "int64", "opcional": falso, "campo": "orden_total"}, {"type": "int64", "opcional": falso, "campo": "data_collection_order"}], "opcional": verdadero, "campo": "transacción"}], "opcional": falso, "nombre" : "tdb01.public.customers.Envelope "}," payload ": {" before ": null," after ": {" id ": 1," first_name ":" he "," last_name ":" mia "," email ":" [email protected] "}," fuente ": {" versión ":" 1.4.1.Final "," conector ":" postgresql "," nombre ":" tdb01 "," ts_ms ": 1612544437937, "snapshot": "false", "db": "tdb01", "schema": "public", "table": "customers", "txId": 493, "lsn": 23092184, "xmin": null} , "op": "c", "ts_ms": 1612515639176, "transacción": null}}first_name ":" él "," last_name ":" mia "," email ":" [email protected] "}," source ": {" version ":" 1.4.1.Final "," connector ":" postgresql "," nombre ":" tdb01 "," ts_ms ": 1612544437937," instantánea ":" falso "," db ":" tdb01 "," esquema ":" público "," tabla ":" clientes "," txId ": 493," lsn ": 23092184," xmin ": null}," op ":" c "," ts_ms ": 1612515639176," transaction ": null}}first_name ":" él "," last_name ":" mia "," email ":" [email protected] "}," source ": {" version ":" 1.4.1.Final "," connector ":" postgresql "," nombre ":" tdb01 "," ts_ms ": 1612544437937," instantánea ":" falso "," db ":" tdb01 "," esquema ":" público "," tabla ":" clientes "," txId ": 493," lsn ": 23092184," xmin ": null}," op ":" c "," ts_ms ": 1612515639176," transaction ": null}}ts_ms ": 1612544437937," instantánea ":" falso "," db ":" tdb01 "," esquema ":" público "," tabla ":" clientes "," txId ": 493," lsn ": 23092184," xmin ": null}," op ":" c "," ts_ms ": 1612515639176," transaction ": null}}ts_ms ": 1612544437937," instantánea ":" falso "," db ":" tdb01 "," esquema ":" público "," tabla ":" clientes "," txId ": 493," lsn ": 23092184," xmin ": null}," op ":" c "," ts_ms ": 1612515639176," transaction ": null}}

Supongo que te gusta

Origin blog.51cto.com/heyiyi/2621287
Recomendado
Clasificación