Skip to content

Instantly share code, notes, and snippets.

@brand-it
Last active December 6, 2019 23:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brand-it/3f496981cb98976c6f78f807b916a2ea to your computer and use it in GitHub Desktop.
Save brand-it/3f496981cb98976c6f78f807b916a2ea to your computer and use it in GitHub Desktop.
#!/bin/bash
brew install postgresql
set -e
pg_directory='/usr/local/var'
username='postgres'
mkdir $pg_directory/data
printf "\033[1;32mcreated $pg_directory/data\033[0m\n"
mkdir $pg_directory/log
printf "\033[1;32mcreated $pg_directory/log\033[0m\n"
initdb --pgdata=$pg_directory/data/db1 --username=$username
printf "\033[1;32mCreated a new database $pg_directory/data/db1 with username $username\033[0m\n"
printf "\033[1;32mUpdating settings in $pg_directory/data/db1/postgresql.conf\033[0m\n"
printf ' \033[1;32mchanging wal_level to replica\033[0m\n'
sed -i '.bak' 's/#wal_level = replica/wal_level = replica/' $pg_directory/data/db1/postgresql.conf
printf ' \033[1;32mchanging archive_mode to on\033[0m\n'
sed -i '.bak' 's/#archive_mode = off/archive_mode = on/' $pg_directory/data/db1/postgresql.conf
sed -i '.bak' 's/archive_mode = off/archive_mode = on/' $pg_directory/data/db1/postgresql.conf
printf ' \033[1;32mchanging synchronous_commit to remote_apply\033[0m\n'
sed -i '.bak' 's/#synchronous_commit = on/#synchronous_commit = remote_apply/' $pg_directory/data/db1/postgresql.conf
sed -i '.bak' 's/synchronous_commit = on/synchronous_commit = remote_apply/' $pg_directory/data/db1/postgresql.conf
printf " \033[1;32mchanging synchronous_standby_names to '*'\033[0m\n"
sed -i '.bak' "s/#synchronous_standby_names = ''/synchronous_standby_names = '*'/" $pg_directory/data/db1/postgresql.conf
sed -i '.bak' "s/synchronous_standby_names = ''/synchronous_standby_names = '*'/" $pg_directory/data/db1/postgresql.conf
printf " \033[1;32mchanging wal_log_hints to on\033[0m\n"
sed -i '.bak' "s/#wal_log_hints = off/wal_log_hints = on/" $pg_directory/data/db1/postgresql.conf
sed -i '.bak' "s/wal_log_hints = off/wal_log_hints = on/" $pg_directory/data/db1/postgresql.conf
printf '\033[1;32mStarting Master(db1) DB on port 5432\033[0m\n'
pg_ctl --pgdata=$pg_directory/data/db1 --log=$pg_directory/log/db1 --options="--port=5432" start
printf '\033[1;32mAdded replication slot\033[0m\n'
psql --username=$username --command="SELECT * FROM pg_create_physical_replication_slot('slot1');"
psql --username=$username --command="SELECT * FROM pg_replication_slots;"
printf '\033[1;32mCreated Slave from Master using PG Base Backup\033[0m\n'
pg_basebackup --pgdata=$pg_directory/data/db2 --write-recovery-conf --slot="slot1" --host=localhost --port=5432 --username=$username
printf '\033[1;32mStarted Slave on port 5433\033[0m\n'
pg_ctl --pgdata=$pg_directory/data/db2 --log=$pg_directory/log/db2 --options="--port=5433" start
printf '\033[1;32mUp and running here is the connection info\033[0m\n'
psql --username=$username --command="SELECT * FROM pg_replication_slots;"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment