- vừa được xem lúc

Mít đặc và biết tuốt nói về các phương pháp backup MYSQL để tăng tốc độ backup và restore lên hàng trăm lần

0 0 17

Người đăng: Nguyễn Đình Nghĩa

Theo Viblo Asia

Mít Đặc: Chào anh Tuốt, hôm nay tôi chạy sang anh hỏi chút vấn đề, chả là sau vụ việc VNDirect bị hack, mất dữ liệu bên tôi có nhu cầu backup MYSQL thật nhanh và restore nhanh khi có sự cố xảy ra, anh có phương án nào hay ho không?

Biết Tuốt: Hiện tại bên anh có backup chưa?

Mít Đặc: Bên tôi đang dùng MySQL Dump. Nhưng mà thời gian backup và restore lâu quá, mất cả ngày, làm ăn gì được chứ! Nếu mà có vấn đề gì xảy ra thì khách hàng vêu mõm chờ.

Biết tuốt: Đúng rồi, MYSQL Dump chạy đơn luồng, tạo ra những lện insert into và một file backup duy nhất, nói chung đúng là siêu chậm. Để tăng tốc cho nó thì MySQL cung cấp một giải pháp khác là MYSQL PUMP. Nó có thể chạy song song nên có thể chạy nhanh hơn được kha khá, nhưng nói chung thì vẫn chậm do vẫn dùng file SQL và với một bảng có dữ liệu lớn thì sự song song bị hạn chế. image.png

Mít đặc: Nói như vậy là có giải pháp khác đúng không?

Biết Tuốt: Đúng vậy để giải quyết vấn đề chạy lệnh Insert hàng loạt gây chậm, MySQL có cơ chế import, export giúp quá trình backup và restore nhanh hơn. Hơn nữa để giải quyết vấn đề một bảng quá lớn, vẫn có thể chạy song song được thì MySQL đưa ra giải pháp là chunk nghĩa là chia table lớn thành nhiều đoạn nhỏ để chạy song song. Công cụ này là MySQL Shell với tính năng Dump & Load. Bạn có thể xem benchmark tại đây

Đây là phần so sánh về tốc độ dump (backup), càng lớn càng tốt

image.png

Mít đặc: Ồ đúng là MySql Dump và MySQL Pump chậm thật, nhưng tôi nhìn thấy MyDumper nó là cái gì vậy? Một công cụ backup khác à?

Biết Tuốt: Đúng vậy, nó cũng khá nhanh, nhưng không phải hàng của MySQL cung cấp

Mít đặc: Nhìn trên hình tôi cũng thấy trong trường hợp backup StackOverFlow thì Mysql Shell Dump/Load chạy nhanh hơn hẳn luôn, còn trong trường hợp Wikipedia thì MyDumper chạy nhanh hơn đấy.

Biết tuốt: Bởi vì thuật toán nén của Mysql Shell (zstd) chạy tốt hơn của mydumper (zlib ) nên trong đa số trường hợp chạy nhanh hơn. Còn trường hợp Wikipedia thì do với kiểu binary thì MySQL Shell converts sang base64, còn mydumper thì không. Tuy nhiên điều này được cải tiến ở bản 8.0.22.

Mít đặc: Hay quá còn về restore thì sao?

Biết tuốt: image.png

Như hình trên có thể thấy rằng Mysql Shell chạy tốt hơn hẳn tất cả và vượt trội hơn rất nhiều so với dump hay pump bởi vì nó không load theo kiểu file .sql bị hạn chế nhiều về hiệu năng và với bảng lớn thì chỉ có một luồng mà thôi. Thay vào đó nó sử dụng cơ chế load và chunk nên hiệu quả hơn nhiều.

Mít đặc: Ok phương án khả thi là tôi sẽ chuyển sang backup bằng Mysql Shell.

Biết tuốt: Ở trên là các phương pháp backup logic, còn có nhưng cách backup vật lý nữa?

Mít đặc: Vật lý là kiểu copy thẳng file đúng không?

Biết tuốt: Đúng vậy, tuy nhiên khi Mysql đang chạy mà copy luôn folder trong ổ cứng thì có thể bị lỗi dữ liệu lúc restore, vì vậy cần một số tool để làm điều này. Một trong số đó là Percona XtraBackup. Có thể xem hiệu năng của nó như hình dưới

image.png

Với tổng thời gian backup restore có thể thấy XtraBackup vượt trội hơn rất nhiều.

image.png

Với việc backup thì MySql Shell có vẻ nhanh hơn một chút.

image.png

Tuy nhiên với việc restore thì phương pháp vật lý tỏ ra vượt trội vì chỉ cần trỏ thư mục là chạy được, hơn rất nhiều so với việc phải chạy các lệnh logic.

Mít đặc: Ok quá rồi. tôi sẽ chuyển sang dùng phương pháp vật lý với percona Xtrabackup.

