Skip to content

Instantly share code, notes, and snippets.

@GabbasovDinar
Last active July 11, 2019 11:41
Show Gist options
  • Save GabbasovDinar/7a9d5e611a5a7e4b7cdbfdafb3a71cd7 to your computer and use it in GitHub Desktop.
Save GabbasovDinar/7a9d5e611a5a7e4b7cdbfdafb3a71cd7 to your computer and use it in GitHub Desktop.
Instruction about database migration of Odoo using openupgrade. Example migration of database from 7.0 to 8.0

Восстановление базы из Дампа

Если имеется дамп базы, то для миграции нуобходимо его развернуть (версии postgres для дамп и новой базы должны совпадать):

  1. sudo su - psql
  2. createdb odoo7db
  3. cd /home/diga/*PATH_TO_DUMP_DATABASE*
  4. psql odoo7db < odoo7db.dump
  5. psql -l - в таблице должна отображаться новая база.

Владелец базы должен совпадать с текущим владельцем. Если это не так, необходимо поменять владельца:

  1. psql
  2. ALTER DATABASE odoo7db OWNER TO diga;

Заметка

  • Модуль должен быть обязательно портирован в новую версию
  • При необходимости для модуля нужно дописать миграционные скрипты

Миграция с использованием openupgrade

В терминале:

  1. Create directory openupgrade mkdir /var/tmp/openupgrade
  2. Open folder cd /var/tmp/openupgrade
  3. Download migrate.py from module openupgrade odoo 11 wget https://raw.githubusercontent.com/OCA/OpenUpgrade/11.0/scripts/migrate.py
  4. sudo chmod 777 migrate.py
  5. Moved the config file to the same folder as migrate.py sudo cp /etc/odoo-server.conf /var/tmp/openupgrade
  6. sudo chmod 777 odoo-server.conf
  7. В конфиге файле необходимо указать db_user=diga
  8. Install odoo 8 requirements libs
  9. Run migrate with reguler user not root or using sudo python migrate.py --config=odoo-server.conf --database=odoo7db --run-migrations=8.0
  10. Изучить Module coverage и в случае необходимости обновите в addons перенесенные модули и перезапустите скрипт.
  11. Переименуйте мигрированную базу odoo7db_migrated sudo su - postgres
  12. psql
  13. ALTER DATABASE odoo7db_migrated RENAME TO odoo8db;

Для просмотра логов миграци запустите tail -f /var/tmp/openupgrade/migration.log и в случае необходимости исправьте ошибки.

Установка новой базы после миграции

  1. Запустите сервер Odoo ./openerp-server -c ~/.openerp_serverrc-8 -d odoo8db
  2. Изучите логи и удалите лишние модули (можно добавить новый ключ --unistall со списком модулей которые нужно удалить, в odoo нет такой функции нужно самому дописывать.

Я использовал существующий ключ -u для удаления модулей. Например:: Запустил сервер: -u remove в loading.py:

REMOVE_MODULES=['budget', 'custom_report']
if 'remove' in tools.config['update']:
  for m in REMOVE_MODULES:
    cr.execute("update ir_module_module set state=%s where name=%s", ('to remove', m))

После чего перезапустил сервер и все указанные модули удалились. После того как удалили лишние модули необхоидмо обновить все остальное с ключем -u all

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment