Откат#

Данный раздел рассматривает процесс отката СУБД Pangolin.

Процесс отката/восстановления встроен в процесс обновления. Отдельный запуск скрипта отката не предусмотрен.

Откат возможен только на исходную версию, с которой производилось обновление. Для ориентирования по поддерживаемым версиям обновления воспользуйтесь таблицей.

Содержание#

Описание#

Внимание

Действия, описанные ниже, нужно выполнять суперпользователем.

Для определения необходимости восстановления СУБД к исходному состоянию, необходимо изучить лог.

  1. Определите причину падения. Поиск падения осуществляется по ключевым словам в логе, такие как: ['failed!', 'failed: true', 'fatal:'].

  2. Локализуйте место падения по названию задачи: TASK [print msg ERROR (update_errors)].

    Пример сообщения о падении
       ok: [master] => changed=false 
       { 
           "ansible_facts":  { 
               "update_errors":    { 
                   "aggregate": true,
                   "components":   { 
                       "finally": false
                       "pangolin_auth_reencrypt": false
                       "pangolin_backup_tools": false
                       "pangolin_certs_rotate": false
                       "pangolin_checks": false
                       "pangolin_configuration": false
                       "pangolin_dbms": false
                       "pangolin_diagnostic_tool": false
                       "pangolin_manager": false
                       "pangolin_pooler": true
                       "pangolin_security_utilities": false
                       "pangolin_tuner": false 
                   },
                   "hosts":    { 
                       "etcd": true,
                       "master": true,
                       "replica": true  
                   },
                   "types":    { 
                       "configuration":    { 
                           "finally": true,
                           "main": true  
                       },
                       "etcd": { 
                           "finally": true,
                           "main": true  
                       },
                       "patroni":  { 
                           "finally": true,
                           "main": true  
                       },
                       "pg":   { 
                           "bootstrap": true,
                           "major_main_migrate_master_db": true,
                           "major_main_migrate_replica_db": true,
                           "major_main_start_after_migrate_db": true,
                           "major_post": true,
                           "major_pre": true,
                           "not_started_db": true,
                           "remove_pgaudit": true,
                           "role_switched": true,
                           "started_db": true 
                       },
                       "src":  { 
                           "install_pg_probackup": true,
                           "main": true 
                       }
                   } 
               }         
           }
       }
    

    где:

    • components - информация о том, на каком этапе упало обновление;

    • hosts - информация о том, на каком из хостов возникла ошибка;

    • types - информация о типе ошибки.

    Если ошибка произошла при работе механизма обновления, то ключ aggregate должен иметь значение true. В секции components только один ключ должен иметь значение true - это и будет означать место падения.

  3. Более детальное объяснение можно найти по названию задачи: TASK [print msg ERROR about fail component]. Пример развернутого сообщения об ошибке

         msg: RLM.FAIL__E05008:Обнаружена ошибка при настройке компонента pangolin-pooler.__RLM.FAIL
    

Возможные варианты ошибок падения при обновлении:

«FAIL__E03099:В процессе обновления системных каталогов возникли ошибки. Процесс дальнейшего обновления остановлен. Автоматическое восстановление невозможно. Необходимо произвести анализ состояния стенда вручную и восстановить его к исходному состоянию или дообновить.FAIL;
«FAIL__E05002:В процессе обновления возникла ошибка. Восстановление СУБД для данного типа ошибки недоступно. Ознакомьтесь с логами.FAIL»;
«FAIL__E03098:В процессе обновления системных каталогов возникли ошибки. Процесс дальнейшего обновления остановлен. Будет запущено автоматическое восстановление.FAIL»;
«FAIL__E03100:В процессе синхронизации узлов кластера возникли ошибки. Процесс дальнейшего обновления остановлен. Автоматическое восстановление невозможно. Необходимо произвести анализ состояния стенда вручную и восстановить его к исходному состоянию или дообновить.FAIL»;
«FAIL__E03103:В процессе запуска лидирующего узла возникли ошибки. Не удалось получить корректный статус роли. Процесс дальнейшего обновления остановлен. Автоматическое восстановление невозможно. Необходимо произвести анализ состояния стенда вручную и восстановить его к исходному состоянию или дообновить.FAIL»;
«FAIL__E03103:В процессе запуска лидирующего узла возникли ошибки. Не удалось получить корректный статус роли. Процесс дальнейшего обновления остановлен. Автоматическое восстановление невозможно. Необходимо произвести анализ состояния стенда вручную и восстановить его к исходному состоянию или дообновить.FAIL»;
«FAIL__E05006:Не удалось выполнить восстановление версии из локальной резервной копии.FAIL»;
«FAIL__E05007:В процессе сбора необходимой для старта обновления СУБД информации произошла ошибка. СУБД находится в исходном состоянии, восстановление не требуется.FAIL»;
«FAIL__E05010:Обнаружена ошибка в процессе подготовки перед обновлением СУБД Pangolin.FAIL»
«FAIL__E05012:Обновление невозможно продолжить, так как не удается остановить, работающую утилиту перешифрования паролей pangolin-auth-reencrypt.FAIL».   
  • Восстанавливать СУБД нужно, если последней строкой записи является:

    • «В процессе обновления возникла ошибка»;

    • «Восстановление СУБД Pangolin в автоматическом режиме недоступно для этого типа ошибки»;

    • «Автоматическое восстановление СУБД отключено»;

    • «Восстановление СУБД Pangolin запущено»;

  • Восстанавливать СУБД не нужно, если последней строкой записи является:

    • «Обновление СУБД Pangolin успешно завершено»;

    • «Восстановление СУБД Pangolin успешно завершено».

Откат вручную к исходной версии и состоянию кластера#

Восстановление после неудачного обновления с переносом данных#

Восстановление после неудачного обновления с переносом данных.

Восстановление после неудачного обновления исполняемых файлов#

Восстановление после неудачного обновления исполняемых файлов.