3.4. Kafka Connect サービスの再起動
Debezium MySQL コネクターが作成、更新、および削除イベントをキャプチャーする方法を確認しました。次に、コネクターが稼働していない場合でもどのように変更イベントをキャプチャーするかを見てみましょう。
Kafka Connect サービスは、登録されたコネクターのタスクを自動的に管理します。そのため、Kafka Connect サービスがオフラインになった場合は、サービスの再起動時に、実行されていないタスクをすべて開始します。つまり、Debezium が稼働していない場合でも、サービスは変更をデータベースに報告できます。
この手順では、Kafka Connect を停止し、データベースのデータを一部変更した後、Kafka Connect を再起動して変更イベントを確認します。
手順
Kafka Connect サービスを停止します。
Kafka Connect サービスのデプロイメント設定を開きます。
$ oc edit dc/my-connect-cluster-connect
デプロイメントの設定が表示されます。
apiVersion: apps.openshift.io/v1 kind: DeploymentConfig metadata: ... spec: replicas: 1 ...
-
spec.replicas
の値を0
に変更します。 - デプロイメント設定を保存します。
Kafka Connect サービスが停止したことを確認します。
このコマンドを実行すると、Kafka Connect サービスが完了し、稼働している Pod がないことを確認できます。
$ oc get pods -l strimzi.io/name=my-connect-cluster-connect NAME READY STATUS RESTARTS AGE my-connect-cluster-connect-1-dxcs9 0/1 Completed 0 7h
Kafka Connect サービスが停止している間に、MySQL クライアントを実行しているターミナルに切り替え、新しいレコードをデータベースに追加します。
mysql> INSERT INTO customers VALUES (default, "Sarah", "Thompson", "kitt@acme.com");
Kafka Connect サービスを再起動します。
Kafka Connect サービスのデプロイメント設定を開きます。
$ oc edit dc/my-connect-cluster-connect
デプロイメントの設定が表示されます。
apiVersion: apps.openshift.io/v1 kind: DeploymentConfig metadata: ... spec: replicas: 0 ...
-
spec.replicas
の値を1
に変更します。 - デプロイメント設定を保存します。
Kafka Connect サービスが再起動したことを確認します。
このコマンドを実行すると、Kafka Connect サービスが稼働中で、Pod の準備ができていることを確認できます。
$ oc get pods -l strimzi.io/name=my-connect-cluster-connect NAME READY STATUS RESTARTS AGE my-connect-cluster-connect-2-q9kkl 1/1 Running 0 74s
-
kafka-console-consumer.sh
を実行しているターミナルに切り替えます。新しいイベントを受け取ると表示されます。 Kafka Connect がオフラインだったときに作成したレコードを確認します (書式を調整して読みやすくしてあります)。
{ ... "payload":{ "id":1005 } } { ... "payload":{ "before":null, "after":{ "id":1005, "first_name":"Sarah", "last_name":"Thompson", "email":"kitt@acme.com" }, "source":{ "version":"1.7.2.Final", "connector":"mysql", "name":"dbserver1", "ts_ms":1582581502000, "snapshot":"false", "db":"inventory", "table":"customers", "server_id":223344, "gtid":null, "file":"mysql-bin.000004", "pos":364, "row":0, "thread":5, "query":null }, "op":"c", "ts_ms":1582581502317 } }