schema registry 에서 사용하는 _schemas 에는 다음 정보가 저장되어 있다.

$ /usr/local/confluent-5.1.2/bin/kafka-console-consumer  --bootstrap-server kafka-test01.google.io:9092,kafka-test02.google.io:9092,kafka-test03.google.io:9092 --from-beginning --topic _schemas1

{“subject”:“test-key”,“version”:1,“id”:1,“schema”:“{\“type\“:\“record\“,\“name\“:\“SchemaChangeKey\“,\“namespace\“:\“io.debezium.connector.mysql\“,\“fields\“:[{\“name\“:\“databaseName\“,\“type\“:\“string\“}],\“connect.name\“:\“io.debezium.connector.mysql.SchemaChangeKey\“}”,“deleted”:false}
{“subject”:“test-value”,“version”:1,“id”:2,“schema”:“{\“type\“:\“record\“,\“name\“:\“SchemaChangeValue\“,\“namespace\“:\“io.debezium.connector.mysql\“,\“fields\“:[{\“name\“:\“source\“,\“type\“:{\“type\“:\“record\“,\“name\“:\“Source\“,\“fields\“:[{\“name\“:\“version\“,\“type\“:[\“null\“,\“string\“],\“default\“:null},{\“name\“:\“connector\“,\“type\“:[\“null\“,\“string\“],\“default\“:null},{\“name\“:\“name\“,\“type\“:\“string\“},{\“name\“:\“server_id\“,\“type\“:\“long\“},{\“name\“:\“ts_sec\“,\“type\“:\“long\“},{\“name\“:\“gtid\“,\“type\“:[\“null\“,\“string\“],\“default\“:null},{\“name\“:\“file\“,\“type\“:\“string\“},{\“name\“:\“pos\“,\“type\“:\“long\“},{\“name\“:\“row\“,\“type\“:\“int\“},{\“name\“:\“snapshot\“,\“type\“:[{\“type\“:\“boolean\“,\“connect.default\“:false},\“null\“],\“default\“:false},{\“name\“:\“thread\“,\“type\“:[\“null\“,\“long\“],\“default\“:null},{\“name\“:\“db\“,\“type\“:[\“null\“,\“string\“],\“default\“:null},{\“name\“:\“table\“,\“type\“:[\“null\“,\“string\“],\“default\“:null},{\“name\“:\“query\“,\“type\“:[\“null\“,\“string\“],\“default\“:null}],\“connect.name\“:\“io.debezium.connector.mysql.Source\“}},{\“name\“:\“databaseName\“,\“type\“:\“string\“},{\“name\“:\“ddl\“,\“type\“:\“string\“}],\“connect.name\“:\“io.debezium.connector.mysql.SchemaChangeValue\“}”,“deleted”:false}
{“subject”:“user-key”,“version”:1,“id”:3,“schema”:“{\“type\“:\“record\“,\“name\“:\“Key\“,\“namespace\“:\“test.test.user\“,\“fields\“:[{\“name\“:\“id\“,\“type\“:\“long\“}],\“connect.name\“:\“test.test.user.Key\“}”,“deleted”:false}
{“subject”:“user-value”,“version”:1,“id”:4,“schema”:“{\“type\“:\“record\“,\“name\“:\“Envelope\“,\“namespace\“:\“test.test.user\“,\“fields\“:[{\“name\“:\“before\“,\“type\“:[\“null\“,{\“type\“:\“record\“,\“name\“:\“Value\“,\“fields\“:[{\“name\“:\“id\“,\“type\“:\“long\“},{\“name\“:\“username\“,\“type\“:[\“null\“,\“string\“],\“default\“:null},{\“name\“:\“vin\“,\“type\“:[\“null\“,\“string\“],\“default\“:null},{\“name\“:\“address\“,\“type\“:[\“null\“,\“string\“],\“default\“:null}],\“connect.name\“:\“test.test.user.Value\“}],\“default\“:null},{\“name\“:\“after\“,\“type\“:[\“null\“,\“Value\“],\“default\“:null},{\“name\“:\“source\“,\“type\“:{\“type\“:\“record\“,\“name\“:\“Source\“,\“namespace\“:\“io.debezium.connector.mysql\“,\“fields\“:[{\“name\“:\“version\“,\“type\“:[\“null\“,\“string\“],\“default\“:null},{\“name\“:\“connector\“,\“type\“:[\“null\“,\“string\“],\“default\“:null},{\“name\“:\“name\“,\“type\“:\“string\“},{\“name\“:\“server_id\“,\“type\“:\“long\“},{\“name\“:\“ts_sec\“,\“type\“:\“long\“},{\“name\“:\“gtid\“,\“type\“:[\“null\“,\“string\“],\“default\“:null},{\“name\“:\“file\“,\“type\“:\“string\“},{\“name\“:\“pos\“,\“type\“:\“long\“},{\“name\“:\“row\“,\“type\“:\“int\“},{\“name\“:\“snapshot\“,\“type\“:[{\“type\“:\“boolean\“,\“connect.default\“:false},\“null\“],\“default\“:false},{\“name\“:\“thread\“,\“type\“:[\“null\“,\“long\“],\“default\“:null},{\“name\“:\“db\“,\“type\“:[\“null\“,\“string\“],\“default\“:null},{\“name\“:\“table\“,\“type\“:[\“null\“,\“string\“],\“default\“:null},{\“name\“:\“query\“,\“type\“:[\“null\“,\“string\“],\“default\“:null}],\“connect.name\“:\“io.debezium.connector.mysql.Source\“}},{\“name\“:\“op\“,\“type\“:\“string\“},{\“name\“:\“ts_ms\“,\“type\“:[\“null\“,\“long\“],\“default\“:null}],\“connect.name\“:\“test.test.user.Envelope\“}”,“deleted”:false}