Biết tuốt: Tuy vậy percona Xtrabackup có nhược điểm là tương thích phiên bản, luôn phải cài bản mới để backup nếu bạn nâng cấp MySQL. Việc cài thêm tool trên server cũng làm tôi không thích lắm. Ngoài ra trước khi backup cần phải optimize một số table nên sẽ không nhanh lắm khi chạy trên server có nhiều databases. Tất nhiên là khi có những table cần optimize.

Mít đặc: Ồ vậy có tool khác chứ

Biết tuốt: Đúng vậy nếu bạn có tiền thì có thể dùng Mysql Enterprise, hàng xịn sẽ hỗ trợ bạn hot backup với hiệu năng nhanh.

Mít đặc: Nhưng tôi không có nhiều tiền, thời gian lâu tý cũng được, chắc tôi dùng percona tiếp vậy.

Biết tuốt: Thực ra còn có một giải pháp nữa mà không cần cài cắm gì nhiều. Hiệu năng cũng rất tốt. Đó là một plugin của Mysql là Clone Plugin Có khả năng copy file giống như percona Xtrabackup. Với hiệu năng đo được như sau

image.png

Với số thead ít và có nén thì Xtrabackup hiệu quả hơn Clone. Tuy nhiên với việc không nén và nhiều thread thì việc sử dụng Clone hiệu quả hơn. Thời gian restore như nhau vì chỉ cần copy file mà thôi. Dùng clone không cần cài thêm tool nào khác, đơn giản tiện lợi mà nhanh nữa.

Mít đặc: Ồ, vậy là nếu backup logic thì Mysql Shell là nhất, còn với vật lý thì có nhiều lựa chọn, nhưng đơn giản nhất là dùng Clone Plugin

Biết tuốt: Đúng như vậy.

Mít đặc: Một Upvote cho bạn, tôi sẽ triển khai thí điểm nhiều cách xem sao, nhìn tốc độ có thể thấy nhanh hơn rất nhiều lần với cách dump truyền thống mà tôi sử dụng. Nếu có thêm câu hỏi nào có thể để lại comment nhé!

https://www.percona.com/blog/backup-restore-performance-conclusion-mysqldump-vs-mysql-shell-utilities-vs-mydumper-vs-mysqlpump-vs-xtrabackup/ https://www.percona.com/blog/the-mysql-clone-wars-plugin-vs-percona-xtrabackup/

Bình luận

Bài viết tương tự

- vừa được xem lúc

Mô hình quan hệ - thực thể (Entity – Relationship Model)

Mô hình quan hệ thực thể (Entity Relationship model - E-R) được CHEN giới thiệu vào năm 1976 là một mô hình được sử dụng rộng rãi trong các bản thiết kế cơ sở dữ liệu ở mức khái niệm, được xây dựng dựa trên việc nhận thức thế giới thực thông qua tập các đối tượng được gọi là các thực thể và các mối

0 0 132

- vừa được xem lúc

[Embulk #1] Công cụ giúp giảm nỗi đau chuyển đổi dữ liệu

Embulk là gì. Embulk là một công cụ open source có chức năng cơ bản là load các record từ database này và import sang database khác.

0 0 55

- vừa được xem lúc

Window Functions trong MySQL, Nâng cao và cực kì hữu dụng (Phần II).

Chào mọi người, lại là mình đây, ở phần trước mình đã giới thiệu với mọi người về Window Functions Phần I. Nếu chưa rõ nó là gì thì mọi người nên đọc lại trước nha, để nắm được định nghĩa và các key words, tránh mắt chữ O mồm chứ A vì phần này mình chủ yếu sẽ thực hành với các Window Functions.

0 0 107

- vừa được xem lúc

Window Functions trong MySQL, Nâng cao và cực kì hữu dụng (Phần I).

Chào mọi người, mình mới tìm hiểu đc topic Window Functions cá nhân mình cảm thấy khá là hay và mình đánh giá nó là phần nâng cao. Vì ít người biết nên Window Functions thấy rất ít khi sử dụng, thay vì đó là những câu subquery dài dằng dặc như tin nhắn nhắn cho crush, và người khác đọc hiểu được câu

0 0 923

- vừa được xem lúc

Disable và Enable trigger trong Oracle

Origin post: https://www.tranthanhdeveloper.com/2020/12/disable-va-enable-trigger-trong-oracle.html.

0 0 41

- vừa được xem lúc

Lưu trữ dữ liệu với Data Store

. Data Store là một trong những componet của bộ thư viện Android JetPack, nó là một sự lựa chọn hoàn hảo để thay thế cho SharedPreferences để lưu trữ dữ liệu đơn giản dưới dạng key-value. Chúng ta cùng làm một so sánh nhỏ để thấy sự tối ưu của Data Store với SharedPreferences nhé.

0 0 71