Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

So sánh giữa Plugin MySQL Clone và Xtrabackup

Trong một blog trước đây của chúng tôi, chúng tôi đã giải thích cách dùng Clone Plugin, một trong những tính năng mới được hiển thị trong MySQL 8.0.17, có thể được sử dụng để xây dựng lại một nô lệ sao chép. Hiện tại, công cụ cần thiết cho việc đó, cũng như để sao lưu, là Xtrabackup. Chúng tôi nghĩ rằng thật thú vị khi so sánh cách các công cụ đó hoạt động và hoạt động.

So sánh Hiệu suất

Điều đầu tiên chúng tôi quyết định kiểm tra là cách cả hai hoạt động khi lưu trữ bản sao dữ liệu cục bộ. Chúng tôi đã sử dụng phiên bản AWS và m5d.metal với hai SSD NVMe và chúng tôi chạy bản sao sang bản sao cục bộ:

mysql> CLONE LOCAL DATA DIRECTORY='/mnt/clone/';

Query OK, 0 rows affected (2 min 39.77 sec)

Sau đó, chúng tôi đã thử nghiệm Xtrabackup và tạo bản sao cục bộ:

rm -rf /mnt/backup/ ; time xtrabackup --backup --target-dir=/mnt/backup/ --innodb-file-io-threads=8 --innodb-read-io-threads=8  --innodb-write-io-threads=8 --innodb-io-capacity=20000 --parallel=16

200120 13:12:28 completed OK!

real 2m38.407s

user 0m45.181s

sys 4m18.642s

Như bạn thấy, thời gian cần thiết để sao chép dữ liệu về cơ bản là như nhau. Trong cả hai trường hợp, giới hạn là phần cứng, không phải phần mềm.

Truyền dữ liệu sang máy chủ khác sẽ là trường hợp sử dụng phổ biến nhất cho cả hai công cụ. Nó có thể là một nô lệ mà bạn muốn cung cấp hoặc xây dựng lại. Trong tương lai, nó có thể là một bản sao lưu, Plugin Clone không có chức năng như bây giờ nhưng chúng tôi khá chắc chắn trong tương lai ai đó sẽ có thể sử dụng nó như một công cụ sao lưu. Do phần cứng là hạn chế đối với sao lưu cục bộ trong cả hai trường hợp, nên phần cứng cũng sẽ là hạn chế trong việc truyền dữ liệu qua mạng. Tùy thuộc vào thiết lập của bạn, nó có thể là mạng, I / O đĩa hoặc CPU.

Trong các hoạt động sử dụng nhiều I / O, CPU là nút cổ chai ít phổ biến nhất. Điều này làm cho nó khá phổ biến để đánh đổi một số sử dụng CPU để giảm kích thước tập dữ liệu. Bạn có thể thực hiện điều đó thông qua nén. Nếu nó được thực hiện nhanh chóng, bạn vẫn phải đọc cùng một lượng dữ liệu nhưng bạn gửi ít dữ liệu hơn (vì nó được nén) qua mạng. Sau đó, bạn sẽ phải giải nén nó và viết nó ra. Cũng có thể bản thân các tệp đã được nén. Trong trường hợp đó, bạn giảm lượng dữ liệu được đọc, truyền và ghi vào đĩa.

Cả Plugin Clone và Xtrabackup đều có tính năng nén nhanh (chúng tôi muốn cảm ơn Kenny Gryp, người đã sửa lỗi cho chúng tôi về vấn đề này). Trong Plugin Clone, bạn có thể kích hoạt nó thông qua clone_enable_compression, tính năng này bị tắt theo mặc định. Xtrabackup cũng có thể sử dụng các công cụ bên ngoài để nén dữ liệu. Trong trường hợp các bảng InnoDB được nén, việc nén bên ngoài sẽ không tạo ra quá nhiều khác biệt, vì vậy cả hai công cụ phải hoạt động theo cách tương tự trong trường hợp băng thông mạng là yếu tố giới hạn.

So sánh Khả năng sử dụng

Hiệu suất chỉ là một thứ để so sánh, có nhiều thứ khác giống như cách các công cụ dễ sử dụng. Trong cả hai trường hợp, bạn phải thực hiện một số bước. Đối với Plugin Clone thì đó là:

  1. Cài đặt plugin trên tất cả các nút
  2. Tạo người dùng trên cả nút người đóng góp và người nhận
  3. Thiết lập danh sách nhà tài trợ trên người nhận

Ba bước đó phải được thực hiện một lần. Khi chúng được thiết lập, bạn có thể sử dụng Plugin Clone để sao chép dữ liệu. Dựa trên hệ thống init, bạn có thể cần khởi động nút MySQL sau khi quá trình nhân bản hoàn tất. Điều này không bắt buộc nếu, giống như trong trường hợp của systemd, MySQL sẽ tự động được khởi động lại.

Xtrabackup yêu cầu một vài bước nữa để hoàn thành công việc.

  1. Cài đặt phần mềm trên tất cả các nút
  2. Tạo người dùng trên nhà tài trợ

