temporalio / temporalio/temporal

MySQL persistence: support multi-host connectAddr and/or SRV-based endpoint discovery (no LB/VIP environments)

Open
#10,171 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Go
Stars
23.2k
Forks
1.9k
Avg merge
2d 8h
Merged PRs (30d)
228

Description

Description

We are running Temporal server with MySQL persistence in Kubernetes/OpenShift and are migrating from Helm chart 0.73.1 (server 1.29.1) to chart 1.x.

For MySQL HA, we have a 3-node setup but no single LB/VIP endpoint available.
Today, connectAddr appears to be treated as a single effective endpoint at runtime (no native comma-separated host list behavior, no SRV-based discovery/failover support).

As confirmed in forum discussion, comma-separated connectAddr is currently not supported by Temporal server for MySQL.

Problem / Use case

In environments without LB/VIP, we need Temporal server persistence to survive primary/node changes without manual reconfiguration/redeploy.

Requested capability

Support one or both of:

Comma-separated MySQL hosts in connectAddr (client-side failover/discovery behavior), and/or
SRV-backed DNS names for MySQL endpoint discovery/failover.

Expected behavior

Temporal server can connect and recover across MySQL node failover using configured host list and/or SRV.
Reconnect logic should not require changing Helm values during failover events.
Behavior and limits documented clearly for MySQL persistence.

Current behavior

Effective MySQL target is a single address at runtime.
Comma-separated host input does not work for MySQL persistence.
SRV-based failover/discovery is not supported.

Environment

Temporal server: 1.29.1 (evaluating upgrade to 1.x)
Helm chart: 0.73.1 (migrating to 1.x)
Persistence: MySQL
Platform: Kubernetes/OpenShift
Constraint: no external/internal LB/VIP for DB endpoint

Additional context

Forum response indicated this should be tracked as a Temporal server issue; chart side is expected to handle it once server support exists.
https://community.temporal.io/t/temporal-s-helm-charts-reaches-milestone-1-0-0-release/19503

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing how Temporal server handles MySQL persistence connectAddr and review the existing persistence configuration and connection behavior. Compare comma-separated host support with SRV-based discovery, then define the supported failover behavior, limits, tests, and documentation needed for a complete implementation.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, mysql
Domain
databases, distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.