223 views
asked in PostgreSQL by
Upgrade PostgreSQL 14 to PostgreSQL 16 Step by Step Process in Ubuntu 22.04 LTS

1 Answer

answered by

inchirags@gmail.com  Chirag’s PostgreSQL DBA Tutorial https://www.chirags.in

*********************************************************************************************

Upgrade PostgreSQL 14 to PostgreSQL 16 Step by Step Process in Ubuntu 22.04 LTS

***********************************************************************************************

------Install PostgreSQL on Ubuntu 22.04--------

Step 1 — Installing PostgreSQL

*************************************

To install PostgreSQL, first refresh your server’s local package index:

$ sudo apt update

Then, install the Postgres package along with a -contrib package that adds some additional utilities and functionality:

$ sudo apt install postgresql postgresql-contrib

Step 2 — Using PostgreSQL Roles and Databases

The installation procedure created a user account called postgres that is associated with the default Postgres role. There are a few ways to utilize this account to access Postgres. One way is to switch over to the postgres account on your server by running the following command:

$ sudo -i -u postgres

Then you can access the Postgres prompt by running:

$ psql

To exit out of the PostgreSQL prompt, run the following:

$ \q

Another way to connect to the Postgres prompt is to run the psql command as the postgres account directly with sudo:

$ sudo -u postgres psql

# check version of postgresql

$ SELECT version();

Output:

----------------------------------------------------------------------------------------------------------------------------------------

 PostgreSQL 14.13 (Ubuntu 14.13-0ubuntu0.22.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, 64-bit

(1 row)

postgres=# CREATE DATABASE mydatabase;

postgres=# \c mydatabase

mydatabase=# CREATE TABLE users (

    id SERIAL PRIMARY KEY,

    name VARCHAR(100),

    age INT

);

mydatabase=# INSERT INTO users (name, age) VALUES ('Chirag', 30);

INSERT INTO users (name, age) VALUES ('Sanju', 25);

mydatabase=# SELECT * FROM users;

Output:

id |  name  | age

----+--------+-----

  1 | Chirag |  30

  2 | Sanju   |  25

(2 rows)

mydatabase=# \q

Step 3 - To change the PostgreSQL user's password, follow these steps:

**********************************************************************

log in into the psql console:

root@dept:~# sudo -u postgres psql

Then in the psql console, change the password and quit:

postgres=# \password postgres

Enter new password: <new-password>

postgres=# \q

Or using a query:

ALTER USER postgres PASSWORD '<new-password>';

Or in one line

sudo -u postgres psql -c "ALTER USER postgres PASSWORD '<new-password>';"

Note:

If that does not work, reconfigure authentication by editing /etc/postgresql/<version>/main/pg_hba.conf (the path will differ) and change:

local     all         all             peer # change this to md5

to

local     all         all             md5 # like this

Then restart the server:

root@dept:~# sudo service postgresql restart

-----Now Upgrade PostgreSQL 14 to PostgreSQL 16 Effortlessly with pg_upgrade-------------

Step 1: Welcoming PostgreSQL 16

*******************************

Start by installing the shining star of our show, PostgreSQL 16. Let the magic unfold!

# Create the file repository configuration: Add the PostgreSQL 16 repository

root@dept:~# sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

# Import the repository signing key:

root@dept:~# curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg

# Update the package lists:

root@dept:~# sudo apt-get update

# Install the latest version of PostgreSQL.

# If you want a specific version, use 'postgresql-16' or similar instead of 'postgresql':

root@dept:~# sudo apt-get -y install postgresql-16

Step 2: Checking Your Database Clusters

*****************************************

Verify that your server now proudly hosts both PostgreSQL 14 and PostgreSQL 16 using the pg_lsclusters command.

root@dept:~# sudo pg_lsclusters

Output:

Ver Cluster Port Status Owner    Data directory              Log file

14  main    5432 online postgres /var/lib/postgresql/14/main /var/log/postgresql/postgresql-14-main.log

16  main    5433 online postgres /var/lib/postgresql/16/main /var/log/postgresql/postgresql-16-main.log

Step 3: Preparing for the Upgrade

*********************************

Stop the PostgreSQL 16 cluster to prepare for the upgrade.

root@dept:~# sudo pg_dropcluster 16 main --stop

root@dept:~# sudo pg_lsclusters

Output:

Ver Cluster Port Status Owner    Data directory              Log file

14  main    5432 online postgres /var/lib/postgresql/14/main /var/log/postgresql/postgresql-14-main.log

Step 4: Initiating the Upgrade Process

***************************************

Start the upgrade process by executing the following command:

sudo pg_upgradecluster 14 main

Output:

...................

...................

Success. Please check that the upgraded cluster works. If it does,

you can remove the old cluster with

    pg_dropcluster 14 main

Ver Cluster Port Status Owner    Data directory              Log file

14  main    5433 down   postgres /var/lib/postgresql/14/main /var/log/postgresql/postgresql-14-main.log

Ver Cluster Port Status Owner    Data directory              Log file

16  main    5432 online postgres /var/lib/postgresql/16/main /var/log/postgresql/postgresql-16-main.log

root@dept:~#

Monitor the process, and upon success, confidently remove the older version.

root@dept:~# sudo pg_dropcluster 14 main

Step 5: Final Touch — Removing the Old Package

**********************************************

Clean up the remnants of PostgreSQL 14 by purging the old package.

root@dept:~# sudo apt purge postgresql-14 postgresql-client-14

Step 6: Verification — Ensuring a Successful Upgrade

****************************************************

Double-check your current clusters to confirm the successful upgrade.

root@dept:~# sudo pg_lsclusters

Output:

Ver Cluster Port Status Owner    Data directory              Log file

16  main    5432 online postgres /var/lib/postgresql/16/main /var/log/postgresql/postgresql-16-main.log

Now you can login and test the previous database and tables in database.

$ sudo -u postgres psql

# check version of postgresql

$ SELECT version();

Output:

postgres=# \c mydatabase

mydatabase=# SELECT * FROM users;

Output:

id |  name  | age

----+--------+-----

  1 | Chirag |  30

  2 | Sanju   |  25

(2 rows)

mydatabase=# \q

Note : Flow the Process shown in video.

Subscribe and like for more videos:

https://www.youtube.com/channel/UCLdaO4-i_gxQMi87JwjKOwA

Don't forget to, Follow, Like,  Share &, Comment

Tutorial Link :

https://www.chirags.in/tutorials/PostgreSQL_Database

Thanks & Regards,

Chitt Ranjan Mahto "Chirag"

____________________________________________________________________

Note: All scripts used in this demo will be available in our website.

Link will be available in description.

...