Biến môi trường mysql
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ả Show
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
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ề DebeziDebezium 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 có 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. 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 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 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 Cân nhắc khi chạy Debezium với DockerHướ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 một 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
Người quản lý vườn thú bắt đầuZooKeeper là dịch vụ đầu tiên bạn phải bắt đầu Thủ tục
Nếu bạn sử dụng Podman, hãy chạy lệnh sau. s
Bắt đầu KafkaSau khi khởi động ZooKeeper, bạn có thể khởi động Kafka trong vùng chứa mới Debezi 2. 1. 2. 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
Bắt đầu một cơ sở dữ liệu MySQLTạ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
Nếu bạn sử dụng Podman, hãy chạy lệnh sau
Khởi động ứng dụng khách dòng lệnh MySQLSau 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 7 mẫuThủ tục
Nếu bạn sử dụng Podman, hãy chạy lệnh sau 0
Bắt đầu kết nối KafkaSau khi khởi động MySQL và kết nối với cơ sở dữ liệu 7 bằng ứng dụng 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
Nếu bạn sử dụng Podman, hãy chạy lệnh sau 6Nếu bạn cung cấp tùy chọn lệnh 03 thì API Kafka Connect REST sẽ không lắng nghe trên giao diện 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 05 để đảm bảo rằng API REST sẽ có thể truy cập được từ tất cả các giao diện
Triển khai trình kết nối MySQLSau 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 ( 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 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ý một trình kết nối để giám sá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)7Bằng cách đăng ký trình kết nối Debezium MySQL, trình kết nối sẽ bắt đầu giám sát 13 của máy chủ cơ sở dữ liệu MySQL. 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
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")
Nếu bạn sử dụng Podman, hãy chạy lệnh sau 4
Xem trình kết nối bắt đầuKhi 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 lại kết quả này, bạn có thể hiểu rõ hơn về quy 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 13 của máy chủ MySQLSau khi đăng ký trình kết nối 26, bạn có thể xem lại đầu ra nhật ký trong bộ chứa Kafka Connect ( 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 ( 26) đang được tạo và bắt đầu 8Xa hơn nữa, bạn sẽ thấy đầu ra như sau từ trình kết nối 9Đầ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 ( 36 trong thông báo tường trình ở trên), tên logic của trình kết nối ( 37 ở trên) và hoạt động của trình kết nối ( 38, 39 và 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 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 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 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 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 0Mỗ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 45 cho các bảng đang được ghi lại và khóa ghi toàn cầu chỉ 1 giây sau khi lấy đượ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 bản ghi để bạn có thể theo dõi xem nó đang làm việc trên cái 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 Tiếp theo, Kafka Connect báo cáo một số "lỗi". Tuy nhiên, bạn có thể yên tâm bỏ qua những cảnh báo này. 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ủ đề 1Cuố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 13 của máy chủ MySQL 2Xem sự kiện thay đổiSau khi triển khai trình kết nối Debezium MySQL, nó bắt đầu theo dõi cơ sở dữ liệu 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 viết cho các chủ đề sau với tiền tố 37 (tên của trình kết nối) 37Nơi mà tất cả các câu lệnh DDL được viết 50Nắm bắt các sự kiện thay đổi cho bảng 51 trong cơ sở dữ liệu 7 53Nắm bắt các sự kiện thay đổi cho bảng 54 trong cơ sở dữ liệu 7 56Nắm bắt các sự kiện thay đổi cho bảng 57 trong cơ sở dữ liệu 7 59Nắm bắt các sự kiện thay đổi cho bảng 60 trong cơ sở dữ liệu 7Đối với hướng dẫn này, bạn sẽ khám phá chủ đề 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ạoBằng cách xem chủ đề 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 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
Cập nhật cơ sở dữ liệu và xem sự kiện cập nhậtBâ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 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
Xóa một bản ghi trong cơ sở dữ liệu và xem sự kiện xóaBâ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 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
Khởi động lại dịch vụ Kafka ConnectBâ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
Dọn dẹpSau 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
Nếu bạn sử dụng Podman, hãy chạy lệnh sau 5
Bước tiếp theoSau khi hoàn thành hướng dẫn, hãy xem xét các bước tiếp theo sau
|