MySQL VỚI_SSL
CHÚ Ý. Kho lưu trữ này không còn được duy trì. Tôi khuyên bạn nên chuyển sang osheroff/mysql-binlog-connector-javaTrình kết nối Nhật ký nhị phân MySQL Show
Ban đầu, dự án được bắt đầu như một nhánh của open-replicator, nhưng cuối cùng lại được viết lại hoàn toàn. Sự khác biệt / tính năng chính
Cách sử dụngNhận (các) JAR mới nhất từ đây. Ngoài ra, bạn có thể bao gồm phần phụ thuộc Maven sau (có sẵn thông qua Maven Central) <dependency> <groupId>com.github.shyikogroupId> <artifactId>mysql-binlog-connector-javaartifactId> <version>0.21.0version> dependency> Đọc tệp nhật ký nhị phânFile binlogFile = ... EventDeserializer eventDeserializer = new EventDeserializer(); eventDeserializer.setCompatibilityMode( EventDeserializer.CompatibilityMode.DATE_AND_TIME_AS_LONG, EventDeserializer.CompatibilityMode.CHAR_AND_BINARY_AS_BYTE_ARRAY ); BinaryLogFileReader reader = new BinaryLogFileReader(binlogFile, eventDeserializer); try { for (Event event; (event = reader.readEvent()) != null; ) { ... } } finally { reader.close(); } Khai thác vào luồng sao chép MySQL
BinaryLogClient client = new BinaryLogClient("hostname", 3306, "username", "password"); EventDeserializer eventDeserializer = new EventDeserializer(); eventDeserializer.setCompatibilityMode( EventDeserializer.CompatibilityMode.DATE_AND_TIME_AS_LONG, EventDeserializer.CompatibilityMode.CHAR_AND_BINARY_AS_BYTE_ARRAY ); client.setEventDeserializer(eventDeserializer); client.registerEventListener(new EventListener() { @Override public void onEvent(Event event) { ... } }); client.connect();
File binlogFile = ... EventDeserializer eventDeserializer = new EventDeserializer(); eventDeserializer.setCompatibilityMode( EventDeserializer.CompatibilityMode.DATE_AND_TIME_AS_LONG, EventDeserializer.CompatibilityMode.CHAR_AND_BINARY_AS_BYTE_ARRAY ); BinaryLogFileReader reader = new BinaryLogFileReader(binlogFile, eventDeserializer); try { for (Event event; (event = reader.readEvent()) != null; ) { ... } } finally { reader.close(); }5 đang chặn (có nghĩa là khách hàng sẽ lắng nghe các sự kiện trong chuỗi hiện tại). Mặt khác,File binlogFile = ... EventDeserializer eventDeserializer = new EventDeserializer(); eventDeserializer.setCompatibilityMode( EventDeserializer.CompatibilityMode.DATE_AND_TIME_AS_LONG, EventDeserializer.CompatibilityMode.CHAR_AND_BINARY_AS_BYTE_ARRAY ); BinaryLogFileReader reader = new BinaryLogFileReader(binlogFile, eventDeserializer); try { for (Event event; (event = reader.readEvent()) != null; ) { ... } } finally { reader.close(); }6 sinh ra một chủ đề riêng biệt Kiểm soát quá trình deserialization sự kiện
File binlogFile = ... EventDeserializer eventDeserializer = new EventDeserializer(); eventDeserializer.setCompatibilityMode( EventDeserializer.CompatibilityMode.DATE_AND_TIME_AS_LONG, EventDeserializer.CompatibilityMode.CHAR_AND_BINARY_AS_BYTE_ARRAY ); BinaryLogFileReader reader = new BinaryLogFileReader(binlogFile, eventDeserializer); try { for (Event event; (event = reader.readEvent()) != null; ) { ... } } finally { reader.close(); }0 Hiển thị BinaryLogClient thông qua JMXFile binlogFile = ... EventDeserializer eventDeserializer = new EventDeserializer(); eventDeserializer.setCompatibilityMode( EventDeserializer.CompatibilityMode.DATE_AND_TIME_AS_LONG, EventDeserializer.CompatibilityMode.CHAR_AND_BINARY_AS_BYTE_ARRAY ); BinaryLogFileReader reader = new BinaryLogFileReader(binlogFile, eventDeserializer); try { for (Event event; (event = reader.readEvent()) != null; ) { ... } } finally { reader.close(); }1 Sử dụng SSL
TLSv1. 1 & TLSv1. 2 yêu cầu JDK 7+.
File binlogFile = ... EventDeserializer eventDeserializer = new EventDeserializer(); eventDeserializer.setCompatibilityMode( EventDeserializer.CompatibilityMode.DATE_AND_TIME_AS_LONG, EventDeserializer.CompatibilityMode.CHAR_AND_BINARY_AS_BYTE_ARRAY ); BinaryLogFileReader reader = new BinaryLogFileReader(binlogFile, eventDeserializer); try { for (Event event; (event = reader.readEvent()) != null; ) { ... } } finally { reader.close(); }4 Ghi chú thực hiện
Các câu hỏi thường gặpQ. Một giao dịch điển hình trông như thế nào? A. Sự kiện GTID (nếu gtid_mode=ON) -> QUERY sự kiện với "BEGIN" là sql ->. -> sự kiện XID. QUERY sự kiện với "CAM KẾT" hoặc "ROLLBACK" dưới dạng sql Q. EventData cho các hàng được chèn/cập nhật/xóa không có thông tin về bảng (ngoại trừ một số id lạ). Làm thế nào để tôi có ý nghĩa từ nó? A. Mỗi sự kiện WriteRowsEventData/UpdateRowsEventData/DeleteRowsEventData được bắt đầu bởi TableMapEventData chứa lược đồ & tên bảng. Nếu vì lý do nào đó bạn cần biết tên cột (loại, v.v.). - cách dễ nhất là File binlogFile = ... EventDeserializer eventDeserializer = new EventDeserializer(); eventDeserializer.setCompatibilityMode( EventDeserializer.CompatibilityMode.DATE_AND_TIME_AS_LONG, EventDeserializer.CompatibilityMode.CHAR_AND_BINARY_AS_BYTE_ARRAY ); BinaryLogFileReader reader = new BinaryLogFileReader(binlogFile, eventDeserializer); try { for (Event event; (event = reader.readEvent()) != null; ) { ... } } finally { reader.close(); }5 (vâng, nhật ký nhị phân KHÔNG bao gồm phần thông tin đó) Bạn có thể tìm thấy đoạn mã JDBC tại đây Tài liệutổng quan về APICó hai điểm vào - BinaryLogClient (mà bạn có thể sử dụng để đọc nhật ký nhị phân từ máy chủ MySQL) và BinaryLogFileReader (để xử lý nhật ký ngoại tuyến). Cả hai đều dựa vào EventDeserializer để giải tuần tự hóa luồng sự kiện. Mỗi Sự kiện bao gồm EventHeader (chứa trong số những thứ khác tham chiếu đến EventType) và EventData. EventDeserializer đã nói ở trên có một EventHeaderDeserializer (EventHeaderV4Deserializer theo mặc định) và một bộ sưu tập EventDataDeserializer. s. Nếu không có EventDataDeserializer được đăng ký cho một số loại Sự kiện cụ thể - EventDataDeserializer mặc định sẽ khởi động (NullEventDataDeserializer) Hướng dẫn nội bộ MySQLĐể biết thông tin chi tiết về nội bộ của MySQL, hãy xem tại đây. Các phần Giao thức máy khách/máy chủ MySQL và Nhật ký nhị phân đặc biệt hữu ích làm tài liệu tham khảo cho các gói File binlogFile = ... EventDeserializer eventDeserializer = new EventDeserializer(); eventDeserializer.setCompatibilityMode( EventDeserializer.CompatibilityMode.DATE_AND_TIME_AS_LONG, EventDeserializer.CompatibilityMode.CHAR_AND_BINARY_AS_BYTE_ARRAY ); BinaryLogFileReader reader = new BinaryLogFileReader(binlogFile, eventDeserializer); try { for (Event event; (event = reader.readEvent()) != null; ) { ... } } finally { reader.close(); }9 và BinaryLogClient client = new BinaryLogClient("hostname", 3306, "username", "password"); EventDeserializer eventDeserializer = new EventDeserializer(); eventDeserializer.setCompatibilityMode( EventDeserializer.CompatibilityMode.DATE_AND_TIME_AS_LONG, EventDeserializer.CompatibilityMode.CHAR_AND_BINARY_AS_BYTE_ARRAY ); client.setEventDeserializer(eventDeserializer); client.registerEventListener(new EventListener() { @Override public void onEvent(Event event) { ... } }); client.connect();0 Làm cách nào để bật have_ssl trong MySQL?Bật SSL cho MySQL/MariaDB
. Sau khi vào, hãy chạy truy vấn sau. HIỂN THỊ CÁC BIẾN NHƯ '%ssl%'; Bạn sẽ thấy rằng have_ssl là CÓ và các vị trí cho tất cả các tệp quan trọng sẽ được liệt kê.
Làm cách nào để sử dụng SSL với MySQL?Định cấu hình kết nối SSL MySQL . Tạo thư mục để lưu trữ các khóa SSL. Để tạo thư mục chứa khóa SSL, hãy thực hiện các bước sau. . Tạo khóa SSL. Ghi chú. . Chỉnh sửa cấu hình MySQL. . Kiểm tra cấu hình SSL. . Tạo người dùng và cho phép truy cập từ xa. . Kiểm tra kết nối MySQL từ xa SSL cho MySQL là gì?Theo mặc định, MySQL được cấu hình để chỉ cho phép các kết nối từ hệ thống cục bộ. Nếu bạn muốn kết nối với máy chủ MySQL từ một hệ thống từ xa, bạn nên bảo mật nó bằng SSL/TLS. Kích hoạt SSL/TLS sẽ mã hóa dữ liệu được gửi đến và từ cơ sở dữ liệu .
Làm cách nào để kiểm tra chứng chỉ SSL trong MySQL?GIẢI PHÁP CHÍNH THỨC THEO TRANG WEB MYSQL
. CHỌN * TỪ performance_schema. session_status WHERE VARIABLE_NAME IN ('Ssl_version','Ssl_cipher'); . |