psql – 23. 백업과 복구

  1. 백업과 복구에 대해서

값진 데이터가 포함된 모든 PostgreSQL 데이터 베이스는 백업 되어야 한다.
이 과정 동안 기본적인 방법으로 기술과 가정에 대해서 이해해본다.

아래는 PostgreSQL 데이터를 각각 다르게 백업 할 수 있는 기본적인 방법이다.

  • SQL dump
  • File system level backup
  • On-line backup

각각 장점과 단점이 존재한다.

PSQL – DB dump

현재 서버는 AWS Services 중 RDS를 사용 중이다. 기능이 너무 방대하고, 이것 저것 할게 많다 보니 자세하게 사용해보지는 못하였다.

현재 자체적으로 Instance를 백업하고 있으나, 순수하게 Data만 백업하기 위해 Dump를 할려고 한다.

RDS에서 제공되지 않을까? 라는 생각을 한번 해보고.

일단 개발환경으로OS X – Yosemite를 사용중이며, postgre sql 9.3을 사용중이다.

덤프를 하기 위해 일단 dump tool이 존재하는지 확인해보자.

Screen Shot 2014 09 03 at 1 47 13 PM

읍네? PATH가 설정되어 있지 않은가 보다. 어디있나 찾아보자.

Screen Shot 2014 09 03 at 1 47 57 PM

자주 사용하게 될텐데 PATH에 추가해주자.

Screen Shot 2014 09 03 at 1 49 38 PM

환경 셋팅이 완료?


자 그럼 이제 덤프를 한번 떠봅시다.

Importing Data into PostgreSQL on Amazon RDS

사용법을 모른다면

# pg_dump --help

ex)

# pg_dump -U test -d mydb -f mydb2dump.sql

Screen Shot 2014 09 03 at 1 59 17 PM

끝!

PostgreSQL – show tables, show databases, show columns, describe table

the original : http://www.linuxscrew.com/2009/07/03/postgresql-show-tables-show-databases-show-columns/

mysql: SHOW TABLES
postgresql: \d
postgresql: SELECT table_name FROM information_schema.tables WHERE table_schema = ‘public’;

mysql: SHOW DATABASES
postgresql: \l
postgresql: SELECT datname FROM pg_database;

mysql: SHOW COLUMNS
postgresql: \d table
postgresql: SELECT column_name FROM information_schema.columns WHERE table_name =’table’;

mysql: DESCRIBE TABLE
postgresql: \d+ table
postgresql: SELECT column_name FROM information_schema.columns WHERE table_name =’table’;

Clojure – PostgreSQL Test DB

ref : https://github.com/briancarper/oyako/wiki/Example
[code]
CREATE TABLE category (
id integer PRIMARY KEY,
name text
);

CREATE TABLE tag (
id integer PRIMARY KEY,
name text
);

CREATE TABLE post (
id integer PRIMARY KEY,
title text,
content text,
category_id integer REFERENCES category (id)
);

CREATE TABLE comment (
id integer PRIMARY KEY,
post_id integer REFERENCES post (id),
content text
);

CREATE TABLE post_tag (
id integer PRIMARY KEY,
post_id integer REFERENCES post (id),
tag_id integer REFERENCES tag (id)
);
[/code]

[code]
INSERT INTO category VALUES (1, ‘Cows’);
INSERT INTO category VALUES (2, ‘Programming’);

INSERT INTO tag VALUES (1, ‘Current event’);
INSERT INTO tag VALUES (2, ‘Editorial’);
INSERT INTO tag VALUES (3, ‘Elucidation’);

INSERT INTO post VALUES (1, ‘Cows rule’, ‘Everyone likes cows, right?’, 1);
INSERT INTO post VALUES (2, ‘Clojure rocks’, ‘Everyone likes Clojure, right?’, 2);

INSERT INTO comment VALUES (1, 2, ‘Brian’, ‘Me too!’);

INSERT INTO post_tag VALUES (1, 1, 1);
INSERT INTO post_tag VALUES (2, 1, 3);
INSERT INTO post_tag VALUES (3, 2, 2);
INSERT INTO post_tag VALUES (4, 2, 3);

[/code]