postgresql 데이터베이스 가져오기 및 내보내기, 백업/복구

2652 단어 python
postgres 사용자로 전환
su postgres
psql 실행
데이터베이스 만들기
CREATE USER 사용자 이름 WITH PASSWORD'****';create 데이터베이스 [데이터베이스 이름];또는create 데이터베이스 [데이터베이스 이름] owner[사용자 이름];
전체 데이터베이스 가져오기 - W 비밀번호 입력 - p 포트 번호 지정
psql - U postgres(사용자 이름) 데이터베이스 이름(기본적으로 같은 사용자 이름) psql 데이터베이스 이름 가져오기 오류 psql: FATAL: Peer authentication failed for user "postgres"수정vim/var/lib/pgsql/9.6/data/pghba.conf 파일
# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     peer
-----------------------------------------------------------------------------------------------
   :
# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     trust

데이터베이스 서비스 다시 시작하기;만약 사용하지 않으면 리부트를 다시 시작합니다
전체 데이터베이스 내보내기 - O 소속 사용자 무시 - p 지정 포트 번호 pgdump -h localhost-U postgres(사용자 이름) 데이터베이스 이름(기본적으로 같은 사용자 이름)>/data/dum.sql pg_dump 데이터베이스 이름>/data/dum.sql
테이블 내보내기
pg_dump -h localhost-U postgres(사용자 이름)-t table(테이블 이름) 데이터베이스 이름(생략시 같은 사용자 이름)>/data/dum.sql
압축 방법
일반적으로dump로 데이터를 내보내는 것이 비교적 크므로 xz압축을 사용하는 것을 추천합니다
압축 방법sql에서dum을 생성합니다.sql.xz 파일
xz 압축 데이터 역수 데이터베이스 방법
xzcat/data/dum.sql.xz | psql - h localhost - U postgres(사용자 이름) 데이터베이스 이름(기본적으로 같은 사용자 이름)
pg 사용dumpall pg_dump는 데이터베이스 집단의 어떤 데이터베이스 데이터만 백업하고 역할과 테이블 공간에 대한 정보를 내보내지 않습니다.pg_dumpall은 전체 데이터베이스 집단의 모든 데이터베이스에 있는 데이터를 내보낼 수 있으며 역할, 사용자와 테이블 공간의 정의 정보도 내보낼 수 있다.pg 사용dumpall의 일반 명령 형식은 다음과 같습니다.
pg_dumpall > backup_file
pg_dumpall도 지원 및 pgdump와 같은 명령행 옵션입니다. 예를 들어 -h와 -p 등입니다.pg 에서dumpall에서 만든 백업 파일에서 데이터베이스를 복구합니다.데이터베이스 슈퍼 사용자를 사용하여 데이터베이스를 복구하는 작업을 해야 한다.명령 형식은 다음과 같습니다.
psql -f backup_file postgres
pg_dumpall을 실행하는 과정에서postgres를 사용자 이름으로 데이터베이스에 연결합니다.시스템이 자동으로 만든 데이터베이스postgres의 내용도 도출되고 데이터베이스template0과template1의 내용도 도출되지 않습니다.
데이터베이스 DROP DATABASE testdb를 삭제합니다.이 가능하다, ~할 수 있다,...
ERROR:  database "testdb" is being accessed by other users
DETAIL:  There are 3 other sessions using the database.

이 데이터베이스에 연결된 모든 연결을 끊고 데이터베이스를 삭제합니다
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE datname='testdb' AND pid<>pg_backend_pid();

pg_terminate_backend: 데이터베이스와의 연결을 중지하는 프로세스 id의 함수입니다.pg_stat_activity: 서비스 프로세스의 속성과 상태를 저장하는 시스템 테이블입니다.pg_backend_pid(): 현재 세션에 첨부된 서버 프로세스의 ID를 가져오는 시스템 함수입니다.

좋은 웹페이지 즐겨찾기