Để tạo phiên bản Amazon RDS cho cơ sở dữ liệu MySQL, hãy sử dụng giao diện hoặc công cụ quản lý Amazon RDS. Sau đó, bạn có thể làm như sau
Thay đổi kích thước phiên bản DB của bạn
Cấp phép kết nối với phiên bản CSDL của bạn
Tạo và khôi phục từ bản sao lưu hoặc ảnh chụp nhanh
Tạo phần phụ Multi-AZ
Tạo bản sao chỉ có quyền đọc
Theo dõi hiệu suất của phiên bản CSDL của bạn
Để lưu trữ và truy cập dữ liệu trong phiên bản CSDL của bạn, bạn sử dụng các tiện ích và ứng dụng MySQL tiêu chuẩn
Amazon RDS for MySQL tuân thủ nhiều tiêu chuẩn ngành. Ví dụ: bạn có thể sử dụng RDS cho cơ sở dữ liệu MySQL để xây dựng các ứng dụng tuân thủ HIPAA. Bạn có thể sử dụng cơ sở dữ liệu RDS cho MySQL để lưu trữ thông tin liên quan đến chăm sóc sức khỏe, bao gồm cả thông tin sức khỏe được bảo vệ [PHI] theo Thỏa thuận liên kết kinh doanh [BAA] với AWS. Amazon RDS cho MySQL cũng đáp ứng các yêu cầu bảo mật của Chương trình quản lý ủy quyền và rủi ro liên bang [FedRAMP]. Ngoài ra, Amazon RDS cho MySQL đã nhận được Cơ quan vận hành tạm thời [P-ATO] của Ủy ban ủy quyền chung FedRAMP [JAB] tại Đường cơ sở CAO của FedRAMP trong Khu vực AWS GovCloud [US]. Để biết thêm thông tin về các tiêu chuẩn tuân thủ được hỗ trợ, hãy xem Tuân thủ đám mây AWS
Để biết thông tin về các tính năng trong mỗi phiên bản MySQL, hãy xem Các tính năng chính của MySQL trong tài liệu MySQL
Trước khi tạo phiên bản CSDL, hãy hoàn tất các bước trong Thiết lập cho Amazon RDS. Khi bạn tạo một phiên bản CSDL, người dùng chính RDS sẽ nhận được các đặc quyền của DBA, với một số hạn chế. Sử dụng tài khoản này cho các tác vụ quản trị, chẳng hạn như tạo tài khoản cơ sở dữ liệu bổ sung
Bạn có thể tạo như sau
Phiên bản CSDL
kết xuất nhanh cơ sở dữ liệu
Khôi phục tại thời điểm
sao lưu tự động
sao lưu thủ công
Bạn có thể sử dụng các phiên bản CSDL chạy MySQL bên trong đám mây riêng ảo [VPC] dựa trên Amazon VPC. Bạn cũng có thể thêm các tính năng vào phiên bản Cơ sở dữ liệu MySQL của mình bằng cách bật các tùy chọn khác nhau. Amazon RDS hỗ trợ triển khai Multi-AZ cho MySQL như một giải pháp chuyển đổi dự phòng, có tính sẵn sàng cao
Để mang lại trải nghiệm dịch vụ được quản lý, Amazon RDS không cung cấp quyền truy cập trình bao cho các phiên bản CSDL. Nó cũng hạn chế quyền truy cập vào một số quy trình và bảng hệ thống cần có đặc quyền nâng cao. Bạn có thể truy cập cơ sở dữ liệu của mình bằng các máy khách SQL tiêu chuẩn, chẳng hạn như máy khách mysql. Tuy nhiên, bạn không thể truy cập trực tiếp vào máy chủ bằng cách sử dụng Telnet hoặc Secure Shell [SSH]
Hướng dẫn này trình bày cách sử dụng Debezium để giám sát cơ sở dữ liệu MySQL. Khi dữ liệu trong cơ sở dữ liệu thay đổi, bạn sẽ thấy các luồng sự kiện kết quả
Trong hướng dẫn này, bạn sẽ khởi động các dịch vụ Debezium, chạy một máy chủ cơ sở dữ liệu MySQL với một cơ sở dữ liệu ví dụ đơn giản và sử dụng Debezium để theo dõi các thay đổi của cơ sở dữ liệu
điều kiện tiên quyết
Docker đã được cài đặt và đang chạy
Hướng dẫn này sử dụng Docker và hình ảnh bộ chứa Debezium để chạy các dịch vụ cần thiết. Bạn nên sử dụng phiên bản Docker mới nhất. Để biết thêm thông tin, hãy xem tài liệu cài đặt Docker Engine
Ví dụ này cũng có thể được chạy bằng Podman. Để biết thêm thông tin, xem Podman
Giới thiệu về Debezi
Debezium là một nền tảng phân tán giúp chuyển đổi thông tin từ cơ sở dữ liệu hiện tại của bạn thành các luồng sự kiện, cho phép các ứng dụng phát hiện và phản hồi ngay lập tức các thay đổi ở cấp độ hàng trong cơ sở dữ liệu
Debezium được xây dựng dựa trên Apache Kafka và cung cấp một bộ trình kết nối tương thích với Kafka Connect. Mỗi trình kết nối hoạt động với một hệ thống quản lý cơ sở dữ liệu cụ thể [DBMS]. Trình kết nối ghi lại lịch sử thay đổi dữ liệu trong DBMS bằng cách phát hiện các thay đổi khi chúng xảy ra và truyền bản ghi của từng sự kiện thay đổi sang chủ đề Kafka. Sau đó, các ứng dụng sử dụng có thể đọc các bản ghi sự kiện kết quả từ chủ đề Kafka
Bằng cách tận dụng nền tảng phát trực tuyến đáng tin cậy của Kafka, Debezium giúp các ứng dụng có thể sử dụng các thay đổi xảy ra trong cơ sở dữ liệu một cách chính xác và đầy đủ. Ngay cả khi ứng dụng của bạn dừng đột ngột hoặc mất kết nối, nó cũng không bỏ lỡ các sự kiện xảy ra trong thời gian ngừng hoạt động. Sau khi ứng dụng khởi động lại, nó sẽ tiếp tục đọc từ chủ đề từ điểm mà nó đã dừng lại
Hướng dẫn sau đây chỉ cho bạn cách triển khai và sử dụng trình kết nối Debezium MySQL với một cấu hình đơn giản. Để biết thêm thông tin về việc triển khai và sử dụng trình kết nối Debezium, hãy xem tài liệu về trình kết nối
tài nguyên bổ sung
Trình kết nối Debezium cho Cassandra
Trình kết nối Debezium cho Db2
Trình kết nối Debezium cho MongoDB
Trình kết nối Debezium cho MySQL
Trình kết nối Debezium cho Cơ sở dữ liệu Oracle
Trình kết nối Debezium cho PostgreSQL
Trình kết nối Debezium cho SQL Server
Trình kết nối Debezium cho Vitess
Bắt đầu các dịch vụ
Sử dụng Debezium yêu cầu ba dịch vụ riêng biệt. Dịch vụ kết nối ZooKeeper, Kafka và Debezium. Trong hướng dẫn này, bạn sẽ thiết lập một phiên bản duy nhất của từng dịch vụ bằng cách sử dụng Docker và hình ảnh bộ chứa Debezium
Để bắt đầu các dịch vụ cần thiết cho hướng dẫn này, bạn phải
Bắt đầu Zookeeper
Bắt đầu Kafka
Bắt đầu một cơ sở dữ liệu MySQL
Bắt đầu một máy khách dòng lệnh MySQL
Bắt đầu Kết nối Kafka
Cân nhắc khi chạy Debezium với Docker
Hướng dẫn này sử dụng Docker và hình ảnh bộ chứa Debezium để chạy các dịch vụ ZooKeeper, Kafka, Debezium và MySQL. Chạy mỗi dịch vụ trong một vùng chứa riêng biệt sẽ đơn giản hóa việc thiết lập để bạn có thể thấy Debezium đang hoạt động
Trong môi trường sản xuất, bạn sẽ chạy nhiều phiên bản của từng dịch vụ để cung cấp hiệu suất, độ tin cậy, khả năng sao chép và khả năng chịu lỗi. Thông thường, bạn sẽ triển khai các dịch vụ này trên nền tảng như OpenShift hoặc Kubernetes quản lý nhiều vùng chứa Docker chạy trên nhiều máy chủ và máy hoặc bạn sẽ cài đặt trên phần cứng chuyên dụng
Bạn nên lưu ý những cân nhắc sau để chạy Debezium với Docker
Các thùng chứa cho ZooKeeper và Kafka là phù du
ZooKeeper và Kafka thường lưu trữ cục bộ dữ liệu của họ bên trong các thùng chứa, điều này sẽ yêu cầu bạn gắn các thư mục trên máy chủ dưới dạng ổ đĩa. Theo cách đó, khi các vùng chứa bị dừng, dữ liệu vẫn còn. Tuy nhiên, hướng dẫn này bỏ qua thiết lập này - khi một vùng chứa bị dừng, tất cả dữ liệu được lưu giữ lâu dài sẽ bị mất. Bằng cách này, việc dọn dẹp trở nên đơn giản khi bạn hoàn thành hướng dẫn
Để biết thêm thông tin về lưu trữ dữ liệu liên tục, hãy xem tài liệu về hình ảnh vùng chứa
Hướng dẫn này yêu cầu bạn chạy từng dịch vụ trong một vùng chứa khác nhau
Để tránh nhầm lẫn, bạn sẽ chạy từng vùng chứa ở nền trước trong một thiết bị đầu cuối riêng biệt. Bằng cách này, tất cả đầu ra của một vùng chứa sẽ được hiển thị trong thiết bị đầu cuối được sử dụng để chạy nó
Docker cũng cho phép bạn chạy một container ở chế độ tách rời [với tùy chọn
8], trong đó container được khởi động và lệnh... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
9 trả về ngay lập tức. Tuy nhiên, các thùng chứa chế độ tách rời không hiển thị đầu ra của chúng trong thiết bị đầu cuối. Để xem đầu ra, bạn cần sử dụng lệnh... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
0. Để biết thêm thông tin, hãy xem tài liệu Docker$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Người quản lý vườn thú bắt đầu
ZooKeeper là dịch vụ đầu tiên bạn phải bắt đầu
Thủ tục
Mở một thiết bị đầu cuối và sử dụng nó để khởi động ZooKeeper trong một thùng chứa
Lệnh này chạy một vùng chứa mới bằng phiên bản 2. 0 của hình ảnh
1$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
$ docker run -it --rm --name zookeeper -p 2181:2181 -p 2888:2888 -p 3888:3888 quay.io/debezium/zookeeper:2.0
2$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Bộ chứa có tính tương tác, có nghĩa là đầu vào và đầu ra tiêu chuẩn của thiết bị đầu cuối được gắn vào bộ chứa
3$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Vùng chứa sẽ bị xóa khi dừng
4$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Tên của thùng chứa
5$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Ánh xạ ba cổng của vùng chứa tới cùng một cổng trên máy chủ Docker. Điều này cho phép các vùng chứa khác [và các ứng dụng bên ngoài vùng chứa] giao tiếp với ZooKeeper
Nếu bạn sử dụng Podman, hãy chạy lệnh sau. s
$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Xác minh rằng ZooKeeper đã bắt đầu và đang lắng nghe trên cổng
6$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Bạn sẽ thấy đầu ra tương tự như sau
1... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
1Dòng này cho biết ZooKeeper đã sẵn sàng và đang lắng nghe trên cổng 2181. Thiết bị đầu cuối sẽ tiếp tục hiển thị đầu ra bổ sung khi ZooKeeper tạo ra nó
Bắt đầu Kafka
Sau khi khởi động ZooKeeper, bạn có thể khởi động Kafka trong vùng chứa mới
Debezi 2. 0. 0. Final đã được thử nghiệm với nhiều phiên bản của Kafka Connect. Vui lòng tham khảo Ma trận thử nghiệm Debezium để xác định khả năng tương thích giữa Debezium và Kafka Connect
Thủ tục
Mở một thiết bị đầu cuối mới và sử dụng nó để khởi động Kafka trong một thùng chứa
Lệnh này chạy một vùng chứa mới bằng phiên bản 2. 0 của hình ảnh
7$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
3... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
2$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Bộ chứa có tính tương tác, có nghĩa là đầu vào và đầu ra tiêu chuẩn của thiết bị đầu cuối được gắn vào bộ chứa
3$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Vùng chứa sẽ bị xóa khi dừng
60... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Tên của thùng chứa
61... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Bản đồ cổng
62 trong vùng chứa tới cùng một cổng trên máy chủ Docker để các ứng dụng bên ngoài vùng chứa có thể giao tiếp với Kafka... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
63... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Báo cho vùng chứa rằng nó có thể tìm thấy ZooKeeper trong vùng chứa
64 đang chạy trên cùng một máy chủ Docker... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Nếu bạn sử dụng Podman, hãy chạy lệnh sau
1$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Trong hướng dẫn này, bạn sẽ luôn kết nối với Kafka từ bên trong bộ chứa Docker. Bất kỳ vùng chứa nào trong số này đều có thể giao tiếp với vùng chứa
65 bằng cách liên kết với vùng chứa đó. Nếu bạn cần kết nối với Kafka từ bên ngoài bộ chứa Docker, bạn sẽ phải đặt tùy chọn... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
66 để quảng cáo địa chỉ Kafka thông qua máy chủ Docker [... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
67 theo sau là địa chỉ IP hoặc tên máy chủ có thể phân giải của máy chủ Docker]... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Xác minh rằng Kafka đã bắt đầu
Bạn sẽ thấy đầu ra tương tự như sau
... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
1Nhà môi giới Kafka đã bắt đầu thành công và sẵn sàng cho các kết nối khách hàng. Thiết bị đầu cuối sẽ tiếp tục hiển thị đầu ra bổ sung khi Kafka tạo ra nó
Bắt đầu một cơ sở dữ liệu MySQL
Tại thời điểm này, bạn đã khởi động ZooKeeper và Kafka, nhưng bạn vẫn cần một máy chủ cơ sở dữ liệu để Debezium có thể ghi lại các thay đổi. Trong quy trình này, bạn sẽ khởi động máy chủ MySQL với cơ sở dữ liệu mẫu
Thủ tục
Mở một thiết bị đầu cuối mới và sử dụng nó để bắt đầu một bộ chứa mới chạy máy chủ cơ sở dữ liệu MySQL được cấu hình sẵn với cơ sở dữ liệu
7... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Lệnh này chạy một vùng chứa mới bằng phiên bản 2. 0 của hình ảnh
69, dựa trên mysql. 8. 0 hình ảnh. Nó cũng định nghĩa và điền vào một cơ sở dữ liệu... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
7 mẫu... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
2$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Bộ chứa có tính tương tác, có nghĩa là đầu vào và đầu ra tiêu chuẩn của thiết bị đầu cuối được gắn vào bộ chứa
3$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Vùng chứa sẽ bị xóa khi dừng
23$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Tên của thùng chứa
24$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Bản đồ cổng
25 [cổng MySQL mặc định] trong vùng chứa tới cùng một cổng trên máy chủ Docker để các ứng dụng bên ngoài vùng chứa có thể kết nối với máy chủ cơ sở dữ liệu$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
26$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Tạo người dùng và mật khẩu có các đặc quyền tối thiểu theo yêu cầu của trình kết nối Debezium MySQL
Nếu bạn sử dụng Podman, hãy chạy lệnh sau
...
2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected]
2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA
...
2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
6Xác minh rằng máy chủ MySQL bắt đầu
Máy chủ MySQL khởi động và dừng một vài lần khi cấu hình được sửa đổi. Bạn sẽ thấy đầu ra tương tự như sau
2$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Khởi động ứng dụng khách dòng lệnh MySQL
Sau khi khởi động MySQL, bạn khởi động ứng dụng khách dòng lệnh MySQL để truy cập cơ sở dữ liệu mẫu
...
2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected]
2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA
...
2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
7Thủ tục
Mở một thiết bị đầu cuối mới và sử dụng nó để khởi động ứng dụng khách dòng lệnh MySQL trong một vùng chứa
Lệnh này chạy một vùng chứa mới bằng cách sử dụng mysql. 8. 0 và xác định lệnh trình bao để chạy ứng dụng khách dòng lệnh MySQL với các tùy chọn chính xác
9$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
2$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Bộ chứa có tính tương tác, có nghĩa là đầu vào và đầu ra tiêu chuẩn của thiết bị đầu cuối được gắn vào bộ chứa
3$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Vùng chứa sẽ bị xóa khi dừng
90$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Tên của thùng chứa
91$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Liên kết vùng chứa với vùng chứa
92$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Nếu bạn sử dụng Podman, hãy chạy lệnh sau
$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
0Xác minh rằng máy khách dòng lệnh MySQL đã bắt đầu
Bạn sẽ thấy đầu ra tương tự như sau
1$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Tại dấu nhắc lệnh
93, hãy chuyển sang cơ sở dữ liệu hàng tồn kho$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
2$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Liệt kê các bảng trong cơ sở dữ liệu
3$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Sử dụng ứng dụng khách dòng lệnh MySQL để khám phá cơ sở dữ liệu và xem dữ liệu được tải sẵn trong cơ sở dữ liệu
Ví dụ
4$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Bắt đầu kết nối Kafka
Sau khi khởi động MySQL và kết nối với cơ sở dữ liệu
...
2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected]
2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA
...
2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
7 bằng máy khách dòng lệnh MySQL, bạn khởi động dịch vụ Kafka Connect. Dịch vụ này hiển thị API REST để quản lý trình kết nối Debezium MySQLThủ tục
Mở một thiết bị đầu cuối mới và sử dụng thiết bị đầu cuối đó để bắt đầu dịch vụ Kafka Connect trong vùng chứa
Lệnh này chạy một vùng chứa mới bằng cách sử dụng 2. 0 phiên bản của hình ảnh
95$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
5$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
2$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Bộ chứa có tính tương tác, có nghĩa là đầu vào và đầu ra tiêu chuẩn của thiết bị đầu cuối được gắn vào bộ chứa
3$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Vùng chứa sẽ bị xóa khi dừng
98$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Tên của thùng chứa
99$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Bản đồ cổng
00 trong vùng chứa đến cùng một cổng trên máy chủ Docker. Điều này cho phép các ứng dụng bên ngoài vùng chứa sử dụng API REST của Kafka Connect để thiết lập và quản lý các phiên bản vùng chứa mới$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
01$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Đặt các biến môi trường theo yêu cầu của hình ảnh Debezium
02$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Liên kết vùng chứa với các vùng chứa đang chạy Kafka và máy chủ MySQL
Nếu bạn sử dụng Podman, hãy chạy lệnh sau
$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
6Nếu bạn cung cấp tùy chọn lệnh
$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
03 thì API Kafka Connect REST sẽ không lắng nghe trên giao diện $ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
04. Điều này có thể gây ra sự cố khi cổng REST bị lộNếu đây là sự cố thì hãy đặt biến môi trường
$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
05 để đảm bảo rằng API REST sẽ có thể truy cập được từ tất cả các giao diệnXác minh rằng Kafka Connect đã bắt đầu và sẵn sàng chấp nhận kết nối
Bạn sẽ thấy đầu ra tương tự như sau
7$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Sử dụng API Kafka Connect REST để kiểm tra trạng thái của dịch vụ Kafka Connect
Kafka Connect hiển thị API REST để quản lý các trình kết nối Debezium. Để liên lạc với dịch vụ Kafka Connect, bạn có thể sử dụng lệnh
06 để gửi các yêu cầu API tới cổng 8083 của máy chủ Docker [mà bạn đã ánh xạ tới cổng 8083 trong vùng chứa$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
07 khi bạn khởi động Kafka Connect]$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Các lệnh này sử dụng
04. Nếu bạn đang sử dụng nền tảng Docker không phải bản địa [chẳng hạn như Hộp công cụ Docker], hãy thay thế$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
04 bằng địa chỉ IP của máy chủ Docker của bạn$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Mở một thiết bị đầu cuối mới và kiểm tra trạng thái của dịch vụ Kafka Connect
8$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
1Phản hồi cho thấy Kafka Connect phiên bản 3. 3. 1 đang chạy
Kiểm tra danh sách các trình kết nối đã đăng ký với Kafka Connect
9$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
1Không có trình kết nối nào hiện được đăng ký với Kafka Connect
Triển khai trình kết nối MySQL
Sau khi bắt đầu các dịch vụ Debezium và MySQL, bạn đã sẵn sàng triển khai trình kết nối Debezium MySQL để nó có thể bắt đầu giám sát cơ sở dữ liệu MySQL mẫu [
...
2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected]
2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA
...
2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
7]Tại thời điểm này, bạn đang chạy các dịch vụ Debezium, máy chủ cơ sở dữ liệu MySQL với cơ sở dữ liệu
...
2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected]
2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA
...
2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
7 mẫu và máy khách dòng lệnh MySQL được kết nối với cơ sở dữ liệu. Để triển khai trình kết nối MySQL, bạn phảiĐăng ký trình kết nối MySQL để giám sát cơ sở dữ liệu
7... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Sau khi trình kết nối được đăng ký, nó sẽ bắt đầu giám sát
13 của máy chủ cơ sở dữ liệu và nó sẽ tạo các sự kiện thay đổi cho mỗi hàng thay đổi$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Xem trình kết nối MySQL bắt đầu
Xem lại đầu ra nhật ký Kafka Connect khi trình kết nối bắt đầu giúp bạn hiểu rõ hơn về từng nhiệm vụ mà nó phải hoàn thành trước khi có thể bắt đầu theo dõi
13$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Đăng ký một trình kết nối để theo dõi cơ sở dữ liệu ...
2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected]
2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA
...
2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
7
...
2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected]
2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA
...
2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Bằng cách đăng ký trình kết nối Debezium MySQL, trình kết nối sẽ bắt đầu theo dõi
$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
13 của máy chủ cơ sở dữ liệu MySQL. $ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
13 ghi lại tất cả các giao dịch của cơ sở dữ liệu [chẳng hạn như thay đổi đối với các hàng riêng lẻ và thay đổi đối với lược đồ]. Khi một hàng trong cơ sở dữ liệu thay đổi, Debezium tạo ra một sự kiện thay đổiTrong môi trường sản xuất, thông thường bạn sẽ sử dụng các công cụ Kafka để tạo các chủ đề cần thiết theo cách thủ công, bao gồm chỉ định số lượng bản sao hoặc bạn sẽ sử dụng cơ chế Kafka Connect để tùy chỉnh cài đặt của các chủ đề được tạo tự động. Tuy nhiên, đối với hướng dẫn này, Kafka được cấu hình để tự động tạo các chủ đề chỉ với một bản sao
Thủ tục
Xem lại cấu hình của trình kết nối Debezium MySQL mà bạn sẽ đăng ký
Trước khi đăng ký trình kết nối, bạn nên làm quen với cấu hình của nó. Trong bước tiếp theo, bạn sẽ đăng ký trình kết nối sau
10... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
1 Tên của đầu nối. 2 Cấu hình của đầu nối. 3Chỉ một tác vụ nên hoạt động tại một thời điểm. Vì trình kết nối MySQL đọc
13 của máy chủ MySQL, nên việc sử dụng một tác vụ trình kết nối duy nhất đảm bảo xử lý sự kiện và thứ tự phù hợp. Dịch vụ Kafka Connect sử dụng các trình kết nối để bắt đầu một hoặc nhiều tác vụ thực hiện công việc và nó tự động phân phối các tác vụ đang chạy trên cụm dịch vụ Kafka Connect. Nếu bất kỳ dịch vụ nào dừng hoặc gặp sự cố, các tác vụ đó sẽ được phân phối lại cho các dịch vụ đang chạy. 4Máy chủ cơ sở dữ liệu, là tên của bộ chứa Docker chạy máy chủ MySQL [$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
92]. Docker thao tác ngăn xếp mạng trong các vùng chứa để mỗi vùng chứa được liên kết có thể được giải quyết bằng$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
20 bằng cách sử dụng tên vùng chứa cho tên máy chủ. Nếu MySQL đang chạy trên một mạng bình thường, bạn sẽ chỉ định địa chỉ IP hoặc tên máy chủ có thể phân giải cho giá trị này. 5Một tiền tố chủ đề duy nhất. Tên này sẽ được sử dụng làm tiền tố cho tất cả các chủ đề Kafka. 6Chỉ những thay đổi trong cơ sở dữ liệu$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
7 mới được phát hiện. 7Trình kết nối sẽ lưu trữ lịch sử của các lược đồ cơ sở dữ liệu trong Kafka bằng cách sử dụng trình môi giới này [cùng một trình môi giới mà bạn đang gửi sự kiện] và tên chủ đề. Sau khi khởi động lại, trình kết nối sẽ khôi phục các lược đồ của cơ sở dữ liệu đã tồn tại tại thời điểm trong... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
13 khi trình kết nối bắt đầu đọc$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Để biết thêm thông tin, hãy xem Thuộc tính cấu hình trình kết nối MySQL
Vì lý do bảo mật, bạn không nên đặt mật khẩu hoặc các bí mật khác ở dạng văn bản thuần túy vào cấu hình trình kết nối. Thay vào đó, mọi bí mật phải được đưa ra bên ngoài thông qua cơ chế được xác định trong KIP-297["Bí mật bên ngoài cho cấu hình kết nối"]
Mở một thiết bị đầu cuối mới và sử dụng lệnh
06 để đăng ký trình kết nối Debezium MySQL$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Lệnh này sử dụng API của dịch vụ Kafka Connect để gửi yêu cầu
24 đối với tài nguyên$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
25 bằng tài liệu JSON mô tả trình kết nối mới [được gọi là$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
26]$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Lệnh này sử dụng
04 để kết nối với máy chủ Docker. Nếu bạn đang sử dụng nền tảng Docker không phải bản địa, hãy thay thế$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
04 bằng địa chỉ IP của máy chủ Docker của bạn$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
11... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Người dùng Windows có thể cần thoát khỏi dấu ngoặc kép. Ví dụ
12... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Nếu không, bạn có thể thấy lỗi như sau
13... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Nếu bạn sử dụng Podman, hãy chạy lệnh sau
...
2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected]
2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA
...
2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
14Xác minh rằng
26 được bao gồm trong danh sách các trình kết nối$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
15... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Xem lại nhiệm vụ của trình kết nối
16... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Bạn sẽ thấy một phản hồi tương tự như sau [được định dạng để dễ đọc]
17... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
1 Trình kết nối đang chạy một tác vụ [tác vụ ________ 930] để thực hiện công việc của nó. Trình kết nối chỉ hỗ trợ một tác vụ duy nhất, bởi vì MySQL ghi lại tất cả các hoạt động của nó trong một
13 tuần tự. Điều này có nghĩa là trình kết nối chỉ cần một trình đọc để có được chế độ xem nhất quán, có thứ tự về tất cả các sự kiện$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Xem trình kết nối bắt đầu
Khi bạn đăng ký một trình kết nối, nó sẽ tạo ra một lượng lớn đầu ra nhật ký trong bộ chứa Kafka Connect. Bằng cách xem xét đầu ra này, bạn có thể hiểu rõ hơn quá trình mà trình kết nối trải qua từ khi nó được tạo cho đến khi nó bắt đầu đọc
$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
13 của máy chủ MySQLSau khi đăng ký trình kết nối
$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
26, bạn có thể xem lại đầu ra nhật ký trong bộ chứa Kafka Connect [$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
07] để theo dõi trạng thái của trình kết nốiMột vài dòng đầu tiên hiển thị trình kết nối [
$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
26] đang được tạo và bắt đầu...
2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected]
2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA
...
2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
18Xa hơn nữa, bạn sẽ thấy đầu ra như sau từ trình kết nối
...
2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected]
2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA
...
2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
19Đầu ra nhật ký Debezium sử dụng ngữ cảnh chẩn đoán được ánh xạ [MDC] để cung cấp thông tin cụ thể theo luồng trong đầu ra nhật ký và giúp dễ hiểu hơn những gì đang xảy ra trong dịch vụ Kafka Connect đa luồng. Điều này bao gồm loại trình kết nối [
$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
36 trong các thông báo nhật ký ở trên], tên logic của trình kết nối [$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
37 ở trên] và hoạt động của trình kết nối [$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
38, $ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
39 và $ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
13]Trong đầu ra nhật ký ở trên, một vài dòng đầu tiên liên quan đến hoạt động
$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
38 của trình kết nối và báo cáo một số thông tin sổ sách kế toán [trong trường hợp này, trình kết nối đã được bắt đầu mà không có phần bù trước]. Ba dòng tiếp theo liên quan đến hoạt động $ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
39 của trình kết nối và báo cáo rằng ảnh chụp nhanh đang được bắt đầu bằng cách sử dụng người dùng MySQL $ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
43 cùng với các khoản trợ cấp MySQL được liên kết với người dùng đóNếu trình kết nối không thể kết nối hoặc nếu nó không nhìn thấy bất kỳ bảng nào hoặc
$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
13, hãy kiểm tra các khoản trợ cấp này để đảm bảo rằng tất cả những điều được liệt kê ở trên đều được bao gồmTiếp theo, trình kết nối báo cáo các bước tạo nên thao tác chụp nhanh
...
2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected]
2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA
...
2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
30Mỗi bước trong số này báo cáo những gì trình kết nối đang thực hiện để thực hiện ảnh chụp nhanh nhất quán. Ví dụ: Bước 6 liên quan đến kỹ thuật đảo ngược các câu lệnh DDL
$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
45 cho các bảng đang được ghi lại và khóa ghi chung chỉ 1 giây sau khi có được nó và Bước 7 đọc tất cả các hàng trong mỗi bảng và báo cáo thời gian đã thực hiện và . Trong trường hợp này, trình kết nối đã hoàn thành ảnh chụp nhanh nhất quán chỉ trong chưa đầy 1 giâyQuá trình chụp nhanh sẽ mất nhiều thời gian hơn với cơ sở dữ liệu của bạn, nhưng trình kết nối xuất ra đủ thông báo tường trình để bạn có thể theo dõi xem nó đang làm việc gì, ngay cả khi các bảng có nhiều hàng. Và mặc dù khóa ghi độc quyền được sử dụng khi bắt đầu quá trình chụp nhanh, nhưng nó sẽ không tồn tại lâu ngay cả đối với cơ sở dữ liệu lớn. Điều này là do khóa được giải phóng trước khi bất kỳ dữ liệu nào được sao chép. Để biết thêm thông tin, hãy xem tài liệu về trình kết nối MySQL
Tiếp theo, Kafka Connect báo cáo một số "lỗi". Tuy nhiên, bạn có thể bỏ qua những cảnh báo này một cách an toàn. những thông báo này chỉ có nghĩa là các chủ đề Kafka mới đã được tạo và Kafka phải chỉ định một người lãnh đạo mới cho mỗi chủ đề
...
2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected]
2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA
...
2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
31Cuối cùng, đầu ra nhật ký cho thấy trình kết nối đã chuyển từ chế độ ảnh chụp nhanh sang chế độ đọc liên tục
$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
13 của máy chủ MySQL...
2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected]
2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA
...
2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
32Xem sự kiện thay đổi
Sau khi triển khai trình kết nối Debezium MySQL, nó bắt đầu theo dõi cơ sở dữ liệu
...
2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected]
2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA
...
2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
7 để biết các sự kiện thay đổi dữ liệuKhi bạn xem trình kết nối khởi động, bạn sẽ thấy rằng các sự kiện được ghi vào các chủ đề sau với tiền tố
$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
37 [tên của trình kết nối]$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
37Lược đồ thay đổi chủ đề mà tất cả các câu lệnh DDL được viết
$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
50Nắm bắt các sự kiện thay đổi cho bảng
$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
51 trong cơ sở dữ liệu ...
2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected]
2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA
...
2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
7$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
53Nắm bắt các sự kiện thay đổi cho bảng
$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
54 trong cơ sở dữ liệu ...
2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected]
2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA
...
2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
7$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
56Nắm bắt các sự kiện thay đổi cho bảng
$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
57 trong cơ sở dữ liệu ...
2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected]
2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA
...
2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
7$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
59Nắm bắt các sự kiện thay đổi cho bảng
$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
60 trong cơ sở dữ liệu ...
2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected]
2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA
...
2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
7Đối với hướng dẫn này, bạn sẽ khám phá chủ đề
$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
56. Trong chủ đề này, bạn sẽ thấy các loại sự kiện thay đổi khác nhau để xem cách trình kết nối nắm bắt chúngXem một sự kiện tạo
Cập nhật cơ sở dữ liệu và xem sự kiện cập nhật
Xóa một bản ghi trong cơ sở dữ liệu và xem sự kiện xóa
Khởi động lại Kafka Connect và thay đổi cơ sở dữ liệu
Xem một sự kiện tạo
Bằng cách xem chủ đề
$ sudo podman pod create --name=dbz --publish "9092,3306,8083"
$ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
56, bạn có thể thấy cách trình kết nối MySQL đã chụp tạo sự kiện trong cơ sở dữ liệu ...
2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected]
2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA
...
2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
7. Trong trường hợp này, sự kiện tạo nắm bắt khách hàng mới được thêm vào cơ sở dữ liệuThủ tục
Mở một thiết bị đầu cuối mới và sử dụng nó để khởi động tiện ích
65 để xem chủ đề$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
56 từ đầu chủ đề$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Tiện ích
65 rất đơn giản và hạn chế về chức năng. Nó không được ứng dụng sử dụng để tiêu thụ các sự kiện. Trong trường hợp đó, thay vào đó, bạn sẽ sử dụng người tiêu dùng Kafka và các thư viện người tiêu dùng hiện hành cung cấp đầy đủ chức năng và tính linh hoạt$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Lệnh này chạy tiện ích
65 trong vùng chứa mới bằng cách sử dụng 2. 0 phiên bản của hình ảnh$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
69$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
33... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
70$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Theo dõi tất cả các sự kiện kể từ khi chủ đề được tạo. Nếu không có tùy chọn này,
65 sẽ chỉ hiển thị các sự kiện được ghi lại sau khi bạn bắt đầu xem$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
72$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Chỉ định rằng đầu ra phải bao gồm khóa của sự kiện. Trong trường hợp này, nó chứa khóa chính của hàng
Nếu bạn sử dụng Podman, hãy chạy lệnh sau
34... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Tiện ích
65 trả về các bản ghi sự kiện từ bảng$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
57. Có bốn sự kiện, một sự kiện cho mỗi hàng trong bảng. Mỗi sự kiện được định dạng bằng JSON, vì đó là cách bạn định cấu hình dịch vụ Kafka Connect. Có hai tài liệu JSON cho mỗi sự kiện. một cho khóa và một cho giá trị$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Bạn sẽ thấy đầu ra tương tự như sau
35... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Tiện ích này tiếp tục theo dõi chủ đề, vì vậy mọi sự kiện mới sẽ tự động xuất hiện miễn là tiện ích đang chạy
Đối với sự kiện cuối cùng, hãy xem lại chi tiết của khóa
Dưới đây là chi tiết về khóa của sự kiện cuối cùng [được định dạng để dễ đọc]
36... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Sự kiện có hai phần. một
75 và một$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
76.$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
75 chứa lược đồ Kafka Connect mô tả nội dung trong tải trọng. Trong trường hợp này, tải trọng là một$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
78 có tên là$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
79 không phải là tùy chọn và có một trường bắt buộc [$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
80 thuộc loại$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
81]$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
76 có một trường$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
80 duy nhất, với giá trị là$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
84$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Bằng cách xem lại khóa của sự kiện, bạn có thể thấy rằng sự kiện này áp dụng cho hàng trong bảng
85 có cột khóa chính$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
80 có giá trị là$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
84$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Xem lại chi tiết giá trị của cùng một sự kiện
Giá trị của sự kiện cho biết rằng hàng đã được tạo và mô tả nội dung của hàng đó [trong trường hợp này là
80,$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
89,$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
90 và$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
91 của hàng được chèn]$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Dưới đây là chi tiết về giá trị của sự kiện cuối cùng [được định dạng để dễ đọc]
37... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Phần này của sự kiện dài hơn nhiều, nhưng giống như chìa khóa của sự kiện, nó cũng có một
75 và một$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
76.$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
75 chứa lược đồ Kafka Connect có tên$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
95 [phiên bản 1] có thể chứa năm trường$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
96$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Trường bắt buộc chứa giá trị chuỗi mô tả loại thao tác. Các giá trị cho trình kết nối MySQL là
97 để tạo [hoặc chèn],$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
98 để cập nhật,$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
99 để xóa và$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
100 để đọc [trong trường hợp ảnh chụp nhanh]... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
101... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Một trường tùy chọn, nếu có, chứa trạng thái của hàng trước khi sự kiện xảy ra. Cấu trúc sẽ được mô tả bởi lược đồ
102 Kafka Connect, mà trình kết nối... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
37 sử dụng cho tất cả các hàng trong bảng$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
85$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
105... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Một trường tùy chọn, nếu có, chứa trạng thái của hàng sau khi sự kiện xảy ra. Cấu trúc được mô tả bởi cùng một lược đồ
102 Kafka Connect được sử dụng trong... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
101... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
108... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Trường bắt buộc chứa cấu trúc mô tả siêu dữ liệu nguồn cho sự kiện, trong trường hợp của MySQL, chứa một số trường. tên trình kết nối, tên của tệp
13 nơi sự kiện được ghi lại, vị trí trong tệp$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
13 nơi sự kiện xuất hiện, hàng trong sự kiện [nếu có nhiều hơn một], tên của cơ sở dữ liệu và bảng bị ảnh hưởng,$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
111... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Một trường tùy chọn, nếu có, chứa thời gian [sử dụng đồng hồ hệ thống trong JVM đang chạy tác vụ Kafka Connect] mà tại đó trình kết nối đã xử lý sự kiện
Các biểu diễn JSON của các sự kiện dài hơn nhiều so với các hàng mà chúng mô tả. Điều này là do, với mọi khóa và giá trị sự kiện, Kafka Connect gửi lược đồ mô tả tải trọng. Theo thời gian, cấu trúc này có thể thay đổi. Tuy nhiên, việc có các lược đồ cho khóa và giá trị trong chính sự kiện giúp việc sử dụng các ứng dụng hiểu thông báo dễ dàng hơn nhiều, đặc biệt là khi chúng phát triển theo thời gian
Trình kết nối Debezium MySQL xây dựng các lược đồ này dựa trên cấu trúc của các bảng cơ sở dữ liệu. Nếu bạn sử dụng các câu lệnh DDL để thay đổi các định nghĩa bảng trong cơ sở dữ liệu MySQL, trình kết nối sẽ đọc các câu lệnh DDL này và cập nhật các lược đồ Kafka Connect của nó. Đây là cách duy nhất mà mỗi sự kiện được cấu trúc chính xác như bảng nơi nó bắt nguồn vào thời điểm sự kiện xảy ra. Tuy nhiên, chủ đề Kafka chứa tất cả các sự kiện cho một bảng có thể có các sự kiện tương ứng với từng trạng thái của định nghĩa bảng
Trình chuyển đổi JSON bao gồm các lược đồ khóa và giá trị trong mọi thông báo, do đó, nó tạo ra các sự kiện dài dòng. Ngoài ra, bạn có thể sử dụng Apache Avro làm định dạng tuần tự hóa, dẫn đến các thông báo sự kiện nhỏ hơn nhiều. Điều này là do nó chuyển đổi từng lược đồ Kafka Connect thành lược đồ Avro và lưu trữ các lược đồ Avro trong một dịch vụ Schema Registry riêng biệt. Do đó, khi bộ chuyển đổi Avro tuần tự hóa một thông báo sự kiện, nó chỉ đặt một mã định danh duy nhất cho lược đồ cùng với biểu diễn nhị phân được mã hóa Avro của giá trị. Do đó, các tin nhắn được đánh số thứ tự được truyền qua dây và được lưu trữ trong Kafka nhỏ hơn nhiều so với những gì bạn đã thấy ở đây. Trên thực tế, Bộ chuyển đổi Avro có thể sử dụng các kỹ thuật tiến hóa lược đồ Avro để duy trì lịch sử của từng lược đồ trong Sổ đăng ký lược đồ
So sánh các lược đồ khóa và giá trị của sự kiện với trạng thái của cơ sở dữ liệu
7. Trong thiết bị đầu cuối đang chạy máy khách dòng lệnh MySQL, hãy chạy câu lệnh sau... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
4$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Điều này cho thấy rằng các bản ghi sự kiện mà bạn đã xem xét khớp với các bản ghi trong cơ sở dữ liệu
Cập nhật cơ sở dữ liệu và xem sự kiện cập nhật
Bây giờ bạn đã thấy cách trình kết nối Debezium MySQL nắm bắt các sự kiện tạo trong cơ sở dữ liệu
...
2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected]
2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA
...
2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
7, bây giờ bạn sẽ thay đổi một trong các bản ghi và xem cách trình kết nối nắm bắt nóBằng cách hoàn thành quy trình này, bạn sẽ học cách tìm chi tiết về những gì đã thay đổi trong một cam kết cơ sở dữ liệu và cách bạn có thể so sánh các sự kiện thay đổi để xác định thời điểm thay đổi xảy ra so với các thay đổi khác
Thủ tục
Trong thiết bị đầu cuối đang chạy máy khách dòng lệnh MySQL, hãy chạy câu lệnh sau
39... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Xem bảng
57 được cập nhật$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
10$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Chuyển sang thiết bị đầu cuối đang chạy
65 để xem sự kiện thứ năm mới$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Bằng cách thay đổi một bản ghi trong bảng
57, trình kết nối Debezium MySQL đã tạo ra một sự kiện mới. Bạn sẽ thấy hai tài liệu JSON mới. một cho khóa của sự kiện và một cho giá trị của sự kiện mới$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Dưới đây là chi tiết về khóa cho sự kiện cập nhật [được định dạng để dễ đọc]
11$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Khóa này giống với khóa cho các sự kiện trước đó
Đây là giá trị của sự kiện mới đó. Không có thay đổi nào trong phần
75, vì vậy chỉ phần$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
76 được hiển thị [được định dạng để dễ đọc]$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
12$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
1 Trường ________ 1101 hiện có trạng thái của hàng với các giá trị trước khi xác nhận cơ sở dữ liệu. 2 Trường ________ 1105 hiện có trạng thái cập nhật của hàng và giá trị
89 hiện là ________ 1122. 3Cấu trúc trường$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
108 có nhiều giá trị giống như trước đây, ngoại trừ trường... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
124 và... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
125 đã thay đổi [_______1126 có thể đã thay đổi trong các trường hợp khác]. 4 Giá trị trường ________ 996 hiện là ________ 998, biểu thị rằng hàng này đã thay đổi do cập nhật. 5 Trường ________ 1111 hiển thị dấu thời gian khi Debezium xử lý sự kiện này... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Bằng cách xem phần
76, bạn có thể tìm hiểu một số điều quan trọng về sự kiện cập nhật$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Bằng cách so sánh cấu trúc
101 và... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
105, bạn có thể xác định điều gì thực sự đã thay đổi trong hàng bị ảnh hưởng do cam kết... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Bằng cách xem xét cấu trúc
108, bạn có thể tìm thấy thông tin về bản ghi thay đổi của MySQL [cung cấp khả năng truy xuất nguồn gốc]... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Bằng cách so sánh phần
76 của một sự kiện với các sự kiện khác trong cùng một chủ đề [hoặc một chủ đề khác], bạn có thể xác định xem sự kiện đó xảy ra trước, sau hay là một phần của cùng một cam kết MySQL như một sự kiện khác$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Xóa một bản ghi trong cơ sở dữ liệu và xem sự kiện xóa
Bây giờ bạn đã thấy cách trình kết nối Debezium MySQL nắm bắt các sự kiện tạo và cập nhật trong cơ sở dữ liệu
...
2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected]
2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA
...
2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
7, bây giờ bạn sẽ xóa một trong các bản ghi và xem cách trình kết nối nắm bắt nóBằng cách hoàn thành quy trình này, bạn sẽ tìm hiểu cách tìm thông tin chi tiết về các sự kiện xóa và cách Kafka sử dụng tính năng nén nhật ký để giảm số lượng các sự kiện xóa trong khi vẫn cho phép người tiêu dùng nhận được tất cả các sự kiện
Thủ tục
Trong thiết bị đầu cuối đang chạy máy khách dòng lệnh MySQL, hãy chạy câu lệnh sau
13$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Nếu lệnh trên không thành công do vi phạm ràng buộc khóa ngoài, thì bạn phải xóa tham chiếu địa chỉ khách hàng khỏi bảng địa chỉ bằng cách sử dụng câu lệnh sau
14$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Chuyển sang thiết bị đầu cuối đang chạy
65 để xem hai sự kiện mới$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Bằng cách xóa một hàng trong bảng
57, trình kết nối Debezium MySQL đã tạo ra hai sự kiện mới$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Xem lại khóa và giá trị cho sự kiện mới đầu tiên
Dưới đây là chi tiết về khóa cho sự kiện mới đầu tiên [được định dạng để dễ đọc]
15$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Khóa này giống với khóa trong hai sự kiện trước mà bạn đã xem
Đây là giá trị của sự kiện mới đầu tiên [được định dạng để dễ đọc]
16$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
1 Trường ________ 1101 hiện có trạng thái của hàng đã bị xóa với cam kết cơ sở dữ liệu. 2 Trường ________ 1105 là ________ 1140 vì hàng không còn tồn tại. 3Cấu trúc trường
108 có nhiều giá trị giống như trước đây, ngoại trừ các trường... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
124 và... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
125 đã thay đổi [các trường... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
126 có thể đã thay đổi trong các trường hợp khác]. 4 Giá trị trường ________ 996 hiện là ________ 999, biểu thị rằng hàng này đã bị xóa. 5 Trường ________ 1111 hiển thị dấu thời gian khi Debezium xử lý sự kiện này... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Do đó, sự kiện này cung cấp cho người tiêu dùng thông tin cần thiết để xử lý việc xóa hàng. Các giá trị cũ cũng được cung cấp vì một số người tiêu dùng có thể yêu cầu họ xử lý việc xóa đúng cách
Xem lại khóa và giá trị cho sự kiện mới thứ hai
Đây là chìa khóa cho sự kiện mới thứ hai [được định dạng để dễ đọc]
11$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Một lần nữa, khóa này hoàn toàn giống với khóa trong ba sự kiện trước mà bạn đã xem
Đây là giá trị của cùng một sự kiện đó [được định dạng để dễ đọc]
18$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Nếu Kafka được thiết lập để nén nhật ký, nó sẽ xóa các thư cũ hơn khỏi chủ đề nếu có ít nhất một thư sau đó trong chủ đề có cùng khóa. Sự kiện cuối cùng này được gọi là sự kiện Tombstone, bởi vì nó có một khóa và một giá trị trống. Điều này có nghĩa là Kafka sẽ xóa tất cả các tin nhắn trước đó bằng cùng một khóa. Mặc dù các tin nhắn trước đó sẽ bị xóa nhưng sự kiện Tombstone có nghĩa là người tiêu dùng vẫn có thể đọc chủ đề từ đầu và không bỏ lỡ bất kỳ sự kiện nào
Khởi động lại dịch vụ Kafka Connect
Bây giờ bạn đã thấy cách trình kết nối Debezium MySQL nắm bắt các sự kiện tạo, cập nhật và xóa, bây giờ bạn sẽ thấy cách nó có thể nắm bắt các sự kiện thay đổi ngay cả khi nó không chạy
Dịch vụ Kafka Connect tự động quản lý các tác vụ cho các trình kết nối đã đăng ký của nó. Do đó, nếu nó ngoại tuyến, khi khởi động lại, nó sẽ bắt đầu mọi tác vụ không chạy. Điều này có nghĩa là ngay cả khi Debezium không chạy, nó vẫn có thể báo cáo các thay đổi trong cơ sở dữ liệu
Trong quy trình này, bạn sẽ dừng Kafka Connect, thay đổi một số dữ liệu trong cơ sở dữ liệu, sau đó khởi động lại Kafka Connect để xem các sự kiện thay đổi
Thủ tục
Mở một thiết bị đầu cuối mới và sử dụng nó để dừng bộ chứa
07 đang chạy dịch vụ Kafka Connect$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
19$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Bộ chứa
07 bị dừng và dịch vụ Kafka Connect tắt một cách duyên dáng$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Vì bạn đã chạy vùng chứa với tùy chọn
3, Docker sẽ xóa vùng chứa sau khi nó dừng$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Trong khi dịch vụ ngừng hoạt động, hãy chuyển sang thiết bị đầu cuối cho máy khách dòng lệnh MySQL và thêm một vài bản ghi
0... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Các bản ghi được thêm vào cơ sở dữ liệu. Tuy nhiên, vì Kafka Connect không chạy nên
65 không ghi lại bất kỳ bản cập nhật nào$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Trong một hệ thống sản xuất, bạn sẽ có đủ người môi giới để xử lý người sản xuất và người tiêu dùng và để duy trì số lượng bản sao không đồng bộ tối thiểu cho mỗi chủ đề. Do đó, nếu đủ người môi giới thất bại đến mức không còn số lượng ISR tối thiểu, Kafka sẽ không khả dụng. Trong trường hợp này, các nhà sản xuất [như trình kết nối Debezium] và người tiêu dùng sẽ đợi cụm hoặc mạng Kafka phục hồi. Điều này có nghĩa là, tạm thời, người tiêu dùng của bạn có thể không thấy bất kỳ sự kiện thay đổi nào khi dữ liệu được thay đổi trong cơ sở dữ liệu. Điều này là do không có sự kiện thay đổi nào được tạo ra. Ngay sau khi cụm Kafka được khởi động lại hoặc mạng phục hồi, Debezium sẽ tiếp tục tạo các sự kiện thay đổi và người tiêu dùng của bạn sẽ tiếp tục sử dụng các sự kiện mà họ đã dừng lại
Mở một thiết bị đầu cuối mới và sử dụng nó để khởi động lại dịch vụ Kafka Connect trong vùng chứa
Lệnh này khởi động Kafka Connect bằng các tùy chọn giống như bạn đã sử dụng khi khởi động lần đầu
1... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Dịch vụ Kafka Connect bắt đầu, kết nối với Kafka, đọc cấu hình của dịch vụ trước đó và khởi động các trình kết nối đã đăng ký sẽ tiếp tục ở nơi chúng dừng lại lần cuối
Đây là một vài dòng cuối cùng từ dịch vụ được khởi động lại này
2... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Những dòng này cho thấy rằng dịch vụ đã tìm thấy các phần bù được ghi lại trước đó bởi tác vụ cuối cùng trước khi nó bị tắt, được kết nối với cơ sở dữ liệu MySQL, bắt đầu đọc
13 từ vị trí đó và tạo các sự kiện từ bất kỳ thay đổi nào trong cơ sở dữ liệu MySQL kể từ thời điểm đó$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Chuyển sang thiết bị đầu cuối đang chạy
65 để xem các sự kiện cho hai bản ghi mới mà bạn đã tạo khi Kafka Connect ngoại tuyến$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
3... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Những sự kiện này là sự kiện tạo tương tự như những sự kiện bạn đã thấy trước đây. Như bạn thấy, Debezium vẫn báo cáo tất cả các thay đổi trong cơ sở dữ liệu ngay cả khi nó không chạy [miễn là nó được khởi động lại trước khi cơ sở dữ liệu MySQL xóa các cam kết bị bỏ lỡ khỏi
13 của nó]$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Dọn dẹp
Sau khi hoàn thành hướng dẫn, bạn có thể sử dụng Docker để dừng tất cả các container đang chạy
Thủ tục
Dừng từng container
4... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Docker dừng từng container. Vì bạn đã sử dụng tùy chọn
3 khi khởi động chúng nên Docker cũng loại bỏ chúng$ docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw quay.io/debezium/example-mysql:2.0
Nếu bạn sử dụng Podman, hãy chạy lệnh sau
...
2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected]
2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA
...
2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
5Xác minh rằng tất cả các quy trình đã dừng và đã bị xóa
6... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Nếu bất kỳ quy trình nào vẫn đang chạy, hãy dừng chúng bằng cách sử dụng
156 hoặc... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
157... 2017-09-21 07:16:59,085 - INFO [main-EventThread:ZkClient@713] - zookeeper state changed [SyncConnected] 2017-09-21 07:16:59,218 - INFO [main:Logging$class@70] - Cluster ID = LPtcBFxzRvOzDSXhc6AamA ... 2017-09-21 07:16:59,649 - INFO [main:Logging$class@70] - [Kafka Server 1], started [1]
Bước tiếp theo
Sau khi hoàn thành hướng dẫn, hãy xem xét các bước tiếp theo sau
Khám phá hướng dẫn thêm
Sử dụng ứng dụng khách dòng lệnh MySQL để thêm, sửa đổi và xóa các hàng trong bảng cơ sở dữ liệu và xem tác động đối với các chủ đề. Bạn có thể cần chạy một lệnh
65 riêng cho từng chủ đề. Hãy nhớ rằng bạn không thể xóa một hàng được tham chiếu bởi khóa ngoại$ sudo podman pod create --name=dbz --publish "9092,3306,8083" $ sudo podman run -it --rm --name zookeeper --pod dbz quay.io/debezium/zookeeper:2.0
Hãy thử chạy hướng dẫn với trình kết nối Debezium cho Postgres, MongoDB, SQL Server và Oracle
Bạn có thể sử dụng phiên bản Docker Compose của hướng dẫn này nằm trong kho ví dụ Debezium. Các tệp Docker Compose được cung cấp để chạy hướng dẫn với MySQL, Postgres, MongoDB, SQL Server và Oracle