Skip to content

Instantly share code, notes, and snippets.

@sclinede
Last active August 29, 2015 14:10
Show Gist options
  • Save sclinede/3c25962b8b6e1afc07f7 to your computer and use it in GitHub Desktop.
Save sclinede/3c25962b8b6e1afc07f7 to your computer and use it in GitHub Desktop.
-- Предварительно --
+ 1. Закрыть редактирование
+ 2. Отключить крон
+ 3. Стоп Кирби
-- Переиндексация с новым конфигом --
+ 4. Таблицы на нове. !выполнено с ошибками!
(забыли таблицу product_moderations, изменения типа - product_state,
хранимки - cast_product_public_state_into_integer, каст public_state)
Важно! Для теста выполнить запрос на nowa заменив $start и $end на 1
+ 5. Копируем новый конфиг индекса на bz-index3 (../<release_dir>/rake sphinx:copy_config[slave1])
+ 6. Правим товарный индекс - nowa (host=172.31.40.72), порт (port=5432), шаг (step_size=10000)
+ 7. Удаляем slave/data/* slave/binlog/*
+ 8. Индексируем в скрине
+ 9. прописать nowa в конфиге индексации на другом слейве
+ 10. Копируем индексы на другой слейв
+ 11. Обновляем триггер unbinded products, products counter + переинициализация
+ 12. drop ненужных индексов !не совсем корректно, среди них был индекс который использовался!
-- Deploy --
+ 13. deploy !зарелизились, но error_rate > 6%!
Забыли что на production еще не удален product.state -> deleted
Правки на горячую (т.к. deleted исчезнет после насчета, правки в master не целесообразны):
- lib/services/product_response_rules.rb -> добавляем в response rules map, state IS_DELETED - аналог IS_PENDING
- vendor/plugins/core_products/app/models/core_products/product.rb -> StateMachine state :deleted,
event :postpone - реагирует и на :deleted
-- Post actions --
+ 14. Удалить хранимку отвечающую за наполнение наполнение public_state
+ 15. Выполнить миграцию old products counter без переинициализации
+ 16. Включить редактирование
+ 17. update products set state = 'pending' where state = 'deleted' (~18M товаров)
_ 18. DROP и CREATE индексов после обновления storefront
_ 19. ALTER products NOT NULL public_state (осторожно! ExclusiveLock на products)
_ 20. пожать products
_ 21. изменение cast'а в postgres по state у товара
_ 22. Пересоздание триггеров для денормализации (не влияет на работоспособность, просто в целях оптимизации):
products_denormalization_common, denorm_traits_binding_by_product, product_denormalization_groups
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment