Як перенести MongoDB 2.6 на 3.0 за допомогою WiredTiger


9

MongoDB 3.0 представляє новий механізм зберігання даних, wiredTigerякий призводить до значного скорочення обсягу пам’яті та дискового простору.

Оскільки мій БД наразі становить ~ 20 мільйонів об'єктів і використовує близько 70 ГБ оперативної пам’яті, це оновлення надходить у потрібний час для відстрочення оновлення обладнання.

Як ви мігруєте існуючу установку MongoDB 2.6 на 3.0 та одночасно отримуєте переваги wiredTiger?

Документація стосується параметрів, які призводять до помилок при запуску, які не дозволяють MongoDB запускатися. Крім того, місця розташування файлів не відповідають тим, які розміщені в Ubuntu (сервер 14.04 LTS).


Це єдиний екземпляр (не набір реплік)?
Адам С

Відповіді:


15

У установках за замовчуванням файл конфігурації знаходиться у /etc/mongod.conf. Документи MongoDB не згадують про те, що при переході до WiredTiger нам також потрібно оновити файл конфігурації до нового формату YAML, введеного в 2.6.
Наскільки я можу сказати, 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 -придумляти до провідника


1
Примітка: для більш повних прикладів файлів конфігурації YAML дивіться мою відповідь на DBA: dba.stackexchange.com/a/82592/6441
Adam C

1

Використовуючи старий формат файлу конфігурації , я мав успіх у:

storageEngine = провідний тигр

Це досить цікаво, оскільки під час написання свого допиту я спробував саме це і отримав помилку (якої не пригадую).
Емануель Ей
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.