cPanel MySQL 8.0.38 does not start (Segmentation Fault)

MySQL has released an update MySQL 8.0.38 recently. After apply recent updates, MySQL may fail to start on your cPanel with following error:

2024-06-30T20:01:02.824793Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-06-30T20:01:04.845922Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-06-30T20:01:06Z UTC - mysqld got signal 11 ;
Most likely, you have hit a bug, but this error can also be caused by malfunctioning hardware.

Thread pointer: 0x0
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...

As per cPanel is in an issue from upstream with this version. However it may not affect all servers and you may see successful updates on some of your servers.

If you are affected by this MySQL 8.0.38 updates, there is a workaround available to resolve this as follow.

Workaround

RHEL-based servers (RHEL, CloudLinux, AlmaLinux, RockyLinux, CentOS):

Downgrade to the previous subversion of MySQL 8:

yum downgrade mysql-community-*

To avoid nightly updates again, you can temporary lock the version using versionlock utility as follow:

Version Lock RPM packages:

CentOS 7:

yum install yum-versionlock

CentOS 7 went End of Life on June 30th 2024. If you run into an issue installing yum-versionlock due to the repository being archived, you can install the version lock RPM from the CentOS vault.

yum install https://vault.centos.org/7.9.2009/os/x86_64/Packages/yum-plugin-versionlock-1.1.31-54.el7_8.noarch.rpm

AlmaLinux, Rocky Linux, CloudLinux 8+:

dnf install python3-dnf-plugin-versionlock

You can version lock the MySQL packages by running the following command:

yum versionlock mysql-community-*

We advise removing the lock once the upstream issue is resolved so that you can get the continuous updates and security patches.

Ubuntu servers:

There is no method to downgrade the MySQL packages natively via the “apt” command, so the packages will need to be downgraded manually via the packages from the MySQL archive.

1. Login as the root user, and create a new “mysqldown” directory in the root folder; change into this directory:

mkdir -v /root/mysqldown && cd /root/mysqldown

2. Download the following archive for the 8.0.37 version of MySQL.

Ubuntu 20.04:

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-server_8.0.37-1ubuntu20.04_amd64.deb-bundle.tar

Ubuntu 22.04:

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-server_8.0.37-1ubuntu22.04_amd64.deb-bundle.tar

3. Extract this archive.

Ubuntu 20.04:

tar xvf mysql-server_8.0.37-1ubuntu20.04_amd64.deb-bundle.tar

Ubuntu 22.04:

tar xvf mysql-server_8.0.37-1ubuntu22.04_amd64.deb-bundle.tar

4. Remove the following packages from the current directory. The server does not require these, nor does it have the necessary dependencies.

Ubuntu 20.04:

rm -rvf ./mysql-community-test-debug_8.0.37-1ubuntu20.04_amd64.deb ./mysql-community-test_8.0.37-1ubuntu20.04_amd64.deb ./mysql-testsuite_8.0.37-1ubuntu20.04_amd64.deb

Ubuntu 22.04:

rm -rvf ./mysql-community-test-debug_8.0.37-1ubuntu22.04_amd64.deb ./mysql-community-test_8.0.37-1ubuntu22.04_amd64.deb ./mysql-testsuite_8.0.37-1ubuntu22.04_amd64.deb

5. Install all of the packages in the current directory:

dpkg -i *mysql*.deb

This will replace the 8.0.38 packages with the versions from 8.0.37.

6. Confirm that the MySQL service is now running:

/scripts/restartsrv_mysql --status

7. To prevent this from occurring again on the next update, version-lock the packages with the following:

apt-mark hold mysql-client mysql-common mysql-community-client-core mysql-community-client-plugins mysql-community-client mysql-community-server-core mysql-community-server-debug mysql-community-server mysql-server mysql-shell

Leave a Reply