Dashboard not working after remove ElasticSearch. Is ES required if using MySQL?

Our cluster is using MySQL (AWS Aurora) and started with ElasticSearch. We deployed with the helm chart. Then we removed the ElasticSearch. We set the elasticsearch enabled to false. Then we re-deployed everything, but the UI now shows this. Is ES required if we use MySQL?

Did you create visibility schema in MySQL?

Yes, and I do see the table there

Could it be that the db connection is using the wrong db name for visibility?

The executions_visibility table is empty. Is it because we were saving to ES but not that table? And once we delete ES we won’t see anything?

My guess is that Temporal cluster cannot connect to the visibility schema in MySQL. I’m not sure if clean migration from ES to MySQL is even supported. We always tested from MySQL to ES.

I’ll let @alex help you tomorrow with the details.

I bring back ES, and created some workflows. Everything works, but the executions_visibility table stays empty. So I believe it is not possible to remove ES if you are already using ES, something will not work since there is no data. Maybe using Cassandra will be different? But using MySQL the table will be empty

Yes, there is no migration path from ES to MySQL but new workflow executions should to the MySQL database if it is configured correctly. How do you install Temporal w/o ES? It should be something like this:

helm install -f values/values.mysql.yaml -f values/values.antiaffinity.yaml -f values/values.resources.yaml temporaltest --set elasticsearch.enabled=false --set prometheus.enabled=false --set grafana.enabled=false --set server.metrics.serviceMonitor.interval=15s --set server.metrics.serviceMonitor.enabled=true --set server.metrics.annotations.enabled=true --set server.replicaCount=5 --set server.config.numHistoryShards=4096 --set server.image.tag=1.7.0 --set server.image.repository=temporalio/server --set admintools.image.tag=1.7.0 --set admintools.image.repository=temporalio/admin-tools --set web.image.tag=1.7.0 --set web.image.repository=temporalio/web --set server.config.persistence.default.sql.user=your-user --set server.config.persistence.default.sql.password=your-password --set server.config.persistence.visibility.sql.user=your-user --set server.config.persistence.visibility.sql.password=your-password --set server.config.persistence.default.sql.host=your-host.amazonaws.com --set server.config.persistence.visibility.sql.host=your-host.amazonaws.com --set server.config.persistence.default.sql.database=temporal --set server.config.persistence.visibility.sql.database=temporal_visibility . --wait --timeout 15m

I directly modified values.yaml and values/values.mysql.yaml and then run
helm install
-f values/values.mysql.yaml
-f values.yaml
temporaltest . --timeout 900s

Looking at your command, do I have to use -f values/values.antiaffinity.yaml and -f values/values.resources.yaml ?
What are they for?
Do I have to turn off prometheus and grafana when use MySQL?

Hi, I found out the problem. I had a typo in the value for the visibility database. The error actually shows that. It should be temporal_visibility.execution_visibility, but it was temporal.execution_visibility

Thank you very much for the help

1 Like

I also noticed that but I am not very familiar with MySQL and thought that it is a username (like dbo in MSSQL) not DB name.