Skip to content

Commit 2e20c17

Browse files
committed
*: add leader to follower choice
1 parent 62a7e0f commit 2e20c17

File tree

6 files changed

+36
-1
lines changed

6 files changed

+36
-1
lines changed

api/v1alpha1/mysqlcluster_types.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,11 @@ type MysqlClusterSpec struct {
117117
// Bootstraping from remote data source
118118
// +optional
119119
SourceConfig *corev1.SecretProjection `json:"sourceConfig,omitempty"`
120+
121+
// Leader as follower represents if make leader use as follower to read
122+
// +optional
123+
// +kubebuilder:default:=false
124+
LeaderAsFollower bool `json:"leaderAsfollower,omitempty"`
120125
}
121126

122127
// ReadOnly define the ReadOnly pods

api/v1beta1/mysqlcluster_types.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,11 @@ type MysqlClusterSpec struct {
149149
// Specification of the service that exposes the MySQL leader instance.
150150
// +optional
151151
Service *ServiceSpec `json:"service,omitempty"`
152+
153+
// Leader as follower represents if make leader use as follower to read
154+
// +optional
155+
// +kubebuilder:default:=false
156+
LeaderAsFollower bool `json:"leaderAsfollower,omitempty"`
152157
}
153158

154159
// ReadOnly define the ReadOnly pods

api/v1beta1/zz_generated.conversion.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

charts/mysql-operator/templates/mysql.radondb.com_mysqlclusters.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,11 @@ spec:
101101
description: Lagged
102102
format: int32
103103
type: integer
104+
leaderAsfollower:
105+
default: false
106+
description: Leader as follower represents if make leader use as follower
107+
to read
108+
type: boolean
104109
metricsOpts:
105110
default:
106111
enabled: false
@@ -3598,6 +3603,11 @@ spec:
35983603
description: Lagged
35993604
format: int32
36003605
type: integer
3606+
leaderAsfollower:
3607+
default: false
3608+
description: Leader as follower represents if make leader use as follower
3609+
to read
3610+
type: boolean
36013611
logOpts:
36023612
description: LogOpts is the options of log settings.
36033613
properties:

config/crd/bases/mysql.radondb.com_mysqlclusters.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,11 @@ spec:
8383
description: Lagged
8484
format: int32
8585
type: integer
86+
leaderAsfollower:
87+
default: false
88+
description: Leader as follower represents if make leader use as follower
89+
to read
90+
type: boolean
8691
metricsOpts:
8792
default:
8893
enabled: false
@@ -3580,6 +3585,11 @@ spec:
35803585
description: Lagged
35813586
format: int32
35823587
type: integer
3588+
leaderAsfollower:
3589+
default: false
3590+
description: Leader as follower represents if make leader use as follower
3591+
to read
3592+
type: boolean
35833593
logOpts:
35843594
description: LogOpts is the options of log settings.
35853595
properties:

mysqlcluster/syncer/follower_service.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,10 @@ func NewFollowerSVCSyncer(cli client.Client, c *mysqlcluster.MysqlCluster) synce
4848
service.Spec.Type = "ClusterIP"
4949
}
5050
service.Spec.Selector = c.GetSelectorLabels()
51-
service.Spec.Selector["role"] = string(utils.Follower)
51+
52+
if !c.Spec.LeaderAsFollower {
53+
service.Spec.Selector["role"] = string(utils.Follower)
54+
}
5255
service.Spec.Selector["healthy"] = "yes"
5356

5457
if len(service.Spec.Ports) != 2 {

0 commit comments

Comments
 (0)