Last active
December 6, 2019 23:07
-
-
Save brand-it/3f496981cb98976c6f78f807b916a2ea to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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