MongoDB之数据备份与恢复的两种方式

MongoDB之数据备份与恢复的两种方式

文章目录

  • MongoDB之数据备份与恢复的两种方式
  • 1. 数据备份
    • 1. mongodump命令
      • 1. 备份所有数据库
      • 2. 备份指定数据库
    • 2. 文件系统快照
  • 2.数据恢复
    • 1. mongorestore命令
    • 2. 恢复文件系统快照
  • 3. 总结

1. 数据备份

1. mongodump命令

mongodump命令用于将 MongoDB 中的数据转储到文件中,以备份数据。例如,可以使用以下命令备份整个数据库

mongodump --host <hostname> --port <port> --db <database> --out <backup_directory_path>

1. 备份所有数据库

# 命令:mongodump -u 用户名 -p 密码 -o 备份路径,如下:
mongodump -u admin -p admin123 -o c:\mongoBackup\allDb

2. 备份指定数据库

命令:

mongodump -h IP地址:端口 -d 数据库名 -u 用户名 –p 密码 -o 备份路径

mongodump -h IP地址 -port 端口 -d 数据库名 -u 用户名 –p 密码 -o 备份路径


# 举例
mongodump -h 192.168.31.251:27017 -d my_db -u test_user -p test_user -o c:\mongoBackup

#或
mongodump -h 192.168.31.251 -port:27017 -d my_db -u test_user -p test_user -o c:\mongoBackup

2. 文件系统快照

文件系统快照可以使用文件系统快照工具(如LVM快照)来创建 MongoDB 数据目录的快照,从而实现数据备份。

2.数据恢复

1. mongorestore命令

mongorestore命令用于将使用mongodump命令备份的数据恢复到 MongoDB 中。例如,可以使用以下命令将数据库恢复到 MongoDB 中

mongorestore --host  --port  --db  
  1. 恢复前先要使用use 命令切换到要导入的数据库
  2. 在切换后的数据库下新建用户,并设置角色及所属数据库
  3. 使用新建用户或admin用户导入
  4. 使用新建的用户连接数据库

【注意:先用admin用户导入,然后再创建普通用户并设置角色及指定所属数据库,最终新建用户是无法连接数据库的】

通过以上步骤虽然能导入数据库,但是在连接时会提示授权错误,暂时就用admin一个用户就行

  1. 切换至新导入的数据库

    # 1.  如:需要往yuandb这个数据库中导入数据,则
    use yuandb
    
  2. 新建用户

    # 比如这里新建用户为 jinshengyuan
    db.createUser({
    	"user":"jinshengyuan",
    	"pwd":"yuan",
    	"roles":[
    		{role:"userAdmin",db:"yuandb"}
    	]
    })
    
    db.createUser({
    	"user":"idm",
    	"pwd":"idm",
    	"roles":[
    		{role:"userAdmin",db:"tdm3q"}
    	]
    })
    
    
  3. 在DOS窗口下使用admin用户恢复数据

    说明:

    1. 不管是新建用户还是admin数据库用户都必须加上--authenticationDatabase admin -u (超级管理员用户名) -p (超级管理员密码),否则会提示下面信息
    C:\>mongorestore -u jinshegnyuan -p yuan -d yuandb c:\mongoBackup\my_db
    2020-07-23T00:45:21.634+0800    error connecting to host: could not connect to server: connection() : auth error: sasl conversation error: unable to authenticate using mechanism "SCRAM-SHA-256": (AuthenticationFailed) Authentication failed.
    
    1. 如果不指定 -d 属性,则默认导入所有数据库

    最终恢复命令如下:

    # 使用新建用户恢复demodb数据库
    mongorestore -u jinshengyuan -p yuan -d yuandb c:\mongoBackup\my_db --authenticationDatabase admin -u admin -p admin123
    
    # 或使用admin用户恢复数据到 yuandb 数据库中
    mongorestore -u admin -p admin123 -d yuandb c:\mongoBackup\my_db --authenticationDatabase admin -u admin -p admin123
    #【注意:备份的数据库文件路径(c:\mongoBackup\my_db)一定要指定到xxx.bson的根目录 】
    
    
  4. 使用新建用户连接数据库

    # 连接方式一:在DOS窗口下执行下面命令
    mongo localhost:27017/yuandb -u jinshengyuan -p 回车输入密码或直接在-p后输入密码
    # 连接方式二:用mogon命令登录后切换到具体的数据库,然后db.auth('用户名','密码')进行登录,如下
    mongo
    use yuandb
    db.auth('jinshengyuan','yuan')
    

2. 恢复文件系统快照

恢复文件系统快照:如果使用文件系统快照进行备份,可以通过恢复文件系统快照来还原 MongoDB 数据目录,从而实现数据恢复。

3. 总结

在备份和恢复过程中,注意以下几点:

  • 确保备份数据的完整性和一致性。
  • 定期进行备份操作,以确保数据的安全性。
    恢复文件系统快照:如果使用文件系统快照进行备份,可以通过恢复文件系统快照来还原 MongoDB 数据目录,从而实现数据恢复。

你可能感兴趣的:(MongoDB,数据库,MySQL8,mongodb,数据库,mysql)