Install Fedora 36 Xfce Desktop

This article will show the simple steps of installing a modern Linux Distribution like Fedora 36 Xfce Desktop with Xfce for the user graphical interface – one of the alternatives, which tries to break the domination of Gnome and partly KDE Plasma. First, it is offered the basic steps for installing the Operating system and then there are some screenshots of the installed system and the look and feel of it. Here is another article available with more screenshots of the installed and working Fedora 36 Xfce DesktopReview of freshly installed Fedora 36 Xcfe Desktop.
Xfce offers fast, easy and lightweight graphical environment for Linux systems and Fedora teams brings it out-of-the-box with their spins projects – Fedora Xfce Spin
This is the simplest set up. One hard disk device in the system is installed, which is detected as sda and the entire disk will be used for the installation of Fedora 36 Xfce Desktop. All disk information in sda disk device will be permanently deleted by the installation wizard!

The Fedora 36 Xfce Desktop comes with:

  • Xorg X server – 1.20.14 XWayland is used by default
  • linux kernel – 5.17.5
  • Xfce: 4.16, which is the latest stable as of the official Xfce site.

For more packages versions information check out the Fedora 36 server articles – Software and technical details of Fedora Server 36 including cockpit screenshots and Software comparison Ubuntu server 22.04 LTS vs Fedora 36 server edition – head-to-head.

We used the following ISO for the installation process:
It is a LIVE image so you can try it before installing it. The easiest way is just to download the image and burn it to a DVD disk or USB stick and then follow the installation below:

SCREENSHOT 1) Boot from the UEFI DVD-ROM device.

It is the same with the USB bootable removable drive. Choose the UEFI USB drive and boot the installation live drive.

main menu

Keep on reading!

Install or reinstall CentOS Stream 9 grub 2 under UEFI system

Under CentOS Stream 9 the grub2-install tool cannot install the bootloader manager Grub 2 when using UEFI-based systems. In fact, the grub2-install command installs only the old legacy mode Grub 2.
The grub2-mkconfig generates the Grub configuration file and adds an UEFI entry in the UEFI enabled BIOS of the systems. The grub2-mkconfig adds a boot entry with path to the /boot/efi/EFI/centos/shimx64.efi, which is a small and simple program to start the Grub 2 program grubx64.efi in the same directory. All this method is because of the UEFI Secure Boot support. Using the previous method it was not possible to support UEFI Secure Boot though it was possible to boot in UEFI mode.
There are some considerations to take in mind when using this new version of Grub 2:

  • grub2-mkconfig has two functions – generates the grub.cfg AND adds boot entry in the UEFI BIOS!
  • The efi partition with this file may not be the first partition.
  • It is an ordinary partition, i.e. it is not mandatory to be of ESP type.
  • The system CANNOT boot without a boot entry in the UEFI BIOS.
  • Booting in UEFI mode only by pointing the disk in the BIOS (or in the boot manager) may not occur. No auto detection and there is no boot program installed in the first sectors of the disk or what so ever. Even, the default install of CentOS Stream 9 creates the efi disk as second partition and without ESP flag enabled.
  • Grub 2 uses /boot/efi/EFI/centos/grub.cfg and this file should hold the latest output of grub2-mkconfig for successful booting after installation.
  • Some dedicated servers’ providers forbid any modification or changes to the server’s BIOS (even with UEFI BIOS), so those servers cannot boot in UEFI mode with the newer Grub 2 versions. Install the legacy mode Grub 2 with bios_grub flag partition and grub2-install.
  • Now, Grub 2 with this method supports UEFI Secure Boot.
  • Use grubby command to select the default kernel. More information here – removing the default kernel in CentOS 8 – remove elrepo kernel

More information might be available here – and

Note: The CentOS Stream 8 also have this new Grub 2 version, which supports only this kind of Grub 2 installation. So the procedure may be the same for CentOS Stream 8.

Grub 2 installation under CentOS Stream 9 and UEFI mode.

[root@srv ~]# grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
Generating grub configuration file ...
Adding boot menu entry for UEFI Firmware Settings ...

