PostgreSQL: How to Upgrade temBoard Version 7.6 to 7.7

Dalibo released today a new temBoard bugfixing release with some minor adjustments. The main scope of this release, is to make temBoard Python 3 and CentOS 8 ready. You might will notice the that a package called python future will be installed along with temBoard 7.7. (python2-future-0.18.2-2.el7.noarch). Python future is the missing compatibility layer between Python 2 and Python 3. It allows you to use a single, clean Python 3.x-compatible codebase to support both Python 2 and Python 3 with minimal overhead. It case you want to learn more about the python future project, take a look a the following website: http://python-future.org/

The new verions are temBoard version 7.7 and temBoard agent version 7.7.

The latest version for Red Hat/CentOS 7.x can be found here: https://yum.dalibo.org/labs/CentOS7-x86_64/

temboard-7.7-1.el7.noarch.rpm
temboard-agent-7.7-1.el7.noarch.rpm

Fortunately, the upgrade from 7.6 to 7.7 is quite simply. In general, you need only to stop the service, upgrade the rpm package, and start the service again.

$ sudo systemctl stop temboard.service
$ sudo systemctl stop temboard-agent@12-pg58888.service
$ sudo systemctl reset-failed
$ sudo systemctl is-system-running

$ cd /var/log/temboard/
$ sudo mv temboard.log temboard.log.before_upgrade_to_7.7

$ cd /app/lib/postgres/pgproduct/stage/temboard/7/
$ sudo yum localupdate temboard-7.7-1.el7.noarch.rpm
$ sudo yum localupdate temboard-agent-7.7-1.el7.noarch.rpm

Upgrade the temBoard (UI) from 7.6 to 7.7

$ sudo yum localupdate temboard-7.7-1.el7.noarch.rpm
Loaded plugins: enabled_repos_upload, langpacks, package_upload, product-id, search-disabled-repos, subscription-manager
Examining temboard-7.7-1.el7.noarch.rpm: temboard-7.7-1.el7.noarch
Marking temboard-7.7-1.el7.noarch.rpm as an update to temboard-7.6-1.el7.noarch
Resolving Dependencies
--> Running transaction check
---> Package temboard.noarch 0:7.6-1.el7 will be updated
---> Package temboard.noarch 0:7.7-1.el7 will be an update
--> Processing Dependency: python-future for package: temboard-7.7-1.el7.noarch
epel/x86_64/metalink                                                                                                                                   |  31 kB  00:00:00
epel                                                                                                                                                   | 4.7 kB  00:00:00
rhel-7-server-extras-rpms                                                                                                                              | 2.0 kB  00:00:00
rhel-7-server-optional-rpms                                                                                                                            | 2.0 kB  00:00:00
rhel-7-server-rh-common-rpms                                                                                                                           | 2.1 kB  00:00:00
rhel-7-server-rpms                                                                                                                                     | 2.0 kB  00:00:00
rhel-7-server-satellite-tools-6.8-rpms                                                                                                                 | 2.1 kB  00:00:00
rhel-7-server-supplementary-rpms                                                                                                                       | 2.3 kB  00:00:00
rhel-server-rhscl-7-rpms                                                                                                                               | 2.3 kB  00:00:00
(1/2): epel/x86_64/updateinfo                                                                                                                          | 1.0 MB  00:00:00
(2/2): epel/x86_64/primary_db                                                                                                                          | 6.9 MB  00:00:00
--> Running transaction check
---> Package python2-future.noarch 0:0.18.2-2.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==============================================================================================================================================================================
 Package                                  Arch                             Version                                 Repository                                            Size
==============================================================================================================================================================================
Updating:
 temboard                                 noarch                           7.7-1.el7                               /temboard-7.7-1.el7.noarch                           3.9 M
Installing for dependencies:
 python2-future                           noarch                           0.18.2-2.el7                            epel                                                 806 k

Transaction Summary
==============================================================================================================================================================================
Install             ( 1 Dependent package)
Upgrade  1 Package

Total size: 4.7 M
Total download size: 806 k
Is this ok [y/d/N]: y
Downloading packages:
python2-future-0.18.2-2.el7.noarch.rpm                                                                                                                 | 806 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : python2-future-0.18.2-2.el7.noarch                                                                                                                         1/3
  Updating   : temboard-7.7-1.el7.noarch                                                                                                                                  2/3
  Cleanup    : temboard-7.6-1.el7.noarch                                                                                                                                  3/3
Uploading Package Profile
Loaded plugins: langpacks, product-id, subscription-manager
  Verifying  : temboard-7.7-1.el7.noarch                                                                                                                                  1/3
  Verifying  : python2-future-0.18.2-2.el7.noarch                                                                                                                         2/3
  Verifying  : temboard-7.6-1.el7.noarch                                                                                                                                  3/3

Dependency Installed:
  python2-future.noarch 0:0.18.2-2.el7

Updated:
  temboard.noarch 0:7.7-1.el7

Complete!
Uploading Enabled Repositories Report
Loaded plugins: langpacks, product-id, subscription-manager


Upgrade the temBoard agent from 7.6 to 7.7.


