여러분께 알려드립니다. 피크 시간대에 이 업그레이드를 시도하지 마세요.
2.6.0b2 업그레이드가 보통 몇 분 만에 끝나는데(보통 다시 확인해 볼 때 이미 끝난 상태), 우리 서버에서는 40분 넘게 실행 중입니다. 고장 난 건 아닌지 걱정했는데, postgres에 로그인해서 보니 거대한 업데이트가 실행 중인 것을 볼 수 있습니다. 사설 메시지의 게시글 검색 데이터를 변경하는 것으로 보입니다.
다행히 고장 나지 않았으면 좋겠습니다. 알아볼 수 있을 거예요. 업그레이드 도중에 프로세스를 종료하거나 컨테이너를 재시작하는 건 정말 원치 않습니다.
실행 중인 쿼리:
postgres=# SELECT pid, age(clock_timestamp(), query_start), usename, query
FROM pg_stat_activity
WHERE query != '<IDLE>' AND query NOT ILIKE '%pg_stat_activity%'
ORDER BY query_start desc;
pid | age | usename | query
-------+-----------------+-----------+---------------------------------------------------------------------------
-------------------
698 | | |
701 | | postgres |
699 | | |
697 | | |
696 | | |
14572 | 00:10:31.484201 | discourse | UPDATE post_search_data
+
| | | SET private_message = X.private_message
+
| | | FROM
+
| | | (
+
| | | SELECT post_id,
+
| | | CASE WHEN t.archetype = 'private_message' THEN TRUE ELSE FALSE END pri
vate_message +
| | | FROM posts p
+
| | | JOIN post_search_data pd ON pd.post_id = p.id
+
| | | JOIN topics t ON t.id = p.topic_id
+
| | | WHERE pd.private_message IS NULL OR
+
| | | pd.private_message <> CASE WHEN t.archetype = 'private_message' THEN T
RUE ELSE FALSE END+
| | | LIMIT 3000000
+
| | | ) X
+
| | | WHERE X.post_id = post_search_data.post_id
+
| | |
14573 | 00:47:02.814489 | discourse | SELECT pg_try_advisory_lock(2859260972035668690)
(7 rows)


