Skip to content

Commit 911422a

Browse files
committed
ProxySQL restart can lost Servers and Users if replication-manager stopped
1 parent 4cdcc17 commit 911422a

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

cluster/prx_proxysql.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -415,24 +415,29 @@ func (proxy *ProxySQLProxy) Refresh() error {
415415
}
416416
}
417417
}
418-
418+
changedUser := false
419419
for _, user := range uniUsers {
420420
if _, ok := myprxusermap[user.User+":"+user.Password]; !ok {
421421
cluster.LogPrintf(LvlInfo, "Add ProxySQL user %s ", user.User)
422-
423422
err := psql.AddUser(user.User, user.Password)
424423
if err != nil {
425424
cluster.sme.AddState("ERR00054", state.State{ErrType: "WARNING", ErrDesc: fmt.Sprintf(clusterError["ERR00054"], err), ErrFrom: "MON", ServerUrl: proxy.Name})
426-
425+
} else {
426+
changedUser = true
427427
}
428428
}
429429
}
430+
if changedUser {
431+
psql.SaveMySQLUsersToDisk()
432+
}
430433
}
431434
}
432435
if updated {
433436
err = psql.LoadServersToRuntime()
434437
if err != nil {
435438
cluster.LogPrintf(LvlErr, "ProxySQL could not load servers to runtime (%s)", err)
439+
} else {
440+
err = psql.SaveServersToDisk()
436441
}
437442
}
438443
proxy.QueryRules, err = psql.GetQueryRulesRuntime()

router/proxysql/proxysql.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,3 +344,8 @@ func (psql *ProxySQL) SaveMySQLVariablesToDisk() error {
344344
_, err := psql.Connection.Exec("SAVE MYSQL VARIABLES TO DISK")
345345
return err
346346
}
347+
348+
func (psql *ProxySQL) SaveMySQLUsersToDisk() error {
349+
_, err := psql.Connection.Exec("SAVE MYSQL USERS TO DISK")
350+
return err
351+
}

0 commit comments

Comments
 (0)