MongoDBの既知の一般的なバックアップ方法は、mongodumpです。これは論理的なバックアップ方法であり、MySQLのmysqldumpやPostgreSQLデータベースのpg_dumpに似ています。 Percona BackupforMongoDBと呼ばれる別のバックアップツールがあります。レプリカセットとシャードクラスターのほか、ポイントインタイムリカバリなどのより高度な機能をサポートしています。
mongodbシャードクラスターの一貫したバックアップを実行し、バックアップを保存するためのS3互換オブジェクトストレージもサポートしていることに注意してください。このブログでは、Percona Backup for MongoDBのアーキテクチャ、インストール、および使用法について説明します。
Percona Backup for MongoDBは2つのコンポーネントで構成されています。最初のコンポーネントは、pbm-agentと呼ばれる各MongoDBノードにインストールする必要のあるプロセスユーティリティです。 pbm-agentは、データベースノード間で調整を行い、バックアップと復元のプロセスを実行します。また、ノードがバックアップを取るのに正しいノードであるかどうかもチェックします。 pbm-agentには、いくつかの役割権限を持つ特定のユーザーが必要です。例:readWrite、backup、clusterMonitor、およびrestore。また、アクションタイプanyActionおよびリソースタイプanyResourceでpbmの新しいロールを作成する必要があります。ユーザーは、レプリカセットの各ノードに存在する必要があります。また、シャードクラスターアーキテクチャを使用する場合は、構成サーバーにも存在する必要があります。 Percona Backup for MongoDBは、MongoDB URI接続文字列方式を使用してデータベースに接続します。そのため、最初に資格情報へのアクセスが必要になります。
もう1つのコンポーネントは、pbmと呼ばれるコマンドラインインターフェイスです。 pbmユーティリティは、バックアップ関連のアクションをトリガーします。たとえば、バックアップの実行、復元、バックアップの一覧表示、削除などです。 pbmを使用する前に、バックアップオプション、復元オプション、およびポイントインタイムリカバリオプションを構成する必要があります。
構成ファイル自体はYAMLファイルに保存され、pbmconfigコマンドを使用して構成ファイルをロードします。 pbmユーティリティのコマンドの一部を以下に示します。
- pbm config、実行前にバックアップオプションを構成するために使用されるコマンド。
- pbmバックアップ。MongoDBのバックアップを取るために使用されます。 gzip、pgzip、lz4、snappyなどのいくつかの圧縮方法をサポートしています。
- pbm restore、バックアップをノードに復元するために使用されるコマンド。
- pbmリスト、現在のバックアップファイルのリスト。
- pbm cancel-backup、実行中のバックアッププロセスをキャンセルするために使用されます。
- pbmdelete-backup。バックアップファイルの削除に使用されます。 2つのオプションがあります。バックアップのファイル名を指定して、特定の経過時間より古いバックアップファイルを削除または削除できます。
MongoDB用のPerconaバックアップのインストール
Percona Backup for MongoDBをインストールする方法は、オペレーティングシステムからパッケージマネージャーを使用してソフトウェアのインストールに公式のPerconaリポジトリを使用する方法と、ソースコードからビルドする方法の2つです。
yum / aptインストールを介してpbmをインストールする前の前提条件として、Perconaリポジトリを構成し、その後、pbmリポジトリを有効にする必要があります。
[[email protected] ~]# percona-release enable pbm release
* Enabling the Percona Backup MongoDB repository
<*> All done!
次に、Percona BackupforMongoDBをインストールします。この場合、CentOSベースのオペレーティングシステムを使用しているので、yuminstallを実行します。
[[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!
完了したら、pbm-agentをバックグラウンドプロセスとして構成し、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
MongoDBのバックアップを作成する前に、pbm-agentが各ノードで実行され、バックアップ構成が次のように設定されていることを確認し、バックアップのパスを設定します。
[[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
そして、セカンダリノードの1つでバックアップをテスト実行します。
[[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
それは今のところすべてです。間もなく、ClusterControl 1.8.1で、Percona BackupforMongoDBを使用してMongoDBクラスターをスケジュールおよび管理できるようになります。