golang数据库 MongoDB 数据管理(9)

Golang 2023/04/23 MongoDB, Golang

一 数据导入导出

# 数据导出
mongoexport -d test -c user -f name,age -q \'{age:{$lte:50}}\' -o ./user.json
-d  导出哪个数据库的数据
-c  导出哪个集合的数据
-f  导出哪些字段
-q  筛选的条件
-o  导出到哪个文件
还可以添加参数:--csv 导出的格式为csv(mysql,excel可以直接使用csv格式文件)

# 数据导入
mongoimport -d -c user --type json  --file \'./test.json\'
mongoimport -d -c user --type csv -f name,age --headerline --file \'./test.csv\'
--headerline 跳过csv文件的第一行

二 备份与恢复

备份与恢复其实是二进制形式的数据导入导出,速度更快,索引不会丢失,在第一章的数据导入导出只适合做数据的交换。

# 备份
mongodump -h dbhost -d dbname -o dbdirectory
-h:服务器地址,也可以指定端口号
-d:需要备份的数据库名称
-o:备份的数据存放位置,此目录中存放着备份出来的数据
示例
sudo mkdir test1bak
sudo mongodump -h 192.168.196.128:27017 -d test1 -o ~/Desktop/test1bak

# 恢复
mongorestore -h dbhost -d dbname --dir dbdirectory
-h:服务器地址
-d:需要恢复的数据库实例
--dir:备份数据所在位置
示例
mongorestore -h 192.168.196.128:27017 -d test2 --dir ~/Desktop/test1bak/test1

三 fsync和锁

fsync命令能在Mongo运行时复制数据目录并且不会损毁数据。该命令会强制服务器将所有缓冲区写入磁盘,还可以选择上锁阻止对数据库的进一步写入,直到释放锁为止。写入锁是fsync在备份时发挥作用的关键。

# 强制执行fsync并写入锁
use admin
db.runCommand({"fsync": 1, "lokc": 1})

# 现在数据目录的数据是一致的,并且为数据库的实时快照,可以安全的做备份,备份完毕后需要解锁
db.$cmd,sys.unlock.findOne()

四 数据修复

db.repairDatabase()


本文地址:https://www.stayed.cn/item/390

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。