===== Postgresql =====
그냥 도커 쓰자
docker-compose.yml
version: '2'
services:
postgres:
image: postgres
container_name:
environment:
- POSTGRES_PASSWORD=
- POSTGRES_INITDB_ARGS=--encoding=UTF-8
expose:
- '54321'
ports:
- '54321:5432'
volumes:
- ./data:/var/lib/postgresql/data
- ./home:/home
restart: always
Windows
version: '2'
services:
postgres:
image: postgres
container_name:
environment:
- POSTGRES_PASSWORD=
- POSTGRES_INITDB_ARGS=--encoding=UTF-8
expose:
- '54321'
ports:
- '54321:5432'
volumes:
- pgdata:/var/lib/postgresql/data
- ./home:/home
restart: always
volumes:
pgdata:
더 편한데 유저 개념은 좀 달라서 잘 모르겠다...
오히려 리눅스의 유저의 사용권한(RW)에 더 가까운 형태
http://dba.stackexchange.com/questions/56576/postgresql-user-permissions
일단 mysql와 마찬가지로 설정폴더와 데이터폴더가 나뉘어있고 이를 적절히 활용하여야한다.
데이터폴더 기본값: /var/lib/postgresql/...
설정폴더 기본값: /etc/postgresql/...
맥은 위치가 다르다.
레플리케이션
친절한 튜토리얼이 구글에있다.
https://cloud.google.com/solutions/setup-postgres-hot-standby
프라이머리에서
repuser를 pg_hba에서 받아들이고
연결가능하게 설정한 뒤
디비를 백업한다.
==== 데이터베이스 마이그레이션 ====
Django DB를 SQLite에서 Postgresql 로 바꾸려고 함.
먼저 [[https://gist.github.com/sirodoht/f598d14e9644e2d3909629a41e3522ad|이 방법]] 을 해볼 것.
안되면 도커로 ruby를 설치해서 위 링크의 @abitarn의 답변을 수행하자.
%%sqlite://%% 까지가 프로토콜이다.
사용했던 docker-compose.yml
version: '3'
services:
ruby:
container_name: ruby-translate-db
image: ruby
volumes:
- ..:/home
stdin_open: true
tty: true
network_mode: "host"
연결 끊기
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'TARGET_DB' -- ← change this to your DB
AND pid <> pg_backend_pid();