현재 복구시 DROP DATABASE DB명하고 다시 올리는데
이렇게 하면 복구할때 DB를 다시 생성하고 권한도 부여해
주어야 하는데 복구할때 기존 DB 내용만 지우고 복구한다던가
아니면 증분복구가 되어 필요한 table의 내용만 자동으로 복구
되었으면 합니다..
조언 부탁드립니다.
음... 다른 DB는 그런게 되나요? ^^
증분 복구는 가능하지만 특정 table만 하는 것이라든가 database를 날리지 않고 내용만 복구하는 방법은 없을 것 같은데요? 다른 db도 이런 것은 안되지 않나요?
다른 DB는 잘 모르겠습니다..
(다만 MySQL은 drop database 하지 않고 그냥 역덤프
하면 증분백업이 되지 않나요???)
그러다면 세부적인 질문..
질문1.
pg_dump testdb > testdb.sql
dropdb testdb
psql -f testdb.sql testdb
이렇하면 권한도 같이 복구가 되는지.
예를 들어 user1 라는 사용자가 원래 testdb의 owner인데
testdb 내리고 덤프받은 testdb.sql로 복구하면 권한이
유지 되는지 궁금합니다..
---- Name: branch_no_seq; Type: SEQUENCE SET; Schema: public; Owner: user1--
testdb.sql (덤프된 파일)에 보면 위와 같이 각각의 table에 대해 Owner가 지정되어 있는데 옆에 있는 '--'가 주석이 아닌가요???
질문2
아니면 만일 dropdb 안하고 그냥 이렇게 해버려도 괜찮은지 궁금합니다..
갑자기 postgresql을 다루게 되어 궁금한 점이 많습니다..
감사합니다..
-- 는 주석이 맞습니다만 대부분 그 위에 해당 owner 로 인증을 한 상태로 진행합니다.
SET SESSION AUTHORIZATION 'root';위와 같은 SQL로 먼저 owner를 스위치 한 다음에 쿼리를 진행하니까 대부분 그대로 복구됩니다.
이렇게 하면 에러가 날겁니다. 이미 있는 객체들을 다시 생성하려고 하니까요. 데이터만 같은게 쌓이게 될 겁니다.
pg_dump 하게 되면 ALTER DATABASE 명령어로 해당 데이터베이스의 초기 세팅값 설정한 것 만 빼고는 그대로 백업되고 복구 된다고 보시면 됩니다
조언 감사합니다. 말씀하신데로 이런 저런 테스트를
해보았습니다.
덤프하고 dropdb안하고 바로 덮어 올리니 에러나는 군요..
덤프된 sql 파일을 유심히 보니..DB가 아니라
각 테이블에 owner를 alter table하네요.. 확인했습니다.
(table level에서 권한이 설정되네요)
그냥
백업
복구 - 다른 서버에서 실행
(owner ID는 원래 있던 서버와 동일한 id/pw 설정
되어 있음.)
createdb testdb
이런식으로 하니 그전 권한이
유지가 되네요..