반응형 전체 글157 PostgreSQL 백업·복구 — 삭제된 데이터 되살리고 삼중화 다시 구성하기 Master 서버에서 주문을 지웠더니 복제 서버 두 대에서도 주문이 사라졌다.서버가 세 대여도 삭제 명령까지 똑같이 전달되기 때문에, 복제만으로는 잘못 지운 데이터를 되돌릴 수 없다. 이번에는 전체 백업을 먼저 남기고, 삭제 직전까지의 변경 기록을 다시 적용해 주문을 복구했다.복구한 서버의 데이터를 확인한 뒤 새 Master 서버로 전환하고, 복제 서버 두 대를 다시 연결하는 데까지 이어간다.복제와 백업은 맡은 일이 다르다상황필요한 준비Master 서버 한 대가 멈춤복제 서버 승격과 앱 연결 주소 전환실수로 DELETE·UPDATE 실행전체 백업과 사고 전 시점까지 이어지는 WALDB 장비와 디스크를 함께 잃음다른 장비나 저장소에 보관한 백업·WAL·설정 파일WAL은 PostgreSQL이 변경 내용을 기.. 2026. 11. 9. PostgreSQL 이중화·삼중화 설정 — 복제부터 주 서버 전환까지 DB를 세 대 띄워도 Master 서버가 멈추면 새 데이터를 저장할 곳이 사라진다.복제 서버 가운데 어느 한 대를 새 Master로 바꾸고, 나머지 서버와 앱의 연결도 함께 옮겨야 다시 저장할 수 있다. PostgreSQL의 Master(Primary) 서버에 복제 서버 한 대를 붙이면 이중화, 두 대를 붙이면 삼중화 구성이 된다.이번에는 복제 서버를 하나씩 중지하고 Master도 교체한 뒤, 새 Master 서버 1대와 복제 서버 2대로 다시 구성했다. 먼저 Docker를 실행하고 터미널을 연다.아래 명령으로 실습용 주문 테이블을 만들고, 복제와 서버 전환을 순서대로 진행한다.먼저 세 대의 역할부터 나누기컨테이너처음 역할전환 뒤 역할pg-ha-primary쓰기·읽기 Master 서버중지 상태 유지pg-.. 2026. 11. 8. Java HttpClient 타임아웃 설정 API 주소는 맞는데 프로그램이 다음 줄로 넘어가지 않는다.서버가 응답할 때까지 기다리는 코드라면, 상대 서버가 멈춘 동안 호출한 쪽도 같이 묶인다.연결 제한을 1초로 넣었는데도 계속 기다리는 경우가 있다.연결을 맺는 시간과 응답을 기다리는 시간은 서로 다른 설정이기 때문이다.두 설정을 나누고, 응답 본문까지 늦어졌을 때 빠져나오는 코드로 정리했다.제한 시간은 어디에 거는 걸까설정예제 값대상HttpClient.connectTimeout1초새 연결을 맺는 단계. 기존 연결을 재사용하면 적용되지 않음HttpRequest.timeout2초해당 HTTP 요청. 본문까지 적용되는 범위는 JDK 버전 차이가 있음responseFuture.get3초응답 문자열을 받을 때까지 호출 스레드가 기다리는 시간1초, 2초, .. 2026. 11. 7. PostgreSQL 접속 권한 설정 PostgreSQL 계정을 만들었는데 접속이 안 되거나, 접속한 뒤에도 테이블을 읽지 못하는 경우가 있다.비밀번호 문제처럼 보여도 막힌 위치에 따라 고칠 곳이 달라진다. 접속 주소 → 인증 규칙 → 테이블 권한 순서로 나누면 원인을 찾기 쉽다.설정 파일 수정과 GRANT도 이 순서대로 진행한다.담당하는 곳결정하는 내용반영 방법postgresql.conf의 listen_addresses서버가 어느 주소에서 연결을 받을지변경 후 PostgreSQL 재시작pg_hba.conf어느 IP·DB·계정에 어떤 인증을 적용할지파일 검사 → reload → 새 연결GRANT / REVOKEDB 접속, 스키마 사용, 테이블·시퀀스 권한트랜잭션 확정 후 적용. 서버 reload 불필요실습용 DB와 접속할 클라이언트 만들기D.. 2026. 11. 7. PostgreSQL 중복 저장 오류 해결 — ON CONFLICT로 건너뛰거나 갱신하기 상품 가격을 다시 올리려는데 같은 상품코드가 있다는 오류가 나왔다.처음 등록은 됐지만, 같은 상품을 한 번 더 넣으면서 중복 키에 걸린 것이다. 이미 등록한 상품이라면 기존 값을 유지할지, 새로 받은 값으로 바꿀지부터 정하면 된다.두 경우를 ON CONFLICT로 나눠 처리해 보았다. 예제 상품은 코드가 P001인 머그컵으로, 처음 가격은 5,500원이고 새 가격은 6,000원이다.가격을 다시 저장하고 같은 요청도 반복해서 보내 보았다.상품과 가격은 설명을 위한 예제 데이터다.접속하고 임시 테이블부터 만들기아래 SQL은 다른 SQL 편집기에서도 실행할 수 있지만, 임시 테이블이므로 처음부터 끝까지 같은 연결을 유지해야 한다. 이 실습에서 사용하는 값은 다음과 같다.NAMESPACE: defaultNAME.. 2026. 11. 6. 엑셀 두 파일 비교하기 — 바뀐 값과 추가·삭제된 행만 뽑기 엑셀 파일을 새로 받았는데 행 순서까지 달라져 있으면 비교하기가 귀찮아진다. 어제 파일의 2행과 오늘 파일의 2행이 같은 상품이라는 보장이 없기 때문이다.그렇다고 전부 정렬해 놓고 하나씩 볼 수도 없고… 이번에는 상품코드를 기준으로 두 파일을 맞춰 보았다. 바뀐 값은 변경, 새로 들어온 상품은 추가, 빠진 상품은 삭제 시트에 따로 담는다. 원본 두 개는 읽기만 하고 결과 파일을 새로 만든다.행 번호 대신 상품코드로 맞추기첨부한 before.xlsx와 after.xlsx는 각각 네 행짜리 예제다. 시트 이름은 둘 다 재고이고, 첫 행에는 상품코드·상품명·단가·재고·비고가 있다. 실제 거래 자료가 아니라 비교하기 쉽게 만든 문구류 목록이다.상품코드달라진 내용00123볼펜 단가 1,000 → 1,200 / 재.. 2026. 11. 6. 이전 1 2 3 4 ··· 27 다음 반응형