Skip to content

Instantly share code, notes, and snippets.

@hryamzik
Last active October 6, 2015 09:55
Show Gist options
  • Select an option

  • Save hryamzik/1a8e78a9a9023b75e3d8 to your computer and use it in GitHub Desktop.

Select an option

Save hryamzik/1a8e78a9a9023b75e3d8 to your computer and use it in GitHub Desktop.

This is not a generic postgres role, it's sverka-tuned one!

Replication setup, performed from master

slave=192.168.160.1
master=192.168.160.120
ssh $slave hostname
ssh ${slave} sudo service postgresql stop
ssh ${slave} sudo install -v -o postgres -g postgres -m 644 /dev/null /var/lib/postgresql/9.3/main/recovery.conf
printf "standby_mode = 'on'\nprimary_conninfo = 'host=$master'\n"| ssh ${slave} sudo tee /var/lib/postgresql/9.3/main/recovery.conf
sudo su - postgres -c "psql -c \"select pg_start_backup('clone',true)\""
time sudo -E rsync -av --rsync-path="sudo rsync" --exclude pg_xlog --exclude postgresql.conf --exclude postgresql.pid /var/lib/postgresql/9.3/main/  ${USER}@${slave}:/var/lib/postgresql/9.3/main/
sudo su - postgres -c "psql -c \"select pg_stop_backup();\""
sudo -E rsync -av --rsync-path="sudo rsync" /var/lib/postgresql/9.3/main/pg_xlog ${USER}@${slave}:/var/lib/postgresql/9.3/main/
ssh ${slave} sudo service postgresql start

Check replication

sudo su - postgres -c "psql -c \"select client_addr, state, sent_location, write_location, flush_location, replay_location, sync_priority from pg_stat_replication;\""
ssh ${slave} "sudo su - postgres -c 'psql -c \"select now() - pg_last_xact_replay_timestamp() AS replication_delay;\"'"

Switch slave to master

/usr/lib/postgresql/9.3/bin/pg_ctl -D /var/lib/postgresql/9.3/main/ promote

Reference

Starting Replication with only a Quick Master Restart

Binary Replication in 7 Steps

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment