Phương pháp sao lưu đã biết và phổ biến cho MongoDB là mongodump. Nó là một phương pháp sao lưu hợp lý, tương tự như mysqldump trong MySQL hoặc pg_dump trong cơ sở dữ liệu PostgreSQL. Có một công cụ sao lưu khác được gọi là Percona Backup cho MongoDB. Nó có hỗ trợ cho các tập hợp bản sao và các cụm phân đoạn, cũng như các tính năng nâng cao hơn như khôi phục thời điểm.
Điều quan trọng cần lưu ý là nó thực hiện sao lưu nhất quán cho cụm phân đoạn mongodb của bạn và cũng hỗ trợ lưu trữ đối tượng tương thích S3 để lưu trữ các bản sao lưu. Trong blog này, chúng ta sẽ thảo luận về kiến trúc, cài đặt và cách sử dụng Percona Backup cho MongoDB.
Kiến trúc
Percona Backup cho MongoDB bao gồm hai thành phần, thành phần đầu tiên là một tiện ích quy trình cần được cài đặt trên mỗi nút MongoDB, được gọi là pbm-agent. Tác nhân pbm hoạt động để điều phối giữa các nút cơ sở dữ liệu, chạy quá trình sao lưu và khôi phục. Nó cũng kiểm tra xem nút có phải là nút chính xác để lấy bản sao lưu hay không. Tác nhân pbm yêu cầu một người dùng cụ thể với một số đặc quyền vai trò; ví dụ:readWrite, backup, clusterMonitor và restore. Nó cũng cần tạo một vai trò mới cho pbm với kiểu hành động anyAction và kiểu tài nguyên anyResource. Người dùng phải tồn tại trên mỗi nút trong tập hợp bản sao và cả trong máy chủ cấu hình nếu bạn sử dụng kiến trúc cụm phân đoạn. Percona Backup cho MongoDB sử dụng phương thức chuỗi kết nối MongoDB URI để kết nối với cơ sở dữ liệu, đó là lý do tại sao nó yêu cầu quyền truy cập thông tin xác thực ở lần đầu tiên.
Thành phần còn lại là giao diện dòng lệnh được gọi là pbm. tiện ích pbm kích hoạt các hành động liên quan đến sao lưu, ví dụ:thực hiện sao lưu, khôi phục, sao lưu danh sách, xóa, v.v. Trước khi làm việc với pbm, bạn cần phải định cấu hình các tùy chọn sao lưu, tùy chọn khôi phục và các tùy chọn khôi phục kịp thời.
Bản thân tệp cấu hình được lưu trữ trong tệp YAML và lệnh pbm config được sử dụng để tải tệp cấu hình. Một số lệnh cho tiện ích pbm được hiển thị bên dưới:
- pbm config, lệnh được sử dụng để định cấu hình tùy chọn sao lưu trước khi thực thi.
- bản sao lưu pbm, được sử dụng để sao lưu MongoDB. Nó hỗ trợ một số phương pháp nén như gzip, pgzip, lz4, snappy.
- khôi phục pbm, lệnh được sử dụng để khôi phục bản sao lưu vào một nút.
- danh sách pbm, danh sách các tệp sao lưu hiện tại.
- pbm hủy-sao lưu, được sử dụng để hủy quá trình sao lưu đang chạy.
- pbm delete-backup, được sử dụng để xóa các tập tin sao lưu. Có hai lựa chọn; bạn có thể chỉ định tên tệp sao lưu để xóa hoặc xóa các tệp sao lưu cũ hơn một độ tuổi nhất định.
Cài đặt Percona Backup cho MongoDB
Có hai cách bạn có thể cài đặt Percona Backup cho MongoDB, bạn có thể sử dụng trình quản lý gói từ hệ điều hành và sử dụng Percona Repository chính thức để cài đặt phần mềm hoặc bạn có thể xây dựng từ mã nguồn.
Là điều kiện tiên quyết trước khi cài đặt pbm thông qua cài đặt yum / apt, bạn cần phải định cấu hình Kho lưu trữ Percona và sau đó, bật kho lưu trữ pbm:
[[email protected] ~]# percona-release enable pbm release
* Enabling the Percona Backup MongoDB repository
<*> All done!
Sau đó, cài đặt Percona Backup cho MongoDB. Trong trường hợp này, tôi đang sử dụng hệ điều hành dựa trên CentOS nên chúng tôi sẽ thực hiện cài đặt:
[[email protected] ~]# yum install percona-backup-mongodb
Loaded plugins: fastestmirror
Repository percona-release-noarch is listed more than once in the configuration
Repository percona-release is listed more than once in the configuration
Repository percona-release-noarch is listed more than once in the configuration
Repository percona-release-source is listed more than once in the configuration
(1/10): extras/7/x86_64/primary_db | 222 kB 00:00:00
(2/10): pbm-release-x86_64/7/primary_db | 4.2 kB 00:00:02
(3/10): percona-tools-release/7/x86_64/primary_db | 84 kB 00:00:00
(4/10): tools-release-x86_64/7/primary_db | 84 kB 00:00:00
(5/10): percona-release-x86_64/7/primary_db | 1.1 MB 00:00:06
(6/10): percona-release/7/x86_64/primary_db | 1.1 MB 00:00:08
(7/10): base/7/x86_64/primary_db | 6.1 MB 00:00:11
(8/10): updates/7/x86_64/primary_db | 2.5 MB 00:00:08
(9/10): epel/x86_64/updateinfo | 1.0 MB 00:00:13
(10/10): epel/x86_64/primary_db | 6.9 MB 00:00:07
Loading mirror speeds from cached hostfile
* base: mirror.telkomuniversity.ac.id
* epel: ftp.jaist.ac.jp
* extras: mirror.telkomuniversity.ac.id
* updates: mirror.telkomuniversity.ac.id
Resolving Dependencies
--> Running transaction check
---> Package percona-backup-mongodb.x86_64 0:1.3.3-1.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==================================================================================================================================================================
Package Arch Version Repository Size
==================================================================================================================================================================
Installing:
percona-backup-mongodb x86_64 1.3.3-1.el7 pbm-release-x86_64 16 M
Transaction Summary
==================================================================================================================================================================
Install 1 Package
Total download size: 16 M
Installed size: 61 M
Is this ok [y/d/N]: y
Downloading packages:
percona-backup-mongodb-1.3.3-1.el7.x86_64.rpm | 16 MB 00:00:55
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : percona-backup-mongodb-1.3.3-1.el7.x86_64 1/1
Verifying : percona-backup-mongodb-1.3.3-1.el7.x86_64 1/1
Installed:
percona-backup-mongodb.x86_64 0:1.3.3-1.el7
Complete!
Sau khi hoàn tất, bạn có thể định cấu hình pbm-agent làm quy trình nền và chơi với giao diện dòng lệnh pbm:
[[email protected] ~]# pbm
usage: pbm [<flags>] <command> [<args> ...]
Percona Backup for MongoDB
Flags:
--help Show context-sensitive help (also try
--help-long and --help-man).
--mongodb-uri=MONGODB-URI MongoDB connection string (Default =
PBM_MONGODB_URI environment variable)
--compression=s2 Compression type
<none>/<gzip>/<snappy>/<lz4>/<s2>/<pgzip>
Commands:
help [<command>...]
Show help.
config [<flags>] [<key>]
Set, change or list the config
backup
Make backup
restore [<flags>] [<backup_name>]
Restore backup
cancel-backup
Restore backup
list [<flags>]
Backup list
delete-backup [<flags>] [<name>]
Delete a backup
version [<flags>]
PBM version info
Backup in Action
Trước khi sao lưu MongoDB, hãy đảm bảo pbm-agent đang chạy trên mỗi nút và cấu hình sao lưu đã được đặt như hình dưới đây, hãy đặt đường dẫn của bản sao lưu:
[[email protected] ~]# pbm config --file=/root/config.yaml --mongodb-uri "mongodb://pbmuser:***@localhost:27017/"
[Config set]
------
pitr:
enabled: false
storage:
type: filesystem
filesystem:
path: /data/backups
Và chạy thử bản sao lưu trên một trong các nút phụ:
[[email protected] ~]# pbm backup --mongodb-uri "mongodb://pbmuser:*****@localhost:27017/" --compression=pgzip
Starting backup '2020-11-13T15:28:49Z'...................
Backup '2020-11-13T15:28:49Z' to remote store '/data/backups' has started
Đó là tất cả cho bây giờ. Sắp có, ClusterControl 1.8.1 sẽ cho phép bạn lập lịch và quản lý các cụm MongoDB của mình bằng Percona Backup cho MongoDB.