안녕하세요~
바로 아랫글에도 백업 후 완전 동일하게 복구하는 법(다른 서버에)에 관해 글을 올렸었습니다.
답변 주신내용중에 -g -o 옵션을 사용하면 동일한 복제가 된다는 답변을 듣고 테스트해본 결과,
고유한 uid는 동일하게 복제가 안되었습니다.
혹시 파일시스템 수준의 복사 말고,
덤프를 이용한 완벽한 백업 및 복구 방법 아시는분 도와주시면 감사하겠습니다^^
감사합니다.
직접 해보니, 정말 사용자에 대한 oid는 새롭게 만들어질 수 밖에 없겠더군요.
상황이 이러면,
데이터 디렉토리 전체를 OS 차원의 복제 빼고는 답이 없습니다.
통상 이 경우는 9.1 (?) 버전부터 pg_basebackup 이라는 명령을 제공하고 있는데,
이걸 사용하면 될 것 같네요.
이게 리플리케이션 기법을 사용하는지라, 9.0 이상 버전에서만 사용할 수 있습니다.
(이 경우는 사용자 정의 테이블스페이스가 있는 경우, 복제하려는 호스트가 서버가 실행되고 있는 호스트라면, 사용할 수 없으며, 또한 서버가 스트리밍 리플리케이션 설정이 되어있어야합니다)
이런 베이스 백업이 힘들다면, 수동 백업이 필요한데,
다음은 이 서버에서 사용하고 있는 수동 베이스 백업 스크립트입니다.
#!/bin/sh if [ -f /home/postgres/archive/start_backup ]; then exit; fi touch /home/postgres/archive/start_backup /usr/local/pgsql93/bin/psql -c "select pg_start_backup('base',true)" rsync -av --delete /usr/local/pgsql93/data /home/postgres/backup rsync -av --delete /usr/local/pgsql92/bdtbs /home/postgres/backup_tbs /usr/local/pgsql93/bin/psql -c "select pg_stop_backup()" for i in `ls -tr /home/postgres/archive` do if [ "/home/postgres/archive/$i" = "/home/postgres/archive/start_backup" ]; then break; fi rm -f /home/postgres/archive/$i done rm -f /home/postgres/archive/start_backup
감사합니다^^