$ sudo yum localupdate temboard-agent-7.7-1.el7.noarch.rpm
Loaded plugins: enabled_repos_upload, langpacks, package_upload, product-id, search-disabled-repos, subscription-manager
Examining temboard-agent-7.7-1.el7.noarch.rpm: temboard-agent-7.7-1.el7.noarch
Marking temboard-agent-7.7-1.el7.noarch.rpm as an update to temboard-agent-7.6-1.el7.noarch
Resolving Dependencies
--> Running transaction check
---> Package temboard-agent.noarch 0:7.6-1.el7 will be updated
---> Package temboard-agent.noarch 0:7.7-1.el7 will be an update
--> Finished Dependency Resolution
rhel-7-server-extras-rpms/x86_64                                                                                                                       | 2.0 kB  00:00:00
rhel-7-server-optional-rpms/x86_64                                                                                                                     | 2.0 kB  00:00:00
rhel-7-server-rh-common-rpms/x86_64                                                                                                                    | 2.1 kB  00:00:00
rhel-7-server-rpms/x86_64                                                                                                                              | 2.0 kB  00:00:00
rhel-7-server-satellite-tools-6.8-rpms/x86_64                                                                                                          | 2.1 kB  00:00:00
rhel-7-server-supplementary-rpms/x86_64                                                                                                                | 2.3 kB  00:00:00
rhel-server-rhscl-7-rpms/x86_64                                                                                                                        | 2.3 kB  00:00:00

Dependencies Resolved

==============================================================================================================================================================================
 Package                                 Arch                            Version                              Repository                                                 Size
==============================================================================================================================================================================
Updating:
 temboard-agent                          noarch                          7.7-1.el7                            /temboard-agent-7.7-1.el7.noarch                          945 k

Transaction Summary
==============================================================================================================================================================================
Upgrade  1 Package

Total size: 945 k
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : temboard-agent-7.7-1.el7.noarch                                                                                                                            1/2
No units found for temboard-agent.
Too few arguments.
  Cleanup    : temboard-agent-7.6-1.el7.noarch                                                                                                                            2/2
Uploading Package Profile
Loaded plugins: langpacks, product-id, subscription-manager
  Verifying  : temboard-agent-7.7-1.el7.noarch                                                                                                                            1/2
  Verifying  : temboard-agent-7.6-1.el7.noarch                                                                                                                            2/2

Updated:
  temboard-agent.noarch 0:7.7-1.el7

Complete!
Uploading Enabled Repositories Report
Loaded plugins: langpacks, product-id, subscription-manager

Now run the database upgrade as the temboard OS user.

$ su - temboard

$ temboard-migratedb upgrade
 INFO: Starting temboard-migratedb 7.7.
 INFO: Found config file /etc/temboard/temboard.conf.
 INFO: Context impl PostgresqlImpl.
 INFO: Will assume transactional DDL.
 INFO: Running upgrade d2120f410bb5 -> 9fe3bfb83329, Grant privileges on statements objects
 INFO: Database up to date.

I usually adjust the temboard service as well with the nice value of -19. (Nice=-19). This is an optional step and not mandatory. I do it only to give the temBoard service the highest CPU priority.

$ cd /etc/systemd/system/multi-user.target.wants/
$ sudo vi temboard.service

$ cat temboard.service
[Unit]
Description=temBoard Web UI
After=network.target

[Service]
Type=simple
User=temboard
Group=temboard
ExecStart=/usr/bin/env SYSTEMD=1 temboard -c /etc/temboard/temboard.conf
Nice=-19

[Install]
WantedBy=multi-user.target

Startup the temBoard UI and the agent.

$ sudo systemctl daemon-reload

$ sudo systemctl start temboard.service
$ sudo systemctl start temboard-agent@12-pg58888.service

Check if the services are running correctly.

$ sudo systemctl status temboard.service
● temboard.service - temBoard Web UI
   Loaded: loaded (/usr/lib/systemd/system/temboard.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/temboard.service.d
           └─override.conf
   Active: active (running) since Tue 2021-06-01 14:41:46 CEST; 23s ago
 Main PID: 5334 (temboard)
   CGroup: /system.slice/temboard.service
           ├─5334 temboard: web
           ├─5348 temboard: worker pool
           ├─5349 temboard: scheduler
           ├─5362 temboard: worker pool
           ├─5917 temboard: worker pool
           ├─5928 temboard: worker pool
           ├─5937 temboard: worker pool


$ sudo systemctl status temboard-agent@12-pg58888.service
● temboard-agent@12-pg58888.service - PostgreSQL Remote Control Agent 12/pg58888
   Loaded: loaded (/usr/lib/systemd/system/temboard-agent@.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2021-06-01 14:42:55 CEST; 16s ago
 Main PID: 6971 (temboard-agent)
   CGroup: /system.slice/system-temboard\x2dagent.slice/temboard-agent@12-pg58888.service
           ├─6971 temboard-agent: 12/pg58888: main process
           ├─7006 temboard-agent: 12/pg58888: worker pool
           └─7007 temboard-agent: 12/pg58888: scheduler

Ready. 🙂

Conclusion

The temBoard 7.7 is a quite small bug fixing release which makes temBoard ready for Python 3 and CentOS 8 (which comes with Python 3 per default).