一,MongoDB v4.0.3 数据备份/还原
登录mongo库:
mongo --port 27017 -u "root" -p "xxxxxxxx" --authenticationDatabase "admin"
################备份################## 1,mongo全库备份:
mongodump -uroot -pxxxxxxxx --authenticationDatabase admin --oplog -o ./mongodb-backup-20230917
- 备份所有库推荐使用添加 --oplog参数的命令,只能用于备份全部库时才可用,单库和单表不适用。
- --oplog选项会记录备份间产生的增量数据,类似于mysql中的binglog(做一致性快照并记录当前的binglog点用于还原)
2,mongo备份单个库:
mongodump -uroot -pxxxxxxxx --authenticationDatabase admin -d knowledge_test_db -o ./knowledge-test-db-20230917bak
- 使用 ”-d“ 参数指定你要备份的db_name
3,mongo备份单个表:
mongoexport -uroot -pxxxxxxxx --authenticationDatabase admin -d knowledge_test_db -c knowledge_test_table -o ./knowledge_test_table.json
- 备份文件的名字可以自定义,默认导出了JSON格式的数据;-d :指名数据库的名字,-c :指名指明collection(表)的名字;
###############还原#################### 1,mongo全库还原:
mongorestore -uroot -pxxxxxxxx --authenticationDatabase admin --oplogReplay --drop ./mongodb-backup-20230917
- 同时,恢复时也要加上--oplogReplay参数;恢复得时候加上--drop,先删除当前数据,然后恢复备份的数据;就是说,恢复后,在备份后添加修改的数据都会被删除,注意场景使用。
2,mongo单库还原:
mongorestore -uroot -pxxxxxxxx --authenticationDatabase admin --nsInclude 'knowledge_test_db.*' --drop ./knowledge-test-db-20230917bak
- --nsInclude参数是在3.x版本之后最新的,推荐使用;将来将会废弃 --db和–collection参数,如果3.x之前版本可使用以下命令:
mongorestore -uroot -pxxxxxxxx --authenticationDatabase admin -d knowledge_test_db --drop ./knowledge-test-db-20230917bak
3,mongo单表还原:
mongoimport -uroot -pxxxxxxxx --authenticationDatabase admin -d knowledge_test_db -c knowledge_test_table --drop --file ./knowledge_test_table.json
- --file:要导入的源文件路径;
二:elasticsearch7.16 数据备份/还原
tips: 1,k8s环境: 全量数据备份推荐直接备份pvc,后续进行替换还原,效率高(场景:可停服操作)/ 通过Elasticsearch中Snapshot api来实现。单个/数据量少的索引可直接推荐通过python脚本备份。
2,非k8s环境: 全量数据备份推荐使用备份elasticsearch data目录(场景:可停服操作) / 通过Elasticsearch中Snapshot api来实现。单个/少数索引推荐通过python脚本备份还原。也可通过第三方工具elasticdump。
以上相关操作具体实践及脚本,参考有道云笔记;