PostgreSQL data migration using pg_dump
Updated:Categories: DB
Tags: #PostgreSQL
PostgreSQL pg_dump 로 데이터 이동시키기
테스트를 위해서 기존 서비스 PostgreSQL(v9.5.5)에서 가지고 있던 데이터를 다른 곳으로 옮김.
우선, 데이터를 이동시킬 대상 postgreSQL(v10.4)을 docker
로 만듬.
Docker hub에서 PostGIS container mdillon/postgis를 설치 및 실행.
$ docker pull mdillon/postgis
$ docker run --name postgis-test -e POSTGRES_PASSWORD={password} -it -p {host port}:{container port} mdillon/postgis
기존 postgreSQL이 동작하고 있는 인스턴스 콘솔에서 pg_dump를 실행하여 데이터를 sql 파일로 만들고 이동.
# 데이터베이스 이름이 geo인 데이터들을 유저 이름 postgres로 접속하여 sql 파일로 만들어줌
$ pg_dump -U postgres geo > geo_db.sql
# 만든 컨테이너로 데이터 이동
$ psql -U {대상 유저 이름} -h {대상 주소} -p {대상 port} -d {대상 database 이름} -f {대상 db에서 실행할 sql 파일 path}
Trouble shooting
Postgres: Checkpoints Are Occurring Too Frequently
Warnings
옮기는 도중에 docker container db 로그에 다음과 같은 로그가 남음.
LOG: checkpoints are occurring too frequently (26 seconds apart)
2018-07-28 06:30:35.540 UTC [89] HINT: Consider increasing the configuration parameter "max_wal_size".
wal은 Write-Ahead Log 데이터 무결성을 보장하는 표준 방법.
이 글에 따르면,
업데이트가 bulk로 일어날 경우 발생할 수 있으며, checkpoint_segments
옵션을 증가하여 해결 가능하다고 함. 하지만, warnings 이기 때문에 따로 옵션을 수정하지 않음.
Your server is generating so much WAL data due to the wal_level set to hot_standby. I’m assuming you need this, so the best option to avoid the warnings is to increase your checkpoint_segments. But they are just that - warnings - it’s quite common and perfectly normal to see them during bulk updates and data loads. You just happen to be updating frequently.
read_only role이 없다는 Error
소스 postgreSQL 에는 read_only
role 이 있지만, 대상 postgreSQL 해당 role 이 없어 발생.
Comments