백업 가져오기 오류: "고유한 인덱스를 생성할 수 없음"

네, 해결했습니다. 다음 작업을 수행했습니다

컨테이너에 진입

./launcher enter app

데이터베이스에 연결

su postgres -c 'psql discourse'

중복 항목을 찾아보기

discourse=# select * from incoming_referers where path LIKE '%/search/' ORDER BY incoming_domain_id;`

  id  |    path    | incoming_domain_id
------+------------+--------------------
 3339 | /search/   |                 33
 6257 | /search/   |                 91
 1567 | /search/   |                298
 1777 | /search/   |                341
 3010 | /search/   |                418
 6247 | /search/   |                418
 4293 | /search/   |                644
 2899 | /search/   |                653
 3447 | /search/   |                793
 3696 | /search/   |                852
 4395 | /a/search/ |               1050
 6968 | /search/   |               1305
 5634 | /search/   |               1387
 5834 | /search/   |               1437
 6519 | /search/   |               1637
 7127 | /search/   |               1787
 7280 | /search/   |               1827
(17 rows)

중복 항목 삭제

DELETE FROM incoming_referers WHERE path LIKE '%/search/' AND id IN (6247);

그 다음 재인덱싱 수행

discourse=# REINDEX SCHEMA CONCURRENTLY public;
WARNING:  cannot reindex invalid index "public.incoming_referers_pkey_ccnew" concurrently, skipping
WARNING:  cannot reindex invalid index "public.index_incoming_referers_on_path_and_incoming_domain_id_ccnew" concurrently, skipping
WARNING:  cannot reindex invalid index "pg_toast.pg_toast_20732_index_ccnew" concurrently, skipping
REINDEX

그 후 백업을 한 번 더 생성하고, 새 서버로 복사한 뒤 성공적으로 가져왔습니다 :smiley:

백업 과정에서 중복 항목을 감지하여 문제를 방지할 수 있다면 좋겠습니다. 다행히도 여전히 실행 중인 원래 서버에 접근할 수 있었기 때문에 문제가 되지 않았습니다. 만약 콜드 백업(정지된 상태의 백업)을 복원하는 상황이었다면 훨씬 더 큰 문제가 되었을 것입니다.

도와주셔서 정말 감사합니다.