The above command will recreate the grub.cfg with the proper kernels and kernel command-line arguments from /etc/default/grub and it will add a boot entry in the UEFI BIOS pointing to the “(partition,file-system-UUID)/EFI/centos/shimx64.efi“.
No grub2-install is needed to install the bootloader program anywhere in the first sectors of disk!

SCREENSHOT 1) The grub2-mkconfig tool will add this boot entry with name “CentOS Linux” with the full path to bootloader program shimx64.efi.

The full path is HD(1,GPT, C31EFB93-690C-4137-B589-0A962BE4B960,0x800,0x11D800)/EFI/centos/shimx64.efi. Most UEFI BIOS setups allow the user to add manually this entry by browsing to the file when adding boot entry.

main menu
BIOS boot entry and shimx64

Keep on reading!

Install and use collectd under CentOS Stream 9 using OpsTools

collectd is a daemon, which collects system data and statistics and it may send them over the network to a back-end data. Under CentOS Stream 9 the collectd package has been removed from the CentOS Stream 9 repositories. Special Interest Groups (SIG), which is a group of CentOS Community, provides and supports multiple small repositories for different Linux utilities and tools. One of the SIG‘s repositories is OpsTools, which provides a package for collectd daemon and multiple collectd modules packed in separate packages.

To use collectd under CentOS Stream 9 a CentOS Community repository should be installed – OpsTools.

Steps to install and use the collectd daemon:

dnf install -y centos-release-opstools
dnf install -y collectd

It’s worth noting that all the Linux distribution, which tries to track and be compatible with Red Hat Enterprise Linux like Rocky Linux will have the same problem with missing collectd package. So the SIG OpsTools repository should be also possible to install under all of these Linux distributions.

Here is the output of installing the above packages under CentOS Stream 9:

[root@srv ~]# dnf install -y centos-release-opstools
Last metadata expiration check: 0:00:23 ago on Wed 22 Jun 2022 02:05:19 PM UTC.
Dependencies resolved.
 Package                       Architecture Version         Repository           Size
 centos-release-opstools       noarch       1-12.el9s       extras-common       8.4 k

Transaction Summary
Install  1 Package

Total download size: 8.4 k
Installed size: 1.7 k
Downloading Packages:
centos-release-opstools-1-12.el9s.noarch.rpm           62 kB/s | 8.4 kB     00:00    
Total                                                  22 kB/s | 8.4 kB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                              1/1 
  Installing       : centos-release-opstools-1-12.el9s.noarch                     1/1 
  Verifying        : centos-release-opstools-1-12.el9s.noarch                     1/1 


[root@srv ~]# dnf install -y collectd
CentOS Stream 9 - OpsTools - collectd                  12 kB/s |  41 kB     00:03    
Dependencies resolved.
 Package          Architecture   Version                Repository               Size
 collectd         x86_64         5.12.0-7.el9s          centos-opstools         673 k
Installing dependencies:
 yajl             x86_64         2.1.0-20.el9           appstream                38 k

Transaction Summary
Install  2 Packages

Total download size: 711 k
Installed size: 2.2 M
Downloading Packages:
(1/2): yajl-2.1.0-20.el9.x86_64.rpm                   179 kB/s |  38 kB     00:00    
(2/2): collectd-5.12.0-7.el9s.x86_64.rpm              1.1 MB/s | 673 kB     00:00    
Total                                                 594 kB/s | 711 kB     00:01     
CentOS Stream 9 - OpsTools - collectd                 1.0 MB/s | 1.0 kB     00:00    
Importing GPG key 0x51BC2A13:
 Userid     : "CentOS OpsTools SIG ( <>"
 Fingerprint: 7872 8176 9AD7 3878 85EE A649 4FD9 5327 51BC 2A13
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-OpsTools
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                              1/1 
  Installing       : yajl-2.1.0-20.el9.x86_64                                     1/2 
  Installing       : collectd-5.12.0-7.el9s.x86_64                                2/2 
  Running scriptlet: collectd-5.12.0-7.el9s.x86_64                                2/2 
  Verifying        : collectd-5.12.0-7.el9s.x86_64                                1/2 
  Verifying        : yajl-2.1.0-20.el9.x86_64                                     2/2 

  collectd-5.12.0-7.el9s.x86_64                yajl-2.1.0-20.el9.x86_64               


collectd default configuration