Hai bước đó phải được thực hiện một lần. Đối với mỗi bản sao lưu, bạn phải thực hiện các bước sau:

  1. Định cấu hình phát trực tuyến mạng. Cách đơn giản và an toàn là sử dụng SSH, giống như:
xtrabackup --backup --innodb-file-io-threads=8 --innodb-read-io-threads=8  --innodb-write-io-threads=8 --innodb-io-capacity=20000 --parallel=8 --stream=xbstream --target-dir=/mnt/backup/ | ssh [email protected] "xbstream -x -C /mnt/backup/"

Tuy nhiên, chúng tôi nhận thấy rằng đối với các ổ cứng nhanh hơn, với SSH đơn luồng, CPU sẽ trở thành một nút cổ chai. Việc thiết lập netcat yêu cầu thêm bước trên bộ thu để đảm bảo netcat đang hoạt động, lắng nghe và chuyển hướng lưu lượng đến phần mềm thích hợp (xbstream).

  1. Dừng MySQL trên nút thu

  2. Chạy Xtrabackup

  3. Áp dụng nhật ký InnoDB

  4. Sao chép lại dữ liệu

  5. Khởi động MySQL trên nút thu

Như bạn có thể thấy, Xtrabackup yêu cầu thực hiện nhiều bước hơn.

Cân nhắc về Bảo mật

Clone Plugin có thể được định cấu hình để sử dụng SSL để truyền dữ liệu mặc dù theo mặc định, nó sử dụng văn bản thuần túy. Có thể sao chép các không gian bảng được mã hóa nhưng không có tùy chọn nào để mã hóa, ví dụ như bản sao cục bộ. Người dùng sẽ phải làm điều đó một cách riêng biệt, sau khi quá trình sao chép hoàn tất.

Bản thân Xtrabackup không cung cấp bất kỳ bảo mật nào. Bảo mật được xác định bởi cách bạn truyền dữ liệu. Nếu bạn sử dụng SSH để truyền trực tuyến, dữ liệu đang truyền sẽ được mã hóa. Nếu bạn quyết định sử dụng netcat, nó sẽ được gửi dưới dạng văn bản thuần túy. Tất nhiên, nếu dữ liệu được mã hóa trong không gian bảng, nó đã được bảo mật, giống như trong trường hợp của Plugin nhân bản. Xtrabackup cũng có thể được sử dụng cùng với mã hóa nhanh để đảm bảo dữ liệu của bạn cũng được mã hóa ở trạng thái yên tâm.

Tính năng của Plugin

Clone Plugin là một sản phẩm mới, vẫn còn trong giai đoạn sơ sinh. Nhiệm vụ chính của nó là cung cấp các cách cung cấp các nút trong InnoDB Cluster và nó thực hiện điều đó rất tốt. Đối với các tác vụ khác, như sao lưu hoặc cung cấp nô lệ sao chép, nó có thể được sử dụng ở một mức độ nào đó nhưng nó gặp phải một số hạn chế. Chúng tôi đã đề cập đến một số trong số chúng trong blog trước của chúng tôi, vì vậy chúng tôi sẽ không nhắc lại ở đây nhưng vấn đề nghiêm trọng nhất, khi nói về cấp phép và sao lưu, là chỉ các bảng InnoDB được sao chép. Nếu bạn tình cờ sử dụng bất kỳ công cụ lưu trữ nào khác, bạn không thể thực sự sử dụng Plugin Clone. Mặt khác, Xtrabackup sẽ vui vẻ sao lưu và chuyển các công cụ lưu trữ được sử dụng phổ biến nhất:InnoDB, MyISAM (rất tiếc, nó vẫn được sử dụng ở nhiều nơi) và CSV. Xtrabackup cũng đi kèm với một bộ công cụ nhằm giúp truyền dữ liệu từ nút này sang nút khác hoặc thậm chí sao lưu trực tuyến vào nhóm S3.

Tóm lại, khi nói đến việc sao lưu dữ liệu và cung cấp nô lệ sao chép, xtrabackup và rất có thể sẽ vẫn là lựa chọn phổ biến nhất. Mặt khác, rất có thể, Clone Plugin sẽ được cải thiện và phát triển. Chúng ta sẽ xem tương lai sẽ ra sao và mọi thứ sẽ như thế nào trong thời gian một năm.

Hãy cho chúng tôi biết nếu bạn có bất kỳ suy nghĩ nào về Plugin nhân bản, chúng tôi rất muốn biết ý kiến ​​của bạn về công cụ mới này.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để khôi phục một bảng MySQL đơn bằng cách sử dụng mysqldump?

  2. Sử dụng bộ nhớ tối đa MySQL

  3. Tối đa theo nhóm

  4. Bảng là 'chỉ đọc'

  5. Tôi có thể thực thi nhiều truy vấn được phân tách bằng dấu chấm phẩy với MySQL Connector / J không?