如何使用 WiredTiger 将 MongoDB 2.6 迁移到 3.0

如何使用 WiredTiger 将 MongoDB 2.6 迁移到 3.0

MongoDB 3.0 引入了一种新的存储引擎,wiredTiger可大大减少内存和磁盘空间的使用。

由于我的数据库目前有大约 2000 万个对象并占用了大约 70GB 的 RAM,因此这次更新来得正是时候,可以推迟硬件更新。

如何将现有的 MongoDB 2.6 安装迁移到 3.0 并同时获得 wiredTiger 的好处?

文档提到了导致启动错误的选项,这些选项会阻止 MongoDB 启动。此外,文件位置与 Ubuntu (Server 14.04 LTS) 中的文件位置不匹配。

答案1

在默认安装中,配置文件位于/etc/mongod.conf。MongoDB 文档没有提到的是,当迁移到 WiredTiger 时,我们还需要将配置文件更新为 2.6 中引入的新 YAML 格式。
据我所知,该engine选项仅在新配置格式中可用。
从旧存储引擎迁移包括创建数据库转储、关闭 mongodb、更改设置,然后将转储导入新存储引擎。

  1. 创建备份。说真的。我们需要一个数据库转储,然后将其导入到新的数据库引擎:

    mongodump -d db_name /backup/path/  
    
  2. 停止mongodb服务

    sudo service mongod stop  
    
  3. 将数据从当前位置移动到其他位置(如果数据目录包含旧存储引擎生成的文件,MongoDB 将无法启动)。

    sudo mv /var/lib/mongodb /var/lib/mongodb_26/
    
  4. 将 MongoDB 升级到 3.0 版本(从http://docs.mongodb.org/v3.0/tutorial/install-mongodb-on-ubuntu/):

    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10  
    echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list  
    sudo apt-get update  
    sudo apt-get install mongodb-org mongodb-org-server mongodb-org-shell mongodb-org-mongos mongodb-org-tools  
    
  5. 将配置文件从旧版本(2.6 之前)转换为当前 YAML 格式。最低要求如下:

    storage:  
        dbPath: "/var/lib/mongodb"  
        engine: wiredTiger  
    
    systemLog:  
       destination: file  
       path: "/var/log/mongodb/mongod.log"  
       logAppend: true  
    
    net:  
        bindIp: 127.0.0.1  
        port: 27017  
        # Enable the HTTP interface (Defaults to port 28017).  
        http:  
            enabled: false  
    

    确保没有剩余旧格式的行,否则 MongoDB 将无法启动。

    配置文件的完整文档位于:http://docs.mongodb.org/v3.0/reference/configuration-options/

  6. 可选择备份日志:

    sudo mv /var/log/mongodb/mongod.log /var/log/mongodb/mongod_26.log
    
  7. 重启mongodb

    sudo service mongod start
    
  8. 加载备份以将数据转换到新的存储引擎

    mongorestore /backup/location
    

检查所有数据无误后,你可以删除旧数据格式的目录

sudo rm -r /var/lib/mongodb_26/

请注意,对于副本集和分片集群,还有一些额外的步骤:http://docs.mongodb.org/v3.0/release-notes/3.0-upgrade/?_ga=1.86531032.1131483509.1428671022#change-replica-set-storage-engine-to-wiredtiger

答案2

使用旧的配置文件格式,我成功了:

storageEngine=wiredTiger

相关内容