Streaming Replication là một tính năng mới được giới thiệu cùng với phiên bản 4.0 của Galera Cluster. Galera sử dụng sao chép đồng bộ trên toàn bộ cụm, nhưng trước bản phát hành này, bộ ghi lớn hơn 2GB không được hỗ trợ. Streaming Replication cho phép bạn sao chép các bộ ghi lớn, điều này hoàn hảo cho việc chèn hàng loạt hoặc tải dữ liệu vào cơ sở dữ liệu của bạn.
Trong một blog trước đây, chúng tôi đã viết về Xử lý các giao dịch lớn với tính năng sao chép trực tuyến và MariaDB 10.4, nhưng khi viết blog này, Codership vẫn chưa phát hành phiên bản Galera Cluster mới của họ. Tuy nhiên, Percona đã phát hành phiên bản nhị phân thử nghiệm của Percona XtraDB Cluster 8.0, làm nổi bật các tính năng sau ...
-
Nhân rộng luồng hỗ trợ các giao dịch lớn
-
Các chức năng đồng bộ hóa cho phép điều phối hành động (wsrep_last_seen_gtid, wsrep_last_written_gtid, wsrep_sync_wait_upto_gtid)
-
Ghi nhật ký lỗi chi tiết và cải tiến hơn. wsrep_debug hiện là một biến đa giá trị để hỗ trợ kiểm soát việc ghi nhật ký và các thông báo ghi nhật ký đã được cải thiện đáng kể.
-
Một số lỗi DML và DDL trên một nút sao chép có thể bị bỏ qua hoặc bị loại bỏ. Sử dụng biến wsrep_ignore_apply_errors để định cấu hình.
-
Nhiều bảng hệ thống giúp tìm hiểu thêm về trạng thái của trạng thái cụm.
-
Cơ sở hạ tầng wsrep của Galera 4 mạnh mẽ hơn so với Galera 3. Nó có tính năng thực thi mã nhanh hơn với khả năng xử lý trạng thái tốt hơn, cải thiện khả năng dự đoán và xử lý lỗi.
Có gì mới với Galera Cluster 4.0?
Tính năng Sao chép Phát trực tuyến Mới
Với Streaming Replication, các giao dịch được sao chép dần dần thành các đoạn nhỏ trong quá trình xử lý giao dịch (tức là trước khi thực hiện cam kết thực tế, chúng tôi sao chép một số đoạn có kích thước nhỏ). Sau đó, các phân đoạn được sao chép được áp dụng trong các chuỗi phụ, duy trì trạng thái của giao dịch trong tất cả các nút cụm. Các phân mảnh giữ khóa trong tất cả các nút và không thể bị xung đột sau này.
Bảng Hệ thống Galera
Quản trị viên Cơ sở dữ liệu và khách hàng có quyền truy cập vào cơ sở dữ liệu MySQL có thể đọc các bảng này, nhưng họ không thể sửa đổi chúng vì bản thân cơ sở dữ liệu sẽ thực hiện bất kỳ sửa đổi nào cần thiết. Nếu máy chủ của bạn không có các bảng này, có thể máy chủ của bạn đang sử dụng phiên bản Galera Cluster cũ hơn.
#> show tables from mysql like 'wsrep%';
+--------------------------+
| Tables_in_mysql (wsrep%) |
+--------------------------+
| wsrep_cluster |
| wsrep_cluster_members |
| wsrep_streaming_log |
+--------------------------+
3 rows in set (0.12 sec)
Chức năng Đồng bộ hóa Mới
Phiên bản này giới thiệu một loạt các hàm SQL để sử dụng trong các hoạt động đồng bộ hóa wsrep. Bạn có thể sử dụng chúng để lấy ID giao dịch toàn cầu dựa trên lần viết cuối cùng hoặc giao dịch được nhìn thấy gần đây nhất. Bạn cũng có thể đặt nút để đợi một GTID cụ thể sao chép và áp dụng, trước khi bắt đầu giao dịch tiếp theo.
Lựa chọn nhà tài trợ thông minh
Một số tính năng cơ bản đã có từ Galera 3.x bao gồm lựa chọn nhà tài trợ thông minh và khôi phục sự cố cụm. Những điều này ban đầu được lên kế hoạch cho Galera 4, nhưng đã được đưa vào các bản phát hành trước đó phần lớn do yêu cầu của khách hàng. Khi nói đến lựa chọn nút của nhà tài trợ trong Galera 3, nhà tài trợ Chuyển ảnh chụp trạng thái (SST) đã được chọn ngẫu nhiên. Tuy nhiên, với Galera 4, bạn sẽ có sự lựa chọn thông minh hơn nhiều khi chọn nhà tài trợ, vì nó sẽ ưu tiên một nhà tài trợ có thể cung cấp Chuyển khoản trạng thái gia tăng (IST) hoặc chọn một nhà tài trợ trong cùng một phân khúc. Với tư cách là Quản trị viên Cơ sở dữ liệu, bạn có thể buộc điều này thông qua thiết lập wsrep_sst_donor.
Tại sao lại sử dụng MySQL Galera Cluster Streaming Replication?
Giao dịch dài hạn
Các vấn đề và hạn chế của Galera luôn xoay quanh cách nó xử lý các giao dịch lâu dài và đôi khi khiến toàn bộ cụm chậm lại do các bộ ghi lớn được sao chép. Kiểm soát luồng của nó thường tăng cao, khiến việc ghi chậm lại hoặc thậm chí kết thúc quá trình để hoàn nguyên cụm trở lại trạng thái bình thường của nó. Đây là một sự cố khá phổ biến với các phiên bản trước của Galera Cluster.
Codership khuyên bạn nên sử dụng Streaming Replication cho các giao dịch lâu dài của mình để giảm thiểu những trường hợp này. Sau khi nút sao chép và xác nhận một phân đoạn, các giao dịch khác không thể hủy bỏ nó được nữa.
Giao dịch lớn
Điều này rất hữu ích khi tải dữ liệu vào báo cáo hoặc phân tích của bạn. Tạo chèn hàng loạt, xóa, cập nhật hoặc sử dụng câu lệnh TẢI DỮ LIỆU để tải số lượng lớn dữ liệu có thể nằm trong danh mục này. Mặc dù nó phụ thuộc vào cách bạn quản lý dữ liệu của mình để truy xuất hoặc lưu trữ. Bạn phải lưu ý rằng tính năng Sao chép trực tuyến có những hạn chế như khóa chứng nhận được tạo từ khóa bản ghi.
Nếu không có tính năng Sao chép trực tuyến, việc cập nhật một số lượng lớn bản ghi sẽ dẫn đến xung đột và toàn bộ giao dịch sẽ phải được khôi phục lại. Các nô lệ cũng đang sao chép các giao dịch lớn phải chịu sự kiểm soát luồng khi nó đạt đến ngưỡng và bắt đầu làm chậm toàn bộ cụm để xử lý bất kỳ lần ghi nào vì chúng có xu hướng thoải mái nhận các giao dịch đến từ bản sao đồng bộ. Galera sẽ giãn quá trình sao chép cho đến khi bộ ghi có thể quản lý được vì nó cho phép tiếp tục sao chép một lần nữa. Kiểm tra blog bên ngoài này của Percona để giúp bạn hiểu thêm về kiểm soát luồng trong Galera.
Với Streaming Replication, nút bắt đầu sao chép dữ liệu với mỗi đoạn giao dịch, thay vì chờ cam kết. Điều này có nghĩa là không có cách nào để bất kỳ giao dịch xung đột nào đang chạy trong các nút khác bị hủy bỏ vì điều này chỉ đơn giản khẳng định rằng cụm đã chứng nhận bộ ghi cho phân đoạn cụ thể này. Miễn phí áp dụng và cam kết các giao dịch đồng thời khác mà không cần chặn và xử lý giao dịch lớn với tác động tối thiểu đến cụm.
Bản ghi nóng / Điểm nóng
Bản ghi hoặc hàng nóng là những hàng trong bảng của bạn được cập nhật liên tục. Những dữ liệu này có thể được truy cập nhiều nhất và nhận được nhiều lưu lượng truy cập của toàn bộ cơ sở dữ liệu của bạn (ví dụ:nguồn cấp tin tức, một bộ đếm như số lượt truy cập hoặc nhật ký). Với Streaming Replication, bạn có thể buộc các cập nhật quan trọng cho toàn bộ cụm.
Theo ghi nhận của Nhóm Galera tại Codership
“Chạy một giao dịch theo cách này sẽ khóa bản ghi nóng trên tất cả các nút một cách hiệu quả, ngăn các giao dịch khác sửa đổi hàng. Nó cũng làm tăng cơ hội giao dịch được cam kết thành công và đến lượt khách hàng sẽ nhận được kết quả mong muốn. ”
Điều này đi kèm với những hạn chế vì nó có thể không liên tục và nhất quán để bạn có được các cam kết thành công. Nếu không sử dụng Streaming Replication, bạn sẽ có nhiều cơ hội hoặc khả năng quay trở lại và điều đó có thể thêm chi phí cho người dùng cuối khi gặp sự cố này theo quan điểm của ứng dụng.
Những điều cần cân nhắc khi sử dụng tính năng sao chép truyền trực tuyến
- Các khóa chứng nhận được tạo từ các ổ khóa hồ sơ, do đó chúng không che được các ổ khóa khe hở hoặc các ổ khóa chìa khóa tiếp theo. Nếu giao dịch có một khóa khoảng trống, có thể một giao dịch được thực hiện trên một nút khác, sẽ áp dụng bộ ghi gặp phải nhật ký khoảng trống và sẽ hủy bỏ giao dịch phát trực tuyến.
- Khi bật tính năng Sao chép luồng, nhật ký bộ ghi được ghi vào bảng wsrep_streaming_log được tìm thấy trong cơ sở dữ liệu hệ thống mysql để duy trì tính bền bỉ trong trường hợp xảy ra sự cố, vì vậy bảng này sẽ phục vụ khi khôi phục. Trong trường hợp ghi nhật ký quá nhiều và chi phí sao chép cao, sao chép trực tuyến sẽ làm giảm tốc độ thông lượng giao dịch. Đây có thể là một nút cổ chai về hiệu suất khi đạt đến mức tải đỉnh cao. Do đó, bạn chỉ nên bật tính năng Sao chép phát trực tuyến ở cấp phiên và sau đó chỉ cho các giao dịch sẽ không chạy chính xác nếu không có nó.
- Trường hợp sử dụng tốt nhất là sử dụng sao chép luồng để cắt các giao dịch lớn
- Đặt kích thước phân mảnh thành ~ 10K hàng
- Các biến phân đoạn là các biến phiên và có thể được đặt động
- Ứng dụng thông minh có thể bật / tắt tính năng sao chép phát trực tuyến trên cơ sở cần thiết
Kết luận
Cảm ơn bạn đã đọc, trong phần hai, chúng ta sẽ thảo luận về cách kích hoạt tính năng Sao chép phát trực tuyến theo cụm Galera và kết quả có thể như thế nào đối với thiết lập của bạn.