The default configuration comments all the lines in /etc/collectd.conf except one, which includes all the files under /etc/collectd.d/. So the logic is to have a separate file for each collectd plugin. By default, there are 5 default configuration files activating 5 plugins:
Keep on reading!

Software comparison Ubuntu server 22.04 LTS vs CentOS Stream 9 head-to-head

The following article compares two different and very popular for servers Linux distros with Ubuntu Server 22.04 LTS (Jammy) and CentOS Stream 9. These are the latest versions released in the past month. Bear in mind, that they have different release cycle, but the these are the system with log support up to 2032! The two Linux distors Ubuntu Server 22.04 LTS (Jammy) and CentOS Stream 9 support is till 2032! Here is the links to their life cycle and what kind of support could be expected in the time frame of 10 years:

In the Desktop world upgrading to the new and latest version of a Linux distribution is almost mandatory, but in the server world, upgrading is more complicated. The first step in updating a server is to check what software versions come with the new distribution version and then check whether the running custom (application) software supports the software versions. For example, updating to a new distribution version, which comes with PHP 8.1, but the current application supports only 7.4 is not very wise and in addition, the current version may have years of support in the future.

Lately, with the virtualization and container software and it is more common to choose a long-living Linux distribution for the host and more short-living with bleeding edge technologies for the guest environments. So check out the Fedora 36 Server Edition articles in the site – Minimal network installation of Fedora 36 Server, Software and technical details of Fedora Server 36 including cockpit screenshots and the comparison software table between Ubuntu 22.04 LTS and Fedora 36 Server EditionSoftware comparison Ubuntu server 22.04 LTS vs Fedora 36 server edition – head-to-head.

Software comparison table – Ubuntu 22.06 LTS vs CentOS Stream 9 (20220606.0) as of June 2022:

SoftwareUbuntu 22.04CentOS Stream 9
Support10 years (April 2032)10 years (31.03.2032)
Linux kernel5.
GNU GCC9.4.0
Go lang1.13.8
MySQL server8.
Xorg X server1.
Gnome Shell42.040.10

For more detailed overview the two systems check out the following articles – Software and technical overview of Ubuntu server 22.04 LTS and Software and technical details of CentOS Stream 9 minimal install.

Copy of the Life cycle plans of Ubuntu server 22.04 and CentOS Stream 9 (Red Hat Enterprise Linux 9) of the official sources only for time-freeze feature:

Ubuntu 22.04 LTS
CentOS Stream 9 (RHEL 9)

Software and technical details of CentOS Stream 9 minimal install

This article is for those of you who do not want to install a whole new operating system only to discover some technical details about the default installation like disk layout, packages included, software versions, and so on. Here we are going to review in several sections what is like to have a default installation of CentOS Stream 9 using a real not virtual machine!
Here are some useful URLs:

How to install CentOS Stream 9Network installation of CentOS Stream 9 (20220606.0) – minimal server installation
The kernel is 5.14.0 it detects successfully the Threadripper 1950X AMD and the system is stable (we booted in UEFI mode).
The installation procedure uses default options for all installation setups – Network installation of CentOS Stream 9 (20220606.0) – minimal server installation


