MariaDB Enterprise Backup là giải pháp sao lưu từ MariaDB Corporation với một số tính năng như sao lưu không chặn, sao lưu toàn bộ, sao lưu gia tăng, sao lưu một phần và Khôi phục thời gian.
Chúng tôi thường nhận được câu hỏi về sự khác biệt giữa các tính năng quản lý sao lưu của MariaDB Backup và ClusterControl. Đây là nội dung của blog này.
Tạo bản sao lưu và quản lý chúng
MariaDB Backup là một nhánh của Percona XtraBackup và là một công cụ để sao lưu vật lý của máy chủ MariaDB. Nó cho phép bạn thực hiện những việc như sao lưu toàn bộ, tăng dần, từng phần. Người ta cũng có thể thực hiện khôi phục tại chỗ với sự trợ giúp của các bản ghi nhị phân. Theo tài liệu, phiên bản ‘Doanh nghiệp’ của bản sao lưu MariaDB cung cấp “tính năng theo dõi câu lệnh DDL, giúp giảm thời gian khóa trong quá trình sao lưu”.
ClusterControl hỗ trợ MariaDB Backup như một phương pháp sao lưu cho MariaDB. Nó cung cấp một giao diện người dùng đồ họa để lên lịch sao lưu toàn bộ, sao lưu gia tăng và sao lưu từng phần, đồng thời thực hiện khôi phục các tệp sao lưu hoặc cũng có thể tự động khôi phục từng thời điểm. Ngoài ra, ClusterControl cung cấp các tính năng như mã hóa, nén, tải lên bộ lưu trữ đám mây (Azure, AWS, Google Cloud) và xác minh tự động các bản sao lưu để đảm bảo chúng có thể khôi phục được.
Sao lưu và khôi phục đầy đủ
Để thực hiện sao lưu toàn bộ bằng MariaDB Enterprise Backup, bạn có thể sử dụng các tiện ích lệnh mariabackup. Có 4 đầu vào tham số sau lệnh mariabackup. Tham số là:
- Sao lưu - cái này được sử dụng để sao lưu cơ sở dữ liệu bằng các tiện ích mariabackup.
- Chuẩn bị - để tạo bản sao lưu nhất quán tại thời điểm, bạn cần chuẩn bị sao lưu sau khi thực hiện sao lưu thô.
- Sao chép lại - dùng để khôi phục bản sao lưu đã giải nén vào thư mục dữ liệu mặc định của mysql. Nó sẽ sao chép bản sao lưu vào thư mục mysql mà không cần xóa bản sao lưu gốc.
- Di chuyển trở lại - được sử dụng để khôi phục bản sao lưu đã giải nén vào thư mục dữ liệu mysql bằng cách di chuyển tất cả các thư mục sao lưu.
Nếu bạn muốn sao lưu và khôi phục, bạn chỉ cần chuyển tham số bắt buộc sau lệnh mariabackup. Đối với lệnh sao lưu đầy đủ, dưới đây là đoạn mã mẫu sử dụng MariaDB Backup.
mariabackup --backup --target-dir=/backup/full/ --user=bkpuser --password=p4sswordb4ckup
Có một số tùy chọn bạn cần xác định, chẳng hạn như --target-dir, là vị trí đích cho các tệp sao lưu, --user, được sử dụng cho người dùng thông tin xác thực để sao lưu và - mật khẩu cho mật khẩu sao lưu thông tin xác thực.
Để sao lưu trở nên nhất quán theo thời gian, bạn phải chạy chuẩn bị sau khi kết thúc sao lưu đầy đủ. Các tệp dữ liệu không nhất quán cho đến khi bạn chạy chuẩn bị, đó là vì khi bạn chạy sao lưu, các tệp dữ liệu đã được sao chép vào các thời điểm khác nhau trong quá trình sao lưu.
Để chạy chuẩn bị sao lưu:
mariabackup --prepare --target-dir=/backup/full
Sau khi bạn chạy chuẩn bị, nó sẽ làm cho bản sao lưu sẵn sàng được khôi phục. Bạn sẽ thấy thông báo ở dòng cuối cùng như bên dưới, khi quá trình chuẩn bị thành công.
InnoDB: Shutdown completed; log sequence number 9553231
Bạn có thể chạy lệnh khôi phục bằng cách sử dụng copy-back. Đây là tập lệnh mẫu để khôi phục bản sao lưu:
mariabackup --copy-back --target-dir=/backup/full
Bạn có thể đặt tập lệnh trên vào lệnh shell script và cấp quyền thực thi, định cấu hình nó trên bộ lập lịch của hệ điều hành.
Sao lưu và khôi phục bằng ClusterControl Backup Management rất dễ sử dụng. ClusterControl hỗ trợ sao lưu logic và sao lưu vật lý. Để sao lưu hợp lý, ClusterControl sử dụng mysqldump và để sao lưu vật lý sử dụng mariabackup sao lưu đầy đủ và tăng dần.
Có hai tùy chọn về cách bạn muốn sao lưu; bạn có thể tạo bản sao lưu trực tiếp hoặc bạn có thể lên lịch sao lưu.
Bạn cũng có thể bật một số tùy chọn như mã hóa, nén, chuỗi sao chép song song như hiển thị bên dưới:
Khôi phục bản sao lưu dễ dàng như bản sao lưu đã được tạo. Bạn chỉ cần chọn toàn bộ tệp sao lưu mà bạn muốn khôi phục.
Có hai tùy chọn về cách bạn muốn khôi phục bản sao lưu; bạn có thể khôi phục bản sao lưu vào các nút nơi bản sao lưu đã được thực hiện hoặc bạn có thể khôi phục bản sao lưu vào một máy chủ độc lập chuyên dụng.
Sao lưu và khôi phục gia tăng
Sao lưu toàn bộ một cơ sở dữ liệu rất lớn sẽ tốn nhiều thời gian và tài nguyên. Sao lưu tăng dần được sử dụng để thực hiện sao lưu các thay đổi sau khi bản sao lưu đầy đủ cuối cùng được thực hiện.
Khi sao lưu gia tăng đang chạy, MariaDB Enterprise Backup sẽ so sánh bản sao lưu đầy đủ trước đó hoặc sao lưu gia tăng để tìm những thay đổi cuối cùng.
mariabackup --backup --incremental-basedir=/backup/full --target-dir=/backup/incr --user=bkpuser --password=p4sswordb4ackup
Trước khi thực hiện sao lưu gia tăng, bạn cần đảm bảo rằng bản sao lưu đầy đủ đã được chuẩn bị. Sau đó, bạn có thể chạy bản sao lưu gia tăng, áp dụng cho bản sao lưu đầy đủ cuối cùng.
mariabackup --prepare --target-dir=/backup/full --incremental-dir=/backup/incr
Sau khi áp dụng sao lưu tăng dần cho bản sao lưu đầy đủ, thư mục sao lưu đầy đủ bây giờ sẽ có tất cả dữ liệu sao lưu được chuẩn bị.
Khôi phục bản sao lưu đầy đủ đã chuẩn bị với tất cả các thay đổi gia tăng có thể được thực hiện thông qua:
mariabackup --copy-back --target-dir=/backup/full
Để thực hiện sao lưu gia tăng trong ClusterControl, bạn có thể chọn gia tăng mariabackup. Bạn cần có bản sao lưu đã chuẩn bị đầy đủ trước khi thực hiện sao lưu gia tăng.
ClusterControl sẽ tự động tìm bản sao lưu đầy đủ gần nhất khi bạn chạy bản sao lưu tăng dần. Và để khôi phục bản sao lưu, bạn có thể chọn bản sao lưu và khôi phục đã chuẩn bị đầy đủ. Nó sẽ nhắc bạn cách bạn muốn khôi phục bản sao lưu, trên nút hoặc máy chủ độc lập. Nó sẽ khôi phục bản sao lưu bao gồm các thay đổi gia tăng.
Sao lưu và khôi phục một phần
Sao lưu một phần chỉ định cơ sở dữ liệu hoặc bảng nào bạn muốn sao lưu. Bạn có thể chọn danh sách cơ sở dữ liệu và bảng để sao lưu hoặc bạn có thể loại trừ một số cơ sở dữ liệu và bảng khỏi bản sao lưu. Các tùy chọn bao gồm:--databases, --databases -lude, --tables, --tables -lude
Dưới đây là tập lệnh mẫu để thực hiện sao lưu một phần, cho bảng card_data.
mariabackup --backup --target-dir=/backup/partial --user=bkpuser --password=p4sswordb4ckup --tables=card_data
Bạn vẫn cần chuẩn bị toàn bộ bản sao lưu từng phần để làm cho thời điểm sao lưu nhất quán bằng cách chạy lệnh dưới đây:
mariabackup --prepare --export --target-dir=/backup/partial
Thực hiện khôi phục từng phần rất khác so với khôi phục sao lưu toàn bộ và sao lưu gia tăng. Bạn cần chuẩn bị các bảng và cơ sở dữ liệu trong Máy chủ MariaDB đang chạy, sau đó sao chép thủ công các tệp dữ liệu vào thư mục dữ liệu mysql.
Ví dụ:bạn muốn khôi phục một phần cho bảng card_data (bảng không phân vùng).
- Tạo bảng trống của card_data có cùng cấu trúc trong cơ sở dữ liệu đích
- Chạy vùng bảng DISCARD trên table card_data.
ALTER TABLE carddb.card_data DISCARD TABLESPACE;
- Sao chép các tệp dữ liệu vào thư mục dữ liệu mysql
cp /backup/partial/carddb/card_data.* /var/lib/mysql/carddb
- Thay đổi chủ sở hữu tệp trở thành mysql
chown mysql:mysql /var/lib/mysql/carddb/card_data.*
- Điều cuối cùng, hãy nhập vùng bảng:
ALTER TABLE carddb.card_data IMPORT TABLESPACE;
Sao lưu từng phần trong ClusterControl thực sự đơn giản, bạn chỉ cần bật tùy chọn Sao lưu từng phần. Nó sẽ cung cấp cho bạn tùy chọn để bao gồm hoặc loại trừ cơ sở dữ liệu và các bảng như được hiển thị bên dưới:
Phần tiếp theo tương tự như sao lưu toàn bộ và sao lưu tăng dần, bạn có thể chọn cài đặt như mã hóa và nén.
Khôi phục bản sao lưu từng phần hoàn toàn giống như khi chúng ta khôi phục bản sao lưu toàn bộ. Bạn chỉ cần chọn sao lưu một phần và phần còn lại sẽ do ClusterControl xử lý.
Thời gian khôi phục điểm
Khôi phục bản sao lưu toàn bộ hoặc sao lưu gia tăng cung cấp cho bạn một bản sao lưu từ thời điểm sao lưu được thực hiện, nhưng nó không cung cấp cho bạn bất kỳ dữ liệu nào sau khi sao lưu được thực hiện. Những thay đổi này sẽ có trong nhật ký nhị phân. Khi bạn thực hiện sao lưu đã chuẩn bị có bật binlog, sẽ có một tệp có tên xtrabackup_binlog_info. Tệp chứa tệp nhật ký nhị phân và vị trí của số thứ tự cuối cùng.
Bạn có thể thực hiện khôi phục tại chỗ bằng cách trích xuất các thay đổi đối với SQL, như sau khi quá trình khôi phục đã hoàn tất. Bạn có thể chạy mysqlbinlog để trích xuất thời gian cụ thể trong nút cơ sở dữ liệu nguồn và áp dụng SQL trong nút cơ sở dữ liệu đích / đã khôi phục.
Point in Time Recovery (PITR) trong ClusterControl có thể được bật như hình dưới đây:
Bạn cần xác định cho đến thời điểm nào để khôi phục, có hai tùy chọn được hỗ trợ dựa trên thời gian hoặc dựa trên vị trí. Đối với thời gian, bạn chỉ cần điền thời gian chính xác khi dữ liệu sẽ được khôi phục. Đối với vị trí dựa trên, bạn cần điền tên binlog và vị trí. Phần còn lại của quá trình khôi phục cũng tương tự.
Kết luận
Đó là nó cho bây giờ. Như chúng ta đã thấy ở trên, MariaDB Backup là một công cụ tốt với rất nhiều tùy chọn. ClusterControl cung cấp một GUI dễ sử dụng để thực hiện các thủ tục sao lưu. Nó cũng bổ sung một số tính năng như mã hóa, nén, lập lịch, quản lý lưu giữ và xác minh sao lưu tự động.