postgresql icon indicating copy to clipboard operation
postgresql copied to clipboard

Add repmgr extension

Open rbjorklin opened this issue 5 years ago • 10 comments

This PR adds opt-in functionality for Postgres replication controlled by repmgr.

rbjorklin avatar Mar 20 '19 21:03 rbjorklin

The code looks solid!

I wonder with how much PostgreSQL is investing in replication if this is going to be something that people will need long term.

Would make more sense to me as its own role that users can install and use alongside this one.

nchudleigh avatar Mar 22 '19 21:03 nchudleigh

Just wanted to chime in and say that I haven't abandoned this. I just can't find time to fix this at the moment.

rbjorklin avatar Jun 15 '19 21:06 rbjorklin

@gclough I've added an installation test and as there is a step in the extension to verify cluster functionality I feel pretty okay with this now. I will say though that I'm not at all familiar with Travis and it feels like I have shoe-horned a test into the existing suite so if someone could provide some pointers on that it would be appreciated.

rbjorklin avatar Dec 13 '19 18:12 rbjorklin

this one is extended by https://github.com/Demonware/postgresql/pull/3 and working at https://github.com/noris-network/ansible-postgresql/tree/add-repmgr-extension

egmont1227 avatar Nov 20 '20 08:11 egmont1227

@egmont1227 and @rbjorklin - thank you much for your work on this. One thing that bit me on @egmont1227 's branch was that in defaults/repmgr.yml, the conninfo doesn't set the passfile={{repmgr_passfile}}.

robustq avatar Feb 22 '21 00:02 robustq

Hey all, another issue to note that should be a quick fix:

https://github.com/noris-network/ansible-postgresql/blob/add-repmgr-extension/tasks/extensions/configure_repmgr.yml#L100 assumes repmgr is the repmgr user, and should be configurable


- name: Repmgr | Clone standby
  command: "{{postgresql_bin_directory}}/repmgr -F -h {% for host, vars in hostvars.items() if 'repmgr_primary' in vars and vars['repmgr_primary'] == True %}{{ host }}{% endfor %} -p {{ postgresql_port }} -U repmgr -d repmgr -f {{repmgr_config_directory}}/repmgr.conf standby clone"
  become: yes
  become_user: "{{ postgresql_service_user }}"
  when: not repmgr_primary and not ansible_hostname in  repmgr_cluster_show.stdout and not "standby" in repmgr_cluster_show.stdout

robustq avatar Feb 22 '21 01:02 robustq

@egmont1227 and @rbjorklin I was able to get this working on Ubuntu 18.04, and ran into a few other issues - will document the changes I made - some were done the 'right' way, others were a bit hackish just to get what I needed working. Either way, your work on this was super helpful, and I appreciate you making this available!!!

robustq avatar Feb 22 '21 13:02 robustq

True, we also jumped upon it and got it working some time ago.

Thank you for your review on noris network branch. Will look into it.

@egmont1227 and @rbjorklin - thank you much for your work on this. One thing that bit me on @egmont1227 's branch was that in defaults/repmgr.yml, the conninfo doesn't set the passfile={{repmgr_passfile}}.

This is done differently. See https://github.com/2ndQuadrant/repmgr/blob/dd8204e01354ce75a6fa49eefc804fe5d24e8e56/repmgr.conf.sample#L167 for the example config-snippet and e.g. https://github.com/noris-network/ansible-postgresql/blob/0c15305a9e67529b992c0ec9df57fdda424fff9b/templates/repmgr.conf-5.0.j2#L168 defining the variable

Hey all, another issue to note that should be a quick fix:

https://github.com/noris-network/ansible-postgresql/blob/add-repmgr-extension/tasks/extensions/configure_repmgr.yml#L100 assumes repmgr is the repmgr user, and should be configurable

You are right. Have to investigate either use repmgr_user or repmgr_replication_user, but guess it will be rempgr_user

egmont1227 avatar Feb 24 '21 19:02 egmont1227

@egmont1227 I did end up adding in quite a few workarounds, many are hacks that I'd like to figure out (Debian-specific changes, for systemd, etc.) but if you want to glance over it nonetheless, check out the changes at https://github.com/robustq/postgresql/commits/master

robustq avatar Feb 25 '21 18:02 robustq

I'm in the process of doing similar work, but would love if one of the PRs were merge ready. Postgresql doesn't appear to have an interest in trying to do the featureset of repmgr sofar. Being able to construct automatic HA failovers is a huge gain.

jhg03a avatar May 27 '21 17:05 jhg03a

This pr has been marked 'stale' due to lack of recent activity. If there is no further activity, the issue will be closed in another 30 days. Thank you for your contribution!

github-actions[bot] avatar Feb 21 '24 23:02 github-actions[bot]

I no longer care about this. Anyone who wants to; feel free to adopt and use this as you please.

rbjorklin avatar Feb 21 '24 23:02 rbjorklin