Hướng Dẫn Đồng Bộ MySQL và Oracle Thời Gian Thực Với SeaTunnel
Khi nói đến các công cụ đồng bộ hóa giữa MySQL và Oracle, ngoài OGG truyền thống, SeaTunnel (ST) chắc chắn là một lựa chọn không thể bỏ qua. Công cụ này rất tiện lợi và đã được triển khai thành công trong hệ thống sản xuất của chúng tôi trong 4 tháng qua với 3 cơ sở dữ liệu nguồn, hoàn toàn ổn định! Khuyến nghị mọi người nên thử ngay.
1. Cách Sử Dụng SeaTunnel
Trước tiên, bạn có thể kiểm tra thông tin trợ giúp của SeaTunnel bằng cách chạy lệnh sau:
bash
./bin/seatunnel.sh -h
1.1 Thông tin về các tùy chọn
Tham số | Viết tắt | Mô tả |
---|---|---|
--config | -c | Tham số bắt buộc, xác định đường dẫn đến tệp cấu hình |
--name | -n | Xác định tên công việc (mặc định là "SeaTunnel") |
--master | -m hoặc -e | Xác định chế độ triển khai: local hoặc cluster (giá trị mặc định) |
--async | None | Chạy công việc ở chế độ không đồng bộ, và client sẽ thoát ngay sau khi gửi (mặc định là false) |
--variable | -i | Thay thế biến, định dạng: -i key=value, nhiều biến được phân tách bằng dấu phẩy |
1.2 Các tham số liên quan đến quản lý công việc
Tham số | Viết tắt | Mô tả |
---|---|---|
--job-id | -j | Lấy trạng thái công việc theo JobId |
--list | -l | Liệt kê trạng thái của tất cả các công việc |
--cancel-job | -can | Hủy công việc theo JobId |
--close-job | -cj | Đóng tác vụ khi đóng client (mặc định true) |
--savepoint | -s | Tạo savepoint cho công việc với JobId chỉ định |
--restore | -r | Khôi phục công việc từ savepoint |
--metrics | None | Lấy thông tin giám sát của công việc chỉ định |
--get_running_job_metrics | None | Lấy thông tin giám sát của các công việc đang chạy |
2. Cách Cài Đặt SeaTunnel
Bạn có thể tham khảo bài viết trước để biết cách cài đặt SeaTunnel:
3. Quản Lý Công Việc Hàng Ngày
3.1 Xem các công việc
Để xem trạng thái của các công việc, bạn có thể sử dụng lệnh:
bash
./bin/seatunnel.sh -l
3.2 Tạm Dừng Công Việc
Để tạm dừng một công việc, chạy lệnh:
bash
./bin/seatunnel.sh -s 967714059992432641
3.3 Khởi Động Lại Một Công Việc Đã Tạm Dừng
Khi muốn khởi động lại một công việc đã tạm dừng, sử dụng lệnh:
bash
./bin/seatunnel.sh -r 967714059992432641 -c $SEATUNNEL_HOME/config/mysql_virdb_config
3.4 Hủy Công Việc
Để hủy một công việc, bạn có thể sử dụng lệnh sau. Lệnh này sẽ dừng công việc và trạng thái sẽ chuyển sang CANCELED:
bash
./bin/seatunnel.sh -can 967714059992432641
4. Cấu Hình Ghi Nhật Ký Trong SeaTunnel
Tệp cấu hình ghi nhật ký có thể được tìm thấy tại: $SEATUNNEL_HOME/config/log4j2.properties
4.1 Cấu Hình Ghi Nhật Ký Riêng Cho Mỗi Công Việc
Để ghi nhật ký riêng cho mỗi công việc, bạn có thể chỉnh sửa như sau:
bash
rootLogger.appenderRef.file.ref = routingAppender
appender.file.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%-30.30c{1.}] [%t] - %m%n
4.2 Xóa Nhật Ký Cũ Tự Động
Để cấu hình xóa nhật ký cũ tự động, bạn cần thêm vào tệp cấu hình như sau:
bash
seatunnel:
engine:
history-job-expire-minutes:1440
telemetry:
logs:
scheduled-deletion-enable:true
5. Giao Diện Web Để Giám Sát Công Việc
Giao diện web cho công việc giám sát đã có sẵn. Để cấu hình và truy cập, làm theo các bước sau:
5.1 Cấu Hình Giao Diện Web
Trong tệp cấu hình $SEATUNNEL_HOME/config/seatunnel.yaml
, đảm bảo các thông số sau:
bash
seatunnel:
engine:
http:
enable-http:true
port:8080
5.2 Truy Cập Giao Diện Web
Mở trình duyệt và truy cập vào địa chỉ: http://ip:8080
5.3 Xác Minh Đồng Bộ Dữ Liệu
So sánh giữa thời gian tạo/cập nhật mới nhất và số lượng bản ghi để xác minh tính chính xác của dữ liệu.
6. Các Lỗi Thông Thường
6.1 Cần Cấu Hình Tên Cơ Sở Dữ Liệu và Bảng
Nếu không cấu hình đầy đủ tên cơ sở dữ liệu và bảng, lỗi sẽ xảy ra.
6.2 Vấn Đề Với ID
Nếu trường ID không được tìm thấy, lỗi sẽ được báo cáo.
6.3 Đã Tồn Tại
Khi có thông báo lỗi "ORA-00955: name is already used by an existing object", có nghĩa là đối tượng đã tồn tại.
6.4 Độ Trễ Dữ Liệu
Nếu có độ trễ trong việc đồng bộ hóa, có thể mất vài ngày trước khi lỗi biến mất.
7. Tài Nguyên Tham Khảo
- Tải về: SeaTunnel Download
- Cấu hình MySQL-CDC: MySQL-CDC Config
- Cấu hình Sink Oracle: Oracle Config
- Cấu hình ghi nhật ký riêng cho từng công việc: Logging Config
Kết Luận
SeaTunnel là công cụ tuyệt vời để đồng bộ hóa dữ liệu giữa MySQL và Oracle mà không gặp phải nhiều vấn đề phức tạp. Hãy thử nghiệm ngay hôm nay để nâng cao hiệu suất hệ thống của bạn! Nếu bạn có bất kỳ câu hỏi nào, đừng ngần ngại để lại câu hỏi dưới đây.
Câu Hỏi Thường Gặp (FAQ)
1. SeaTunnel có hỗ trợ các phiên bản MySQL cũ không?
Có, SeaTunnel có thể hoạt động với các phiên bản MySQL cũ, nhưng bạn nên kiểm tra tính tương thích trước khi triển khai.
2. Làm thế nào để khôi phục từ savepoint?
Bạn chỉ cần sử dụng lệnh ./bin/seatunnel.sh -r <jobId> -c <configPath>
để khôi phục công việc từ savepoint đã tạo.
3. Có cách nào để tự động hóa quá trình đồng bộ không?
Có, bạn có thể thiết lập các tác vụ cron để tự động hóa lệnh đồng bộ hóa này.