After upgrading MySQL, Confluence fails starting: Your database Storage Engine could not be determined

Still need help?

The Atlassian Community is here for you.

Ask the community

Platform Notice: Server and Data Center Only - This article only applies to Atlassian products on the server and data center platforms.

Summary

After upgrading the MySQL database from version 5.6 to version 5.7, Confluence isn't starting anymore. MySQL 5.6 was previously configured according to the document Database Setup For MySQL, and worked fine before the upgrade.

However, after the upgrade, Confluence UI shows up the following error:

Environment

  • Confluence Server or Data Center (any version)
  • MySQL 5.7, upgraded from MySQL 5.6
  • CentOS 7

Diagnosis

In the application logs, we can see that Confluence can't identify the Transaction Isolation level and the Storage Engine:

atlassian-confluence.log
2021-05-03 13:23:58,301 ERROR [localhost-startStop-1] [confluence.setup.dbcheck.MySQLChecker] checkIsolationLevel MySQL isolation level could not be read. Isolation level must be 'READ-COMMITTED'. See http://confluence.atlassian.com/x/GAtmDg

2021-05-03 13:23:58,516 ERROR [localhost-startStop-1] [atlassian.confluence.setup.BootstrapApplicationStartupListener] checkConfigurationOnStartup Your database Storage Engine could not be determined

Also in the application logs, Confluence reports the table performance_schema.global_variables is missing after the upgrade:

2021-04-29 16:00:33,846 WARN [HealthCheckWatchdog:thread-1] [troubleshooting.healthcheck.concurrent.SupportHealthCheckTask] healthCheckError Unable to complete execution of health check Server SQL Mode due to an exception
java.util.concurrent.ExecutionException: java.lang.RuntimeException: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'performance_schema.global_variables' doesn't exist
	at java.util.concurrent.FutureTask.report(FutureTask.java:122)
	at java.util.concurrent.FutureTask.get(FutureTask.java:206)
	at com.atlassian.troubleshooting.healthcheck.concurrent.SupportHealthCheckTask.getFutureWithTimeout(SupportHealthCheckTask.java:88)
	at com.atlassian.troubleshooting.healthcheck.concurrent.SupportHealthCheckTask.lambda$runAsync$0(SupportHealthCheckTask.java:68)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.RuntimeException: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'performance_schema.global_variables' doesn't exist

When logging into the database and trying to check the Storage Engine and Isolation level, the output shows empty rows as the result:

MySQL console
mysql> USE confluence;
Database changed
mysql> SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)
mysql> SELECT @@TX_ISOLATION;
+----------------+
+----------------+
+----------------+
1 row in set, 1 warning (0.00 sec)

Cause

The MySQL upgrade didn't complete properly.

Solution

  1. Shutdown Confluence
  2. Run the following command on a terminal to complete the MySQL upgrade:

    [user@atlassian]$ mysql_upgrade --force
  3. Restart MySQL
  4. Start Confluence

Last modified on May 11, 2021

Was this helpful?

Yes
No
Provide feedback about this article
Powered by Confluence and Scroll Viewport.