Re: Upgrading postgres to 10 running with patroni

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



You need Patroni 1.3 to work with postgresql version 10. My guess is that's where your problem is.

/Magnus 

On Nov 16, 2017 08:34, "Debraj Manna" <subharaj.manna@xxxxxxxxx> wrote:
I am attaching my patroni.yml for reference.

On Thu, Nov 16, 2017 at 12:59 PM, Debraj Manna <subharaj.manna@xxxxxxxxx> wrote:
Hi

I am trying to upgrade postgres 9.5 to postgres 10 running with patroni. I am using patroni 1.0 with single node postgres.

The steps that I have been following -

Stop patroni
sudo kill -9 <patroni process id>


Install postgres-10
sudo add-apt-repository "deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main"
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-10

Stop postgresql cluster

Init data directory for the new upgrade
sudo -H -u postgres mkdir -p /var/lib/postgresql/10/data/postgresql0
sudo -H -u postgres /usr/lib/postgresql/10/bin/pg_ctl -D /var/lib/postgresql/10/data/postgresql0 initdb -o '--data-checksums' -o '--locale=C' -o '--encoding=utf8'

Change data_directory in postgresq.conf for both 9.5 & 10
data_directory - /var/lib/postgresql/data/postgresql0         # For postgresql-9.5
data_directory - /var/lib/postgresql/10/data/postgresql0    # For postgresql-10

Perform the upgrade
cd /tmp
sudo -H -u postgres /usr/lib/postgresql/10/bin/pg_upgrade \
   -b /usr/lib/postgresql/9.5/bin \
   -B /usr/lib/postgresql/10/bin \
   -d /var/lib/postgresql/data/postgresql0 \
   -D /var/lib/postgresql/10/data/postgresql0 \
   -o ' -c config_file=/etc/postgresql/9.5/main/postgresql.conf' \
   -O ' -c config_file=/etc/postgresql/10/main/postgresql.conf'  -k

./analyze_new_cluster.sh reported success.

Copy conf files
Copied postgresql.base.confpostgresql.conf , pg_hba.conf & postmaster.opts from 9.5 data directory /var/lib/postgresql/data/postgresql0 to the 10 data directory /var/lib/postgresql/10/data/postgresql0


Change postmaster.opts to match postgres-10 locations
/usr/lib/postgresql/10/bin/postgres "-D" "/var/lib/postgresql/10/data/postgresql0" "-p" "50432" "-b" "-c" "config_file=/etc/postgresql/10/main/postgresql.conf" "-c" "listen_addresses=" "-c" "unix_socket_permissions=0700" "-c" "unix_socket_directories=/tmp"

Change data_dir in patroni.yml to/var/lib/postgresql/10/data/postgresql0

On starting patroni I am getting exception like below and also the DB is not accessible. 

2017-11-16 07:11:18,622 INFO: Connecting to localhost:2181
2017-11-16 07:11:18,624 INFO: Zookeeper connection established, state: CONNECTED
2017-11-16 07:11:19,132 INFO: Closing connection to localhost:2181
2017-11-16 07:11:19,132 INFO: Zookeeper session lost, state: CLOSED
2017-11-16 07:11:19,133 INFO: Connecting to localhost:2181
2017-11-16 07:11:19,135 INFO: Zookeeper connection established, state: CONNECTED
Traceback (most recent call last):
  File "/usr/local/bin/patroni", line 11, in <module>
    load_entry_point('patroni==1.0', 'console_scripts', 'patroni')()
  File "/usr/local/lib/python2.7/dist-packages/patroni/__init__.py", line 128, in main
    patroni.run()
  File "/usr/local/lib/python2.7/dist-packages/patroni/__init__.py", line 102, in run
    logger.info(self.ha.run_cycle())
  File "/usr/local/lib/python2.7/dist-packages/patroni/ha.py", line 502, in run_cycle
    return self._run_cycle()
  File "/usr/local/lib/python2.7/dist-packages/patroni/ha.py", line 470, in _run_cycle
    if self.sysid_valid(self.cluster.initialize) and self.cluster.initialize != self.state_handler.sysid:
  File "/usr/local/lib/python2.7/dist-packages/patroni/postgresql.py", line 257, in sysid
    data = ""
  File "/usr/local/lib/python2.7/dist-packages/patroni/postgresql.py", line 675, in controldata
    result = {l.split(':')[0].replace('Current ', '', 1): l.split(':')[1].strip() for l in data if l}
  File "/usr/local/lib/python2.7/dist-packages/patroni/postgresql.py", line 675, in <dictcomp>
    result = {l.split(':')[0].replace('Current ', '', 1): l.split(':')[1].strip() for l in data if l}
IndexError: list index out of range
~                                      
I was able to access the DB before starting patroni. So I think I missed something on patroni side.

I am not sure if this is the right forum to ask this question. If anyone has tried this please do let me know your thoughts.



--
Sent via pgsql-admin mailing list (pgsql-admin@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-admin


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux