LoginSignup
2
3

More than 5 years have passed since last update.

Dockerを使ってPostgreSQLのなんちゃってレプリケーションを構成

Last updated at Posted at 2018-03-10

概要

Docker使えばPostgreSQLの設定ファイル変えずとも、
簡単に同一サーバ内の2つのPostgreSQLを同期させることができたのでそのときのメモ書き。

前準備

Docker Composeがインストール済みであること

手順

1.コンテナにPostgreSQLを2つ用意

マスタDB(ポート番号5432)とスレーブDB(ポート番号5433)として起動

ポート番号5432と5433で動くPostgreSQLを用意
sudo docker run -d --name=master-postgres -p 5432:5432 -e POSTGRES_PASSWORD=password postgres
sudo docker run -d --name=slave-postgres -p 5433:5432 -e POSTGRES_PASSWORD=password postgres

2.同期用のシェル作成

マスタDBのダウンプファイル作成してスレーブDBに設定するシェル作成。

restore.sh
#--基本情報--
#Dumpファイル名
BACKUP_FILENAME="backup.dump"
#リストア対象のDB
DB_NAME="postgres"
#操作ユーザ
DB_USER="postgres"
#対象のDocker_DB
MASTER_DB="master-postgres"
SLAVE_DB="slave-postgres"
#-------
#Dumpファイル作成
docker exec $MASTER_DB pg_dump -U $DB_USER --clean --if-exists $DB_NAME > $BACKUP_FILENAME
#リストア
cat $BACKUP_FILENAME | docker exec -i $SLAVE_DB  psql -U $DB_USER

3.あとはクーロン設定

例は、5分毎にスレーブDB(ポート番号5433)に同期させるクーロン

クーロンの設定例(5分毎に同期)
*/5 * * * * /opt/sh/restore.sh

4.確認

マスタDBの内容がスレーブDBに同期されているのを確認

postgre.png

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3