美文网首页程序员
mongodb数据库安装以及备份还原过程

mongodb数据库安装以及备份还原过程

作者: 心情后花园 | 来源:发表于2018-12-11 20:31 被阅读9次

    今天公司需要把 mongodb 数据库迁移到另外一台服务器上,刚好之前也没系统的操作过一遍,所以今天就记录下自己操作的这个流程。

    系统: Ubuntu 14.04 lts
    mongodb版本:无要求,故最新版(v4.0.4)

    1. 安装 mongodb

    之前都是下载 deb 文件,然后解压安装的。今天试试通过软件源的方式去安装。官网地址

    1. 向系统的包管理器导入其使用的公钥
    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
    
    1. 为 mongodb 创建资源文件
    # 创建在 /etc/apt/sources.list.d 目录下
    echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
    
    1. 重新加载本地包数据库
    sudo apt-get update
    
    1. 下载 mongodb 包
    # apt-get 获取的是最新版本的 mongodb ,并不能指定固定版本的 mongodb
    sudo apt-get install -y mongodb-org
    

    2. 启动 mongodb

    启动 mongodb 之前,建议先修改它的配置文件,配置文件一般是 /etc/mongodb.conf

    # 默认的配置文件内容
    # mongod.conf
    
    # for documentation of all options, see:
    #   http://docs.mongodb.org/manual/reference/configuration-options/
    
    # Where and how to store data.
    storage:
      dbPath: /var/lib/mongodb
      journal:
        enabled: true
    #  engine:
    #  mmapv1:
    #  wiredTiger:
    
    # where to write logging data.
    systemLog:
      destination: file
      logAppend: true
      path: /var/log/mongodb/mongod.log
    
    # network interfaces
    net:
      port: 27017
      bindIp: 127.0.0.1
    
    
    # how the process runs
    processManagement:
      timeZoneInfo: /usr/share/zoneinfo
    
    #security:
    
    #operationProfiling:
    
    #replication:
    
    #sharding:
    
    ## Enterprise-Only Options:
    
    #auditLog:
    
    #snmp:
    

    做了以下这些修改

    1. 数据库存储位置。/var/lib/mongodb 存放到 /data/db (需要先创建好 mkdir -p /data/db )
    2. 修改能连接数据库的IP。bindIp 由 127.0.0.1 修改为 0.0.0.0 (所以Ip都能连接,也可以设置为需要连接到该数据库的 IP)
    3. 启动安全验证。

    下面是我修改后的配置文件

    # mongodb.conf
    storage:
      dbPath: /data/db
      journal:
        enabled: true
    systemLog:
      destination: file
      logAppend: true
      path: /var/log/mongodb/mongod.log
    
    net:
      port: 27018
      bindIp: 0.0.0.0
    processManagement:
      timeZoneInfo: /usr/share/zoneinfo
    
    security:
      authorization: enabled
    

    启动 mongodb 的方式有很多种,我选择自己命名一个别名去启动它。以后启动就不需要再输入一大串命令,或者查询命令历史去启动

    # 1. 添加以下命令到 .bashrc
    alias mongod_start='/usr/bin/mongod --fork --auth --config=/etc/mongod.conf'
    
    # 2. 让文件生效
    source ~/.bashrc
    
    # 3. 命令启动
    mongod_start
    

    如果不想通过这种方式启动,那可以直接执行 mongod --fork --auth --config=/etc/mongod.conf 去启动。

    输入 mongo --port 27018,如果没报错什么的,那就说明成功启动了 mongodb。

    ps: 由于之前的文件里面修改了端口号,所以需要指定端口号,否则连接不上

    既然说了启动,那就说下正常的关闭 mongodb 的方式吧。当然也可以查询端口,杀进程的方式去关闭 mongodb

    > use admin;
    
    > db.shutdownServer();
    

    3. 创建用户

    在之前连接上 mongodb 的那个窗口,进行处理

    # 切换数据库,这个是 默认库
    use admin;
    # 创建这个数据库下的管理员
    db.createUser({
      user: "admin",
      pwd: "admin",
      roles: [{
        role: "userAdminAnyDatabase",
        db: "admin"
      }]
    })
    
    # 断开连接
    exit
    
    # 以 admin 用户登陆来进行操作
    mongo --port 53082 -u admin -p admin --authenticationDatabase "admin"
    
    # 创建你需要的数据库
    use test;
    
    # 创建这个数据库的管理员(可选)
    db.createUser({
      user: "testuser",
      pwd: "passwd",
      roles: [
        {role: "userAdmin", db: "test"}
      ]
    })
    
    # 创建这个数据库下的普通用户,可以设置它的权限。下面创建的这个用户拥有读写(readWrite)权限
    db.createUser({
      user: "putonguser",
      pwd: "passwd",
      roles: [
        {role: "readWrite", db: "test"}
      ]
    })
    
    # 以普通用户连接 mongodb
    mongo --port 53082 -u putonguser -p passwd --authenticationDatabase "test"
    

    4. 数据库的备份和还原

    在原先服务器上备份(需要暂停服务的暂停服务),注意修改成数据库用户的正确端口和用户以及登陆密码

    # 退出连接
    exit;
    # 开始备份
    mongodump -h localhost --port 27018 -d test -u putonguser -p passwd -o .
    # 压缩(对应的文件)
    tar -zcvf test.tgz ./test
    # 传输到第二台服务器上
    scp -r test.tgz username@host:/remote/directory
    

    在新的服务器上解压,并还原到指定的数据库中

    # 解压
    tar -xf test.tgz test
    # 还原到指定(test)数据库
    mongorestore -h localhost -d test --dir ./test --port 27018 -u putonguser -p passwd --authenticationDatabase "test"
    

    然后查询下数据库,看看数据是否是正常的。

    相关文章

      网友评论

        本文标题:mongodb数据库安装以及备份还原过程

        本文链接:https://www.haomeiwen.com/subject/mgtyhqtx.html