Hi Temporal community,
We are running self-hosted Temporal on OpenShift/Kubernetes and want to clarify DB host failover behavior for MySQL.
Environment
-
Temporal Helm chart version: 0.73.1
-
Temporal server appVersion/image tag: 1.29.1
-
Chart path:
temporalio/helm-chartsstyle templates (server-dockerize-configmap.yaml) -
Config mode:
-
server.configMapsToMount: "dockerize" -
server.useEntrypointScript: false
-
-
External MySQL (chart-managed MySQL disabled):
mysql.enabled: false
Our current values snippet
mysqlConnection: &mysqlConnection
driver: mysql8
host: "db-node-1.example.com"
port: 1234
user: temporal_user
password: "" # from existingSecret
existingSecret: temporal-mysql-secret
secretKey: password
database: temporal_db
maxConns: 20
maxIdleConns: 10
server:
config:
persistence:
default:
driver: sql
sql: *mysqlConnection
visibility:
driver: sql
sql: *mysqlConnection
What we wanted to try
We wanted to define multiple hosts directly, e.g.:
connectAddr: "db-node-1:1234,db-node-2:1234,db-node-3:1234"
and remove host/port competely (or whatever other way to provide such list of hosts)
Why we think this doesn’t work (please confirm/correct)
In chart template server-dockerize-configmap.yaml, SQL config is rendered like:
-
connectAddris always built fromhost:port -
then extra SQL fields are rendered via
omit(...)that excludesconnectAddr,host,port, etc.
So sql.connectAddr appears not to pass through, and host/port remain required for this path.
Also, from Temporal server MySQL session code (common/persistence/sql/sqlplugin/mysql/session/session.go), it appears DSN uses one resolved address:
mysqlConfig.Addr = r.Resolve(cfg.ConnectAddr)[0]
and default resolver is NewNoopResolver() (returns the same string as single entry).
Questions
-
Is there any officially supported way to configure multiple MySQL hosts directly in Temporal server config (without using LB/ProxySQL/MySQL Router/VIP)?
-
If not supported today, is this expected for MySQL plugin, and is there any roadmap/issue to support host list failover?
-
For production HA with MySQL, is the recommended pattern:
-
Temporal → single HA DB endpoint (Router/Proxy/VIP),
-
and use Temporal Multi-Cluster Replication only for cross-region Temporal failover (not DB node failover)?
-
Any guidance from maintainers or users running MySQL HA in production would be very helpful.
Thanks!