-----
스키마 변경이 바뀌는 시점은 alter 문이 실행될 때가 아닌 alter 이후에 데이터가 들어오는 정보가 있을 때 변경된다.

{“subject”:“user-value”,“version”:2,“id”:5,“schema”:“{\“type\“:\“record\“,\“name\“:\“Envelope\“,\“namespace\“:\“test.test.user\“,\“fields\“:[{\“name\“:\“before\“,\“type\“:[\“null\“,{\“type\“:\“record\“,\“name\“:\“Value\“,\“fields\“:[{\“name\“:\“id\“,\“type\“:\“long\“},{\“name\“:\“username\“,\“type\“:[\“null\“,\“string\“],\“default\“:null},{\“name\“:\“vin\“,\“type\“:[\“null\“,\“string\“],\“default\“:null},{\“name\“:\“address\“,\“type\“:[\“null\“,\“string\“],\“default\“:null},{\“name\“:\“aaaaa\“,\“type\“:[\“null\“,\“string\“],\“default\“:null}],\“connect.name\“:\“test.test.user.Value\“}],\“default\“:null},{\“name\“:\“after\“,\“type\“:[\“null\“,\“Value\“],\“default\“:null},{\“name\“:\“source\“,\“type\“:{\“type\“:\“record\“,\“name\“:\“Source\“,\“namespace\“:\“io.debezium.connector.mysql\“,\“fields\“:[{\“name\“:\“version\“,\“type\“:[\“null\“,\“string\“],\“default\“:null},{\“name\“:\“connector\“,\“type\“:[\“null\“,\“string\“],\“default\“:null},{\“name\“:\“name\“,\“type\“:\“string\“},{\“name\“:\“server_id\“,\“type\“:\“long\“},{\“name\“:\“ts_sec\“,\“type\“:\“long\“},{\“name\“:\“gtid\“,\“type\“:[\“null\“,\“string\“],\“default\“:null},{\“name\“:\“file\“,\“type\“:\“string\“},{\“name\“:\“pos\“,\“type\“:\“long\“},{\“name\“:\“row\“,\“type\“:\“int\“},{\“name\“:\“snapshot\“,\“type\“:[{\“type\“:\“boolean\“,\“connect.default\“:false},\“null\“],\“default\“:false},{\“name\“:\“thread\“,\“type\“:[\“null\“,\“long\“],\“default\“:null},{\“name\“:\“db\“,\“type\“:[\“null\“,\“string\“],\“default\“:null},{\“name\“:\“table\“,\“type\“:[\“null\“,\“string\“],\“default\“:null},{\“name\“:\“query\“,\“type\“:[\“null\“,\“string\“],\“default\“:null}],\“connect.name\“:\“io.debezium.connector.mysql.Source\“}},{\“name\“:\“op\“,\“type\“:\“string\“},{\“name\“:\“ts_ms\“,\“type\“:[\“null\“,\“long\“],\“default\“:null}],\“connect.name\“:\“test.test.user.Envelope\“}”,“deleted”:false}


alter add column 후 데이터 입력 => schema1에 저장 
alter drop column 후 데이터 입력 -> schema1에 반영되지 않는다.

Posted by '김용환'
,