Skip to content

Commit fc97d09

Browse files
committed
Support config adapt to mysql 8.3.0
1 parent 0727310 commit fc97d09

File tree

1 file changed

+42
-13
lines changed

1 file changed

+42
-13
lines changed

pkg/controller/mysqlcluster/internal/syncer/config_map.go

Lines changed: 42 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,15 @@ import (
2222
"sort"
2323
"strings"
2424

25+
"github.com/bitpoke/mysql-operator/pkg/internal/mysqlcluster"
26+
"github.com/blang/semver"
2527
"github.com/go-ini/ini"
28+
"github.com/presslabs/controller-util/syncer"
2629
core "k8s.io/api/core/v1"
2730
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2831
"k8s.io/apimachinery/pkg/runtime"
2932
"k8s.io/apimachinery/pkg/util/intstr"
3033
"sigs.k8s.io/controller-runtime/pkg/client"
31-
32-
"github.com/presslabs/controller-util/syncer"
33-
34-
"github.com/bitpoke/mysql-operator/pkg/internal/mysqlcluster"
3534
)
3635

3736
// NewConfigMapSyncer returns config map syncer
@@ -96,15 +95,17 @@ fi
9695
func buildMysqlConfData(cluster *mysqlcluster.MysqlCluster) (string, error) {
9796
cfg := ini.Empty()
9897
sec := cfg.Section("mysqld")
99-
100-
if cluster.GetMySQLSemVer().Major == 5 {
98+
version := cluster.GetMySQLSemVer()
99+
if version.Major == 5 {
101100
addKVConfigsToSection(sec, convertMapToKVConfig(mysql5xConfigs))
102-
} else if cluster.GetMySQLSemVer().Major == 8 {
101+
} else if version.Major == 8 {
103102
addKVConfigsToSection(sec, convertMapToKVConfig(mysql8xConfigs))
104103
}
105104

106105
// boolean configs
107106
addBConfigsToSection(sec, mysqlMasterSlaveBooleanConfigs)
107+
addSkipHostCacheByVersion(sec, version)
108+
addReplicationRepositoryByVersion(sec, version)
108109
// add custom configs, would overwrite common configs
109110
addKVConfigsToSection(sec, convertMapToKVConfig(mysqlCommonConfigs), cluster.Spec.MysqlConf)
110111

@@ -170,6 +171,39 @@ func addBConfigsToSection(s *ini.Section, boolConfigs ...[]string) {
170171
}
171172
}
172173

174+
func addSkipHostCacheByVersion(s *ini.Section, version semver.Version) {
175+
// cannot find which version exactly removes the --skip-host-cache option
176+
// but in https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-30.html, it is deprecated.
177+
if version.GTE(semver.MustParse("8.0.30")) {
178+
// set host_cache_size to 0 for backward compatibility
179+
_, err := s.NewKey("host_cache_size ", "0")
180+
if err != nil {
181+
log.Error(err, "failed to add key to config section", "key", "host_cache_size", "value", "0")
182+
}
183+
} else {
184+
_, err := s.NewBooleanKey("skip-host-cache")
185+
if err != nil {
186+
log.Error(err, "failed to add boolean key to config section", "key", "skip-host-cache")
187+
}
188+
}
189+
}
190+
191+
func addReplicationRepositoryByVersion(s *ini.Section, version semver.Version) {
192+
// https://dev.mysql.com/doc/relnotes/mysql/8.3/en/news-8-3-0.html
193+
if version.LT(semver.MustParse("8.3.0")) {
194+
_, err := s.NewKey("relay-log-info-repository", "TABLE")
195+
if err != nil {
196+
log.Error(err, "failed to add key to config section", "key", "relay-log-info-repository", "value", "TABLE")
197+
}
198+
199+
// https://github.com/github/orchestrator/issues/323#issuecomment-338451838
200+
_, err = s.NewKey("master-info-repository", "TABLE")
201+
if err != nil {
202+
log.Error(err, "failed to add key to config section", "key", "master-info-repository", "value", "TABLE")
203+
}
204+
}
205+
}
206+
173207
// helper function to write to string ini.File
174208
// nolint: interfacer
175209
func writeConfigs(cfg *ini.File) (string, error) {
@@ -191,11 +225,7 @@ var mysqlCommonConfigs = map[string]string{
191225
"skip-slave-start": "on",
192226

193227
// Crash safe
194-
"relay-log-info-repository": "TABLE",
195-
"relay-log-recovery": "on",
196-
197-
// https://github.com/github/orchestrator/issues/323#issuecomment-338451838
198-
"master-info-repository": "TABLE",
228+
"relay-log-recovery": "on",
199229

200230
"default-storage-engine": "InnoDB",
201231
"gtid-mode": "on",
@@ -256,5 +286,4 @@ var mysql8xConfigs = map[string]string{
256286
var mysqlMasterSlaveBooleanConfigs = []string{
257287
// Safety
258288
"skip-name-resolve",
259-
"skip-host-cache",
260289
}

0 commit comments

Comments
 (0)