mongodump基本步骤及常用参数
- 基本步骤:
- 连接到要备份的MongoDB实例。在命令行中执行
mongodump
命令,它会默认连接到本地的mongodb://localhost:27017
实例并备份所有数据库。
- 例如,备份本地MongoDB所有数据库:
mongodump
- 常用参数:
- -h, --host:指定要连接的MongoDB服务器主机名或IP地址,格式为
hostname[:port]
。例如,连接到远程服务器192.168.1.100
的默认端口27017
:
mongodump -h 192.168.1.100
- -p, --port:指定要连接的MongoDB服务器端口号。当MongoDB实例运行在非默认端口(如
27018
)时使用:
mongodump -h localhost -p 27018
- -u, --username 和 -p, --password:用于身份验证。如果MongoDB开启了身份验证,需要提供用户名和密码:
mongodump -u myUser -p myPassword -h localhost
- -d, --db:指定要备份的单个数据库。例如,只备份名为
test
的数据库:
mongodump -d test
- -c, --collection:指定要备份的单个集合。结合
-d
参数使用,如备份test
数据库中的users
集合:
mongodump -d test -c users
- -o, --out:指定备份数据的输出目录。默认情况下,
mongodump
会在当前目录下创建一个dump
目录。例如,将备份数据输出到/backup/mongo
目录:
mongodump -o /backup/mongo
mongorestore基本步骤及常用参数
- 基本步骤:
- 连接到要恢复数据的MongoDB实例。执行
mongorestore
命令,它会从默认的dump
目录(如果未指定-d
和-c
参数)恢复所有数据库和集合。
- 例如,从默认的
dump
目录恢复所有数据到本地MongoDB实例:
mongorestore
- 常用参数:
- -h, --host:指定要恢复到的MongoDB服务器主机名或IP地址,格式为
hostname[:port]
。例如,恢复到远程服务器192.168.1.100
的默认端口27017
:
mongorestore -h 192.168.1.100
- -p, --port:指定要恢复到的MongoDB服务器端口号。
mongorestore -h localhost -p 27018
- -u, --username 和 -p, --password:用于身份验证。如果MongoDB开启了身份验证,需要提供用户名和密码:
mongorestore -u myUser -p myPassword -h localhost
- -d, --db:指定要恢复数据到的单个数据库。例如,将备份数据恢复到名为
newtest
的数据库:
mongorestore -d newtest
- -c, --collection:指定要恢复数据到的单个集合。结合
-d
参数使用,如将备份数据恢复到newtest
数据库中的newusers
集合:
mongorestore -d newtest -c newusers
- --dir:指定备份数据的目录。当备份数据不在默认的
dump
目录时使用。例如,从/backup/mongo
目录恢复数据:
mongorestore --dir /backup/mongo
分片集群环境下使用注意事项
- mongodump:
- 连接配置服务器:在分片集群环境下,
mongodump
应该连接到配置服务器(config server)而不是单个分片节点。可以通过-h
参数指定配置服务器的地址和端口。例如,配置服务器地址为config1:27019,config2:27019,config3:27019
:
mongodump -h config1:27019,config2:27019,config3:27019
- 全量备份:为了确保备份到整个集群的数据,不建议只备份单个分片的数据,因为数据在分片间是分布式存储的。
- mongorestore:
- 连接mongos:恢复数据时,
mongorestore
应该连接到mongos路由节点,而不是直接连接到分片节点或配置服务器。通过-h
参数指定mongos的地址和端口,例如mongos1:27017
:
mongorestore -h mongos1:27017
- 数据一致性:由于分片集群的数据分布特性,在恢复过程中要注意数据一致性。如果在恢复过程中集群有写入操作,可能会导致数据不一致问题。建议在恢复前停止集群的写入操作,或者使用一些支持在线恢复且保证一致性的工具和方法(如MongoDB的Ops Manager等)。
- 索引重建:恢复数据后,可能需要重建索引以确保查询性能。因为在备份时索引可能没有完全备份,或者在恢复过程中索引状态可能不一致。可以通过
--noIndexRestore
参数先恢复数据,然后再手动重建索引。