This is an extremely rich and high quality video. I stumbled upon this by chance when I was searching for some info about Debezium for some project we might be interested in. Interestingly enough, the files provided in the video description did not quite work for MAC and it took about 2 days to make the required adjustments including getting the correct images and port configuration, network configuration etc. but in the end things worked. My experience was that I learned a lot as I went through the process, not just about Debezium but a great deal of other things on what docker-compose structure, network dependency, port issues and all that. So it was worth. Kudos to Irtiza for taking all efforts to put together such as amazing tutorial....!!
@irtizahafizАй бұрын
Thank you so much! Glad you folks got it working.
@intruderstube2 жыл бұрын
Thanks, it is helpful. "Weird" thing with psql shell is just because of missing semicolon at the end.
@irtizahafiz2 жыл бұрын
Ahh I see! That’s a good callout. I swear it used to work before without the semicolon :/ Glad you found it helpful regardless : )
@bnssoftware3292 Жыл бұрын
Really like your teaching style. Thank you.
@irtizahafiz11 ай бұрын
Thanks for watching!
@vjnt1star6 ай бұрын
Very good presentation short and to the point. I got the information I needed. Thank you
@irtizahafizАй бұрын
Glad you enjoyed it!
@chrisschuck3316 Жыл бұрын
Awesome concise explanation. Appreciate your work!
@irtizahafiz Жыл бұрын
Thank you! I will start posting again soon, so please let me know what type of content interests you the most.
@marwen1983-t1sАй бұрын
thank you very much. i really appreciate your approach to discussing this topic
@irtizahafizАй бұрын
You're very welcome!
@RajkumarS-p1fКүн бұрын
did you the error docker run --tty --network postgres_debezium_cdc_default confluentinc/cp-kafkacat kafcakat -b kafka:9092 -C -s key=s -s value=avro -r schema-registry:8081 -t postgres.public.student" and get issue => docker: Error response from daemon: network postgres_debezium_cdc_default not found.
@morph-877 ай бұрын
Thanks for the comprehensive explanation.
@irtizahafiz7 ай бұрын
You are welcome!
@r-rtz Жыл бұрын
Your 'Trevor' update is showing up in Kafka not as an update, but as a new record ("before": null)
@wilfredomartel77812 жыл бұрын
Just what i was searching for👏
@irtizahafiz2 жыл бұрын
Glad : )
@martingonzalez92982 жыл бұрын
I have a question, when you did the update the event on the kafka topic had a '{"before": null, ' why is that null if the row already had information before ?
@irtizahafiz2 жыл бұрын
Hi! That's a very good observation. I was actually running into that intermittently. Like 8/10 updates were working properly, but for 2/10 the before was NULL for some reason. Resetting the WAL of the database fixed it every time, but I am not sure why it happens in the first place.
@iuriivdovin7312 жыл бұрын
@@irtizahafiz Hi! Before is null because you missed semicolon ';' after ALTER TABLE REPLICA IDENTITY FULL
@marcinkiziukiewicz96952 ай бұрын
Thank you :)
@SpiritOfIndiaaa Жыл бұрын
Thanks a lot , simple and straight forward and clear
@CuriouslyContent2 жыл бұрын
Any idea why the last update had a 'before' value of 'null'? Since the last thing was an update, shouldn't the 'before' have the values as they were before the update (id:2, name:mike)?
@bulgakovwork20222 жыл бұрын
same question
@irtizahafiz2 жыл бұрын
Hi! Thank you for bringing this up. I think I answered this in another comment. I was running into this bug intermittently. I think it had to do with some misconfiguration of the postgres cluster.
@manojjoshi43214 ай бұрын
I had the same issue but resolved it quickly. Make sure you use - alter table replica identity full.
@geneschmidt9337 Жыл бұрын
THIS WAS GREAT! Thank you!
@devamzanzmera2231 Жыл бұрын
It's very informative
@irtizahafiz Жыл бұрын
So nice of you
@38vbharat2 жыл бұрын
Nice explanation ! Thanks
@irtizahafiz2 жыл бұрын
Glad you found it helpful : )
@sahilratnaparkhi59178 күн бұрын
can you make a video on streaming data from cassandra to kafka using debezium
@irtizahafiz2 күн бұрын
Noted. I will try to put something together.
@sushantsinha40382 жыл бұрын
Thanks ! Clear Explanation in this video . Do you have PostgreSQL Kafka Sink connector tutorial similar to this ?
@irtizahafiz2 жыл бұрын
Hi! Unfortunately, I don't! I do plan on getting to it at some point though. Meanwhile, I am doing most of these data pipeline stuff using AWS. So if you are interested, please check out those videos.
@vj_fantasy4298 Жыл бұрын
Hello actually I'm doing this currently and I'm stuck at 8:20 so can anyone please tell me what is --network and also what is postgres_debezium_default it's saying it doesn't exist
@irtizahafiz Жыл бұрын
Depends on the app you are building. I tried keeping things generic here. The ranking can be based on some score generated by a machine learning model, etc.
@kurshy8 ай бұрын
when i run the command to fire up dbz, i get "empty reply from server". kindly assist
@SoumilShah Жыл бұрын
Hello i need some help i was able to implement everything you showed in video i cannot consume messages from my local kafka-python can you please help ?
@irtizahafiz Жыл бұрын
Hi! It's difficult to help without more details.
@mmfStudent5 ай бұрын
Why after the sql update command, event has `before: null` in Kafka?
@irtizahafizАй бұрын
Good question! I think I mention it in the video, I had to restart the Postgres instance to make it work.
@UmarFarooq-u4g7h2 ай бұрын
can i used this design for RAG system in production for real time update postgres to vector database?
@irtizahafizАй бұрын
Yes you can.
@alphonsetaylor27882 жыл бұрын
Really helpful ! thanks
@vijeandran2 жыл бұрын
Hi, Thanks for the video... Whenever I insert or update the data in postgres, those changes are not showing in the docker run command
@irtizahafiz2 жыл бұрын
I would recommend restarting Postgres after you change its configuration.
@vijeandran2 жыл бұрын
@@irtizahafiz Thanks you Sir... Now it is working as expected....
@mukeshkumar-il3ct2 жыл бұрын
please help me I'm getting the error '% ERROR: Invalid token 'k' in key pack-format, see -s usage."
@Malcolm777-i Жыл бұрын
table.include.list: can this accept array or list separated by ,?
@sanjaymadhavan1893 Жыл бұрын
How to deal with the concept of foreign key in debezium? Great video BTW! Life saviour
@bnssoftware3292 Жыл бұрын
How come on the update it doesn't show the before data?
@irtizahafiz11 ай бұрын
That was happening intermittently. I believe there are some discussions about this in the comments section.
@udaynj11 ай бұрын
Nice video. Like your teaching style. Quick question - How stable is Debezium if you want to run this at scale in production?
@irtizahafiz10 ай бұрын
Many companies use it at scale.
@AnkitKumar252 жыл бұрын
I'm getting this error after running the final kafkacat command. I'm using windows to run this. I checked in both cmd and powershell. Error: file/topic list only allowed in producer(-P)/kafkaconsumer(-G) mode
@AnkitKumar252 жыл бұрын
docker run --tty --network bin_default confluentinc/cp-kafkacat kafkacat -b kafka:9092 -C -s key=s -s value=avro -r schema-registry:8081 -t postgres.public.student this command works for me now.
@uma_mataji2 жыл бұрын
sorry when I ran the docker-compose command it just keeps on spinning forever ...it doesnot work.
@irtizahafiz2 жыл бұрын
Hi! Sorry it's difficult for me to help without some more context.
@pallavi13882 жыл бұрын
Hi I am trying to add skipped.operations = "c" in debezium.json but its still showing create/update/delete?
@irtizahafiz2 жыл бұрын
Hi! Unfortunately, I don't think I can be too helpful when it comes to debezium specifics.
@priyantynurulfatimah6408Күн бұрын
Hi, so this is my JSON to create debezium connector but it returned error. Could you please help me troubleshoot? I am still learning and already look out for the solving but to no avail. Y^Y JSON: { "name": "source-transactions-connector", "config": { "connector.class": "io.debezium.connector.postgresql.PostgresConnector", "plugin.name": "pgoutput", "database.hostname": "postgres", "database.port": "5432", "database.user": "etl", "database.password": "demopass", "database.dbname": "dvdrental", "database.server.name": "postgres", "key.converter.schemas.enable": "false", "value.converter.schemas.enable": "false", "transforms": "unwrap", "transforms.unwrap.type": "io.debezium.transforms.ExtractNewRecordState", "key.converter": "org.apache.kafka.connect.json.JsonConverter", "value.converter": "org.apache.kafka.connect.json.JsonConverter", "table.include.list": "public.rental_streaming", "slot.name": "deb_rental_transaction_slot" } } ERROR: ERROR || Failed testing connection for jdbc:postgresql://postgres:5432/dvdrental with user 'etl': The connection attempt failed. [io.debezium.connector.postgresql.PostgresConnector]
@pyramidofmerlinii4368 Жыл бұрын
If we have airflow in docker-compose, we don't need Debezium, right?
@irtizahafiz Жыл бұрын
I think you can do a lot with Airflow, but not sure about the specifics.
@shubhamkapoor1123 Жыл бұрын
Hi, I am getting this error when running kafkacat command ERROR: Failed to format message in postgres.public.student [0] at offset 0: Avro/Schema-registry message deserialization: REST request failed (code -1): HTTP request failed: URL using bad/illegal format or missing URL : terminating Please tell the next step how to solve this. thanks!
@irtizahafiz Жыл бұрын
Not sure without more details. Can you provide with examples of your payload?
@Bhavesh_Bhuvad2 жыл бұрын
docker: Error response from daemon: network postgres_debezium_cdc_master_default not found. i have getting this error on docker run -tty .....command.plz help
@irtizahafiz2 жыл бұрын
Make sure you define the network in the docker-compose file.
@pammyarw Жыл бұрын
is there any way I can provide a topic name to which it should be published?
@irtizahafiz Жыл бұрын
Yes definitely!
@inphosoftindonesia36942 жыл бұрын
hi, i wonder, how about delete, does debezium also support delete?
@irtizahafiz2 жыл бұрын
Yes. It supports delete too.
@AnimeZone2476 ай бұрын
Is it possible to listen to join queries?
@irtizahafizАй бұрын
I believe CDC streams are generated only on data mutations, so no JOIN queries cannot be listened to by default.
@fkaanoz Жыл бұрын
I guess "ALTER TABLE ..." part didn't work, due to lack of semi column at the end. @4.20
@mariemhajjem2 жыл бұрын
Thanks a lot!
@irtizahafiz2 жыл бұрын
Glad it was helpful. I added the idea to my “future videos” list. The next few weeks I will be focusing on the System Design course, so unfortunately it will take some time :(
@edisonngizwenayo5752 Жыл бұрын
Great explanations, just have few questions. The first one is how the configuration should be made in debezium.json file if the the source is an API other than Database. The last one, how to allow debezium to listen to change from multiple database tables. Thanks
@irtizahafiz Жыл бұрын
I can consider making future videos on these. Thank you!
@RakantaRifky249 ай бұрын
If I want Yugabytedb postgresql for doing this migration, is it using same way like postgresql?
@irtizahafiz9 ай бұрын
It should be similar as long as there's a connector available.
@RJ-wj7lc Жыл бұрын
Nice video, do you have an example for Spring boot with Apache kafka and Debezium connector(MySQL, MS SQL Server)?
@irtizahafiz Жыл бұрын
Unfortunately, I do not. Maybe something in the future.
@AkshitBansal-fk9gt8 ай бұрын
nice tutorial. you missed ; in some commands, that's why the output was not visible.
@irtizahafiz7 ай бұрын
Sorry about that!
@ansarhayat62762 жыл бұрын
Hi Irtiza, any stuff related SQL server source and sink connectors
@irtizahafiz2 жыл бұрын
I do have a few SQL videos coming up soon.
@vaibhavpandey56152 жыл бұрын
Great man ,could you please give me docker commond to start consumer on topic!
@irtizahafiz2 жыл бұрын
Unfortunately I don't have the code for this anymore :(
@PS-ff1tq2 жыл бұрын
Great introduction 👍,I have a question ,how to consume the data into a target database or consumer the data from topic using kafka python or any other api ?
@irtizahafiz2 жыл бұрын
For consuming data into a target database, you should be able to do it with a Sink Connector of your respective database. Almost all Sink Connectors should be able to read from a Kafka topic. As for consuming Kafka using Python, I have an end to end example of that here in this video. I think you will find it helpful: kzbin.info/www/bejne/p5qapoVpftmUhbs
@吳信宏-z7i2 жыл бұрын
Great introduction. Could you share your scripts in your video?
@irtizahafiz2 жыл бұрын
Hi! I can share as much as my iterm command history allows me. If you need anything in particular, let me know. curl -i -X POST -H "Accept:application/json" -H "Content-Type:application/json" 127.0.0.1:8083/connectors/ --data "@debezium.json" docker run --tty --network postgres_debezium_cdc_default confluentinc/cp-kafkacat kafkacat -b kafka:9092 \ -C -s key=s -s value=avro -r schema-registry:8081 -t postgres.public.student
@vilius518 Жыл бұрын
Thats weird, messages that end up in kafka topic are not in json, do you have clue why? Im using kafdrop for inspecting topics. Could it be that your kafkacat command also parses messages to json?
@irtizahafiz Жыл бұрын
Potentially. I know that the Kafkacat command has lots of "quality of life improvements" baked in.
@parteeks9012 Жыл бұрын
Thanks, it helped me a lot but the weird thing is you updated the data in the database in the end, and still Kafka "before key" is null. Anyone has any thoughts on this?😁
@irtizahafiz Жыл бұрын
That has to do with some kind of Postgres configuration. I remember fixing it immediately after the video, but can't remember :(
@rssaini138 Жыл бұрын
@@irtizahafiz It is working after below command, because in video it was not executed because you've missed semicolon. ALTER TABLE public.student REPLICA IDENTITY FULL;
@nurulasyikin18952 жыл бұрын
Is it possible to implement this without using docker environment? If it's possible can you demonstrate how to perform that?
@irtizahafiz2 жыл бұрын
Hi! Yes it is possible! I might be able to demonstrate that some time in the future, but it’s currently not in my plans unfortunately.
@rahadianpramono40502 жыл бұрын
hi need your help, i try to run docker run --tty --network postgres_debezium_cdc_default but it showing ERROR: Failed to query metadata for topic postgres.public.student: Local: Broker transport failure, please help, thank you
@irtizahafiz2 жыл бұрын
Are you sure the Kafka topic was created successfully? I would recommend listing the available topics in the broker first.
@rahadianpramono40502 жыл бұрын
@@irtizahafiz I'm not sure that kafka topic created successfully because I followed all the instructions in your video :D, how to listing the available topics in the broker? thank you
@irtizahafiz2 жыл бұрын
You can run something like this in your CLI to list the Kafka topics: ./usr/bin/kafka-topics --zookeeper zookeeper:2181 --list
@valentinadevanna94482 жыл бұрын
@@irtizahafiz i have the same problem and the topic postgres.public.student exists
@valentinadevanna94482 жыл бұрын
it works!! It is sufficient runs the command two or threee times
@prasadkintali65602 жыл бұрын
Good one brother. Do you have a video to write to a source database from this Kafka source topic?
@irtizahafiz2 жыл бұрын
I don’t have a video yet, but I do plan on making one soon. : )
@neeraj262611 ай бұрын
@@irtizahafiz Did you happen to create one?
@KshitijKohli-h8k Жыл бұрын
Awesome tutorial! I wanted to understand 1 piece more. There are 2 patterns which I am now aware of of streaming CDC to Kafka. 1 via debezium connector that you talked about, other is via the Outbox pattern where the application service commits to an Outbox table in the same commit it writes to other application tables, post which tools like Ceres can stream the data to Kafka. What are the core differences in these 2 approaches and is there a recommendation of one over the other?
@irtizahafiz Жыл бұрын
I am actually not familiar with Outbox :(
@JoseGuerra-qc5hq Жыл бұрын
Typically the outbox pattern is to guarantee once delivery of the message, it's not to perform cdc (imagine a critical service that you must guarantee message delivery). Your application does not send messages to a kafka topic but instead send to a db table. The outbox service then is responsible to see which messages in your table (outbox) have been successfully published to kafka and retries for the ones who haven't.There is a chance that the outbox publishes a event more than once, so your consumers must be idempotent. From the consumers side you may have what would be called an inbox pattern, which blocks the same message to be consumer more than once, or they are okay with receiving the same message more than once. What you may have is CDC with Debezium but instead of publishing directly to kafka it publishes the events to a DB table via outbox.
@HikarusVibrator2 жыл бұрын
Is there any way at all to do a major version DB upgrade without manually stopping writes, then killing the Debezium connector, etc. ? For a microservice architecture it really is quite costly to have such prolonged downtimes whenever a major upgrade is done. I don’t see a solution anywhere
@irtizahafiz2 жыл бұрын
I don’t have any experience with it :( So unfortunately I won’t be of much help here sorry.
@arnavdman Жыл бұрын
I dont think so, the process of doing a major version upgrade of a database typically requires some level of downtime. But if you can setup a replica and divert the traffic there for the time being it might be a solution
@darshankadiya28242 жыл бұрын
can we use same using airflow
@irtizahafiz2 жыл бұрын
Yup for sure! Products like AirFlow make data engineering super easy by abstracting away all these.
@ranisari31102 жыл бұрын
please make video postgresql -> debezium -> pubsub, thank you
@irtizahafiz2 жыл бұрын
Hi! I do plan on doing that in the near future. After the system design videos that is.
@dempile2 жыл бұрын
Even with the update , you get null ! ! ! !
@irtizahafiz2 жыл бұрын
I know :( I was getting null every now and then. I believe it was because my Postgres docker container wasn't retaining the WAL setting every time I exited out of it.
@brucewen9326 Жыл бұрын
In PostgreSQL, we often forgot to append ";" at the end of the SQL statement 🤪
@irtizahafiz Жыл бұрын
Thank you for the correction! I will start posting again soon, so please let me know what type of content interests you the most.
@GordonShamway19842 жыл бұрын
delete would be nice to see
@bjugdbjk2 жыл бұрын
I am trying to build a project on top of this tutoral , got stuck below, could you help :) I ran the compose file and i can see from docker desktop all containers are up. From the go code i was trying to communicate with kafka to create a topic, throws me below error, could you help "panic: failed to dial: failed to open connection to kafka:9092: dial tcp: lookup kafka: no such host" Go code : conn, err := kafka.DialLeader(context.Background(), "tcp", "localhost:9092", "my-topic", 0) if err != nil { panic(err.Error()) } conn.SetReadDeadline(time.Now().Add(10 * time.Second))
@irtizahafiz2 жыл бұрын
Hi! I am not really familiar with the project. Just make sure both the Go project and your kafka containers are running on the same network.
@zaidahmed42542 жыл бұрын
hi need your help, i try to run docker run --tty --network debezium_postgres_cdc_default(my app name start with debezium_postgres_cdc_default) but it showing ERROR: file/topic list only allowed in producer(-P)/kafkaconsumer(-G)
@prasadkintali65602 жыл бұрын
I have faced the same issue in windows command prompt, but it works in powershell.
@irtizahafiz2 жыл бұрын
Are you trying it out in Windows or Mac or Linux?
@robinthomas7350 Жыл бұрын
@@prasadkintali6560 i am having same issue in both command prompt and powershell.i am using windows machine. Can anyone help
@srini14312 жыл бұрын
Hi, I'm getting unable to find image 'confluentinc/cp-kafka:latest locally. How to resolve this please help
@srini14312 жыл бұрын
Error response from daemon: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "-b": executable file not found in $PATH: unknown
@irtizahafiz2 жыл бұрын
Hi! I can look at this later on in the week when I have some time.
@atharvadeokar2814 Жыл бұрын
Hi Irtiaz I am facing issue - ERROR: Failed to query metadata for topic postgres.public.student: Local: Broker transport failure ./usr/bin/kafka-topics --zookeeper zookeeper:2181 --list This gives -> -bash: ./usr/bin/kafka-topics: No such file or directory I will really appreciate you if you could help me this issue Thankyou!
@irtizahafiz Жыл бұрын
Have you created the Kafka topics successfully? You have to register the topic first, before you can consume from it.
@venkateshajjs50142 жыл бұрын
docker: Error response from daemon: network postgres_debezium_cdc_default not found. having this error while run this command : docker run --tty --network postgres_debezium_cdc_default confluentinc/cp-kafkacat -b kafka:9092 -C -s key=s value=avro -r schema-registry:8001 -t postgres.public.student ...
@venkateshajjs50142 жыл бұрын
please help me .. --network postgres_debezium_cdc_default denotes what?
@venkateshajjs50142 жыл бұрын
please i need help...
@iuriivdovin7312 жыл бұрын
That's because the network has another name. Print in the command line "docker network ls" and find the network in the list. In my case it was "debezium-default".
@venkateshajjs50142 жыл бұрын
@@iuriivdovin731 thanks bro
@irtizahafiz2 жыл бұрын
Thanks for helping out! : )
@christopherma5445 Жыл бұрын
I got the following error :% ERROR: Topic postgres.public.student error: Broker: Leader not available after running docker run --tty --network postgres_debezium_cdc_default confluentinc/cp-kafkacat kafkacat -b kafka:9092 -C -s key=s -s value=avro -r schema-registry:8081 -t postgres.public.student
@irtizahafiz Жыл бұрын
Maybe try resetting Docker if it's running already?