With CentOS Stream 9 (20220606.0) you could have

  • linux kernel – 5.14.0 (5.14.0-109.el9.x86_64)
  • System
    • linux-firmware – version: 20220509, release: 20220509-126.el9.
    • libc – 2.34 (2.34-32.el9)
    • systemd – 250-7 (250-7.el9)
    • GNU GCC – 11.3.1 (gcc-11.3.1-2.el9)
    • OpenSSL – 3.0.1 (3.0.1-33.el9) and 1.1.1k (compat-openssl11-1.1.1k-4.el9)
    • coreutils – 8.32 (8.32-31.el9)
    • yum – deprecated and replaced with dnf
    • dnf – 4.12.0 (4.12.0-2.el9)
    • rsyslog – 8.2102.0 (8.2102.0-105.el9)
    • NetworkManager – 1.39.6 (1:1.39.6-1.el9)
  • Servers
    • Apache – 2.4.53 (2.4.53-2.el9)
    • Nginx – 1.20.1 (1.20.1-10.el9)
    • MySQL server – 8.0.28 (8.0.28-1.el9)
    • MariaDB server – 10.5.13 (10.5.13-2.el9)
    • PostgreSQL – 13.7 (13.7-1.el9)
  • Programming
    • PHP – 8.0.13 (8.0.13-1.el9)
    • python – 3.9.10 (3.9.10-2.el9)
    • perl – 5.32.1 (5.32.1-479.el9)
    • ruby – 3.0.3 (3.0.3-159.el9)
    • OpenJDK – (, ( and (
    • Go – 1.17.5 (1.17.5-1.el9)
    • Rust – 1.61.0 (1.61.0-1.el9)
    • llvm – 14.0.0 (14.0.0-2.el9)
    • Subversion – 1.14.1 (1.14.1-5.el9)
    • Git – 2.31.1 (2.31.1-2.el9.2)

Note: Not all of the above software comes installed by default. The versions above are valid as of June 2022, these are the minimal versions you get with CentOS Stream 9 (20220606.0) now and updating it after the initial date may update some of the above packages with newer versions.

Installed packages are 376 occupying 1.6G space:. Note, this is CentOS Stream 9 Minimal Install, not server or server with GUI.

[root@srv ~]# dnf list installed|wc -l
[root@srv ~]# df -h /
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/cs_srv-root   70G  1.6G   69G   3% /

Keep on reading!

Network installation of CentOS Stream 9 (20220606.0) – minimal server installation

Minimal net install is useful when a dedicated server is installed from a IPMI KVM or Dell iDRAC, HP iLO, IBM IMM or where the initial client side download of files need to be minimal.
CentOS Stream 9 is receives the updates before Red Hat Enterprise Linux (RHEL) and there is no versioning except the major release, which is 9. So the CentOS Stream 9 receives the updates for Red Hat Enterprise Linux (RHEL) 9. On monthly or less basis CentOS community releases a stable ISO with a temporary time version like this one CentOS Stream 9 (20220606.0).

Continuously delivered distro that tracks just ahead of Red Hat Enterprise Linux (RHEL) development

Here are some useful URLs:

For amd64 the net of CentOS Stream 9 install bootable media is located here (now the current latest release is 20220606.0, but you may check the last release. for the time you follow this howto):

Note there is no minimal CD for offline installation. Boot CD is to just boot and make “network installation” installation and there is a big fat DVD of 8.1 Gbytes to install offline.

Software details of CentOS Stream 9 minimal install could be found here – coming soon. Technical details of a default CentOS Stream 9 (20220606.0) minimal installation
There is a previous major release installation article – How to do a network installation of CentOS 8 (8.0.1950) – minimal server installation

Download it and put it on a CD or USB, the boot from it and follow the steps bellow:

SCREENSHOT 1) If you booted from the DVD you would get this first screen – select “Install CentOS Stream 9” and hit Enter

main menu
Start installation

Keep on reading!

Review of freshly installed Fedora 36 KDE Plasma Desktop (KDE GUI)

After the tutorial of how to install Fedora 36 KDE Plasma Desktop this tutorial is mainly to see what to expect from a freshly installed Fedora 36 KDE Plasma Desktop – the look and feel of the new KDE GUI (version 5.24.3 of KDE Plasma). The Fedora 36 KDE Plasma Desktop is part of Fedora spins –
Here you can find how to Install Fedora 36 KDE Plasma Desktop (KDE GUI). Here it worth mentioning the included versions of KDE software for Fedora 36:

  • KDE Plasma version: 5.24.3
  • KDE Frameworks version: 5.91.0
  • QT version: 5.15.3

The idea of this article is just to see what to expect from Fedora 36 KDE Plasma – the look and feel of the GUI, the default installed programs and their look and how to do some basic steps with them, it is included also screenshots of the KDE settings program. Here you’ll find more than 200 screenshots and not so many texts we do not want to turn this review of many texts and version information and 3 meaningless screenshots, which you could not see anything for the user interface because these days it is the primary goal of a Desktop system. You can expect more of this kind of review in the future.
This article is the first part of reviewing the Fedora 36 KDE Plasma. The second article contains KDE System Settings screenshots and it is coming soon.

Summary of the screenshots

  • Logging
  • KDE Plasma Overview with Panel Toolbox
  • Fedora KDE main menu
  • Plasma Widgets
  • Activities
  • Install/Update applications with Discover
  • Install applications with dnfdragora
  • review of multiple installed GUI applications and games.
  • Dolphin – the KDE File Manager

Fedora 36 KDE Plasma screenshots

SCREENSHOT 1) Fedora (5.17.5-300.fc36.x86_64) 36 (KDE Plasma)

main menu
grub entry boot

Keep on reading!

Building python 3.10.4 and possibly undefined macro: AC_MSG_ERROR

Emerging the new python 3.10 in Gentoo may lead to the following error, despite all the dependencies installed. This error might also occur in any other Linux distro! During the configure stage the autoconf tool outputs error:

root@srv ~ # cat /var/tmp/portage/dev-lang/python-3.10.5/temp/autoconf.out 
***** autoconf *****
***** PWD: /var/tmp/portage/dev-lang/python-3.10.5/work/Python-3.10.5
***** autoconf --force warning: The macro `AC_CONFIG_HEADER' is obsolete. You should run autoupdate.
./lib/autoconf/status.m4:719: AC_CONFIG_HEADER is expanded from... the top level warning: AC_LINK_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS
./lib/autoconf/specific.m4:364: AC_USE_SYSTEM_EXTENSIONS is expanded from... the top level warning: The macro `AC_HEADER_STDC' is obsolete. You should run autoupdate.
./lib/autoconf/headers.m4:704: AC_HEADER_STDC is expanded from... the top level warning: The macro `AC_HEADER_TIME' is obsolete. You should run autoupdate.
./lib/autoconf/headers.m4:743: AC_HEADER_TIME is expanded from... the top level error: possibly undefined macro: AC_MSG_ERROR
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation

It appears a dependency is missing! First, build the package sys-devel/autoconf-archive and then the building of python-3.10.5 will finish successfully.

root@srv ~ # emerge -va autoconf-archive

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N     ] sys-devel/autoconf-archive-2022.02.11::gentoo  660 KiB

Total: 1 package (1 new), Size of downloads: 660 KiB

Would you like to merge these packages? [Yes/No] yes

Emerging the dev-lang/python-3.10.5::gentoo outputs the error and the building process stops. The error output in emerge command is so informative. The actual error is in the /var/tmp/portage/dev-lang/python-3.10.5/temp/autoconf.out.
Keep on reading!

Migrate emails from GMail to another IMAP server with imapsync

It appears pretty easy to migrate an existing GMail account to another IMAP server, i.e. not GMail/Google server. There is an excellent synchronization tool – imapsync, which checks and downloads all the mails of an user account from one IMAP server to another IMAP server per user. The tool supports Google’s GMail accounts and their specific naming including the labels folders peculiarity (some folders in GMail may not have any physical emails, but just to show emails from another folders with specific labels). It’s worth mentioning that the imapsync works only only with GMail accounts, but it can be used to migrate from one IMAP server to another IMAP. The key here is the source and the destination server should support IMAP protocol.

Imapsync is an IMAP transfer tool. The purpose of imapsync is to migrate IMAP accounts or to backup IMAP accounts.

GMail will expose the labels as folders and in some early versions of the imapsync tool the emails with multiple labels may be shown in multiple folders and be duplicated. The version used here did not duplicate any email, even some emails were shown in multiple GMail folders.

There are two GMail settings to enable before proceeding with the migration:

  1. Enable “Less secure app access” or if 2-Step-Verification is enabled use App Passwords
  2. Enable IMAP, which is disabled by default.

SCREENSHOT 1) Manage the current Google account options by clicking on the top right corner as shown in the screenshot.

main menu
manage google account

Keep on reading!

Recovery of MySQL 8 Cluster instance after server crash and corrupted data in log event

There is a MySQL 8 Cluster InnoDB of three servers and one of the server crashed with a bad RAM. The same setup is described here – Install and deploy MySQL 8 InnoDB Cluster with 3 nodes under CentOS 8 and MySQL Router for HA. The failed server got restarted without clean shutdown and after booting up the MySQL Cluster node tried to recover automatically, but the recover process failed and the node left the group of the three server:

2022-05-31T04:00:00.322469Z 24 [ERROR] [MY-011620] [Repl] Plugin group_replication reported: 'Fatal error during the incremental recovery process of Group Replication. The server will leave the group.'
2022-05-31T04:00:00.322489Z 24 [Warning] [MY-011645] [Repl] Plugin group_replication reported: 'Skipping leave operation: concurrent attempt to leave the group is on-going.'
2022-05-31T04:00:00.322500Z 24 [ERROR] [MY-011712] [Repl] Plugin group_replication reported: 'The server was automatically set into read only mode after an error was detected.'
2022-05-31T04:00:03.448475Z 0 [System] [MY-011504] [Repl] Plugin group_replication reported: 'Group membership changed: This member has left the group.'

The recovery process proposed here follows these steps

  1. Connect with mysqlsh (MySQL Shell) to a MySQL instance, which is currently a part of the cluster group. The member, which left the group is not part any more, though the MySQL Cluster status shows it is part of the cluster topology, but with error.
  2. Remove the bad instance from the MySQL Cluster with removeInstance
  3. Add the instance with addInstance and the recovery process will kick in. The type of the recovery process will be chosen by the setup if not specified. In this case, the setup chooses the Incremental state recovery over (full) clone mode.
  4. Initiate the cluster rescan operation to recovery the group replication and the MySQL Cluster.


Summery of the recovery process

  • The recovery process was successful.
  • The distributed recovery with Incremental state recovery has finished for 24 hours for 200Mbyte database, which is really strange and the speed was really bad. The instance uses ordinary disks, not SSDs and a 1Gbps network.
  • No need to change or manage the MySQL Router in any of the steps or the recovery stages. It handled the situation from the very beginning by removing the bad instance and then adding it again only after the recovery process had finished successfully.
  • MySQL Shell should be connected to an healthy instance currently a part of the Cluster.

In the console output logs all commands and important lines are highlighted.

STEP 1) Remove the bad instance from the cluster.

The status of the cluster with the bad instance.

[root@db-cluster-3 ~]# mysqlsh
MySQL Shell 8.0.28

Copyright (c) 2016, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.

Type '\help' or '\?' for help; '\quit' to exit.
 MySQL  JS > \connect clusteradmin@db-cluster-1
Creating a session to 'clusteradmin@db-cluster-1'
Fetching schema names for autocompletion... Press ^C to stop.
Closing old connection...
Your MySQL connection id is 39806649 (X protocol)
Server version: 8.0.28 MySQL Community Server - GPL
No default schema selected; type \use <schema> to set one.
 MySQL  db-cluster-1:33060+ ssl  JS > var cluster = dba.getCluster()
 MySQL  db-cluster-1:33060+ ssl  JS > cluster.status()
    "clusterName": "mycluster1", 
    "defaultReplicaSet": {
        "name": "default", 
        "primary": "db-cluster-1:3306", 
        "ssl": "REQUIRED", 
        "status": "OK_NO_TOLERANCE", 
        "statusText": "Cluster is NOT tolerant to any failures. 1 member is not active.", 
        "topology": {
            "db-cluster-1:3306": {
                "address": "db-cluster-1:3306", 
                "memberRole": "PRIMARY", 
                "mode": "R/W", 
                "readReplicas": {}, 
                "replicationLag": null, 
                "role": "HA", 
                "status": "ONLINE", 
                "version": "8.0.28"
            "db-cluster-2:3306": {
                "address": "db-cluster-2:3306", 
                "memberRole": "SECONDARY", 
                "mode": "R/O", 
                "readReplicas": {}, 
                "replicationLag": null, 
                "role": "HA", 
                "status": "ONLINE", 
                "version": "8.0.28"
            "db-cluster-3:3306": {
                "address": "db-cluster-3:3306", 
                "instanceErrors": [
                    "ERROR: group_replication has stopped with an error."
                "memberRole": "SECONDARY", 
                "memberState": "ERROR", 
                "mode": "R/O", 
                "readReplicas": {}, 
                "role": "HA", 
                "status": "(MISSING)", 
                "version": "8.0.28"
        "topologyMode": "Single-Primary"
    "groupInformationSourceMember": "db-cluster-1:3306"

Keep on reading!