Skip to content

Commit ff96f03

Browse files
authored
Merge branch 'main' into K8SPXC-1214
2 parents f1ce7b6 + 050ca95 commit ff96f03

File tree

54 files changed

+1924
-172
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+1924
-172
lines changed

build/Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ COPY build/proxysql-admin.cnf /proxysql-admin.cnf
8383
COPY build/proxysql_add_cluster_nodes.sh /proxysql_add_cluster_nodes.sh
8484
COPY build/proxysql_add_proxysql_nodes.sh /proxysql_add_proxysql_nodes.sh
8585
COPY build/proxysql_add_pxc_nodes.sh /proxysql_add_pxc_nodes.sh
86+
COPY build/proxysql_scheduler_config.tmpl /proxysql_scheduler_config.tmpl
8687

8788
COPY build/backup /backup
8889

build/proxysql-entrypoint.sh

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#!/bin/bash
22

3+
set -o errexit
34
set -o xtrace
45

56
function sed_in_place() {
@@ -15,13 +16,21 @@ function sed_in_place() {
1516
cp /opt/percona/proxysql.cnf /etc/proxysql
1617
cp /opt/percona/proxysql-admin.cnf /etc
1718

19+
MYSQL_INTERFACES='0.0.0.0:3306;0.0.0.0:33062'
20+
CLUSTER_PORT='33062'
21+
1822
PROXY_CFG=/etc/proxysql/proxysql.cnf
1923
PROXY_ADMIN_CFG=/etc/proxysql-admin.cnf
2024

21-
MYSQL_INTERFACES='0.0.0.0:3306;0.0.0.0:33062'
22-
CLUSTER_PORT='33062'
23-
sed_in_place "s/#export WRITERS_ARE_READERS=.*$/export WRITERS_ARE_READERS='yes'/g" ${PROXY_ADMIN_CFG}
25+
# Percona scheduler
26+
PERCONA_SCHEDULER_CFG_TMPL=/opt/percona/proxysql_scheduler_config.tmpl
27+
PERCONA_SCHEDULER_CFG=/opt/percona/scheduler-config.toml
28+
if [[ -f ${PERCONA_SCHEDULER_CFG_TMPL} ]]; then
29+
cp ${PERCONA_SCHEDULER_CFG_TMPL} ${PERCONA_SCHEDULER_CFG}
30+
fi
2431

32+
# internal scheduler
33+
sed_in_place "s/#export WRITERS_ARE_READERS=.*$/export WRITERS_ARE_READERS='yes'/g" ${PROXY_ADMIN_CFG}
2534
sed_in_place "s/interfaces=\"0.0.0.0:3306\"/interfaces=\"${MYSQL_INTERFACES:-0.0.0.0:3306}\"/g" ${PROXY_CFG}
2635
sed_in_place "s/stacksize=1048576/stacksize=${MYSQL_STACKSIZE:-1048576}/g" ${PROXY_CFG}
2736
sed_in_place "s/threads=2/threads=${MYSQL_THREADS:-2}/g" ${PROXY_CFG}
@@ -42,7 +51,26 @@ sed_in_place "s/CLUSTER_PASSWORD='admin'/CLUSTER_PASSWORD='${OPERATOR_PASSWORD_E
4251
sed_in_place "s/CLUSTER_PORT='3306'/CLUSTER_PORT='${CLUSTER_PORT:-3306}'/g" ${PROXY_ADMIN_CFG}
4352
sed_in_place "s/MONITOR_USERNAME='monitor'/MONITOR_USERNAME='${MONITOR_USERNAME:-monitor}'/g" ${PROXY_ADMIN_CFG}
4453
sed_in_place "s/MONITOR_PASSWORD='monitor'/MONITOR_PASSWORD='${MONITOR_PASSWORD_ESCAPED:-monitor}'/g" ${PROXY_ADMIN_CFG}
45-
set -o xtrace
54+
set -o xtrace # hide sensitive information
55+
56+
# Percona scheduler
57+
if [[ -f ${PERCONA_SCHEDULER_CFG} ]]; then
58+
set +o xtrace # hide sensitive information
59+
sed_in_place "s/SCHEDULER_PROXYSQLHOST/'$(hostname -f)'/" ${PERCONA_SCHEDULER_CFG}
60+
sed_in_place "s/SCHEDULER_PROXYSQLPASSWORD/'${PROXY_ADMIN_PASSWORD_ESCAPED:-admin}'/" ${PERCONA_SCHEDULER_CFG}
61+
sed_in_place "s/SCHEDULER_CLUSTERPASSWORD/'${OPERATOR_PASSWORD_ESCAPED:-operator}'/" ${PERCONA_SCHEDULER_CFG}
62+
sed_in_place "s/SCHEDULER_CLUSTERPORT/'${CLUSTER_PORT:-3306}'/" ${PERCONA_SCHEDULER_CFG}
63+
sed_in_place "s/SCHEDULER_MONITORPASSWORD/'${MONITOR_PASSWORD_ESCAPED:-monitor}'/" ${PERCONA_SCHEDULER_CFG}
64+
set -o xtrace # hide sensitive information
65+
66+
sed_in_place "s/SCHEDULER_MAXCONNECTIONS/${SCHEDULER_MAXCONNECTIONS}/g" ${PERCONA_SCHEDULER_CFG}
67+
sed_in_place "s/SCHEDULER_NODECHECKINTERVAL/${SCHEDULER_NODECHECKINTERVAL}/g" ${PERCONA_SCHEDULER_CFG}
68+
sed_in_place "s/SCHEDULER_CHECKTIMEOUT/${SCHEDULER_CHECKTIMEOUT}/g" ${PERCONA_SCHEDULER_CFG}
69+
sed_in_place "s/SCHEDULER_PINGTIMEOUT/${SCHEDULER_PINGTIMEOUT}/g" ${PERCONA_SCHEDULER_CFG}
70+
sed_in_place "s/SCHEDULER_RETRYDOWN/${SCHEDULER_RETRYDOWN}/g" ${PERCONA_SCHEDULER_CFG}
71+
sed_in_place "s/SCHEDULER_RETRYUP/${SCHEDULER_RETRYUP}/g" ${PERCONA_SCHEDULER_CFG}
72+
sed_in_place "s/SCHEDULER_WRITERALSOREADER/${SCHEDULER_WRITERALSOREADER}/g" ${PERCONA_SCHEDULER_CFG}
73+
fi
4674

4775
## SSL/TLS support
4876
CA=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
@@ -52,10 +80,16 @@ fi
5280
SSL_DIR=${SSL_DIR:-/etc/proxysql/ssl}
5381
if [ -f "${SSL_DIR}/ca.crt" ]; then
5482
CA=${SSL_DIR}/ca.crt
83+
if [[ -f ${PERCONA_SCHEDULER_CFG} ]]; then
84+
sed_in_place "s:^sslCertificatePath.*= .*\"$:sslCertificatePath = \"${SSL_DIR}\":" ${PERCONA_SCHEDULER_CFG}
85+
fi
5586
fi
5687
SSL_INTERNAL_DIR=${SSL_INTERNAL_DIR:-/etc/proxysql/ssl-internal}
5788
if [ -f "${SSL_INTERNAL_DIR}/ca.crt" ]; then
5889
CA=${SSL_INTERNAL_DIR}/ca.crt
90+
if [[ -f ${PERCONA_SCHEDULER_CFG} ]]; then
91+
sed_in_place "s:^sslCertificatePath.*= .*\"$:sslCertificatePath = \"${SSL_INTERNAL_DIR}\":" ${PERCONA_SCHEDULER_CFG}
92+
fi
5993
fi
6094

6195
KEY=${SSL_DIR}/tls.key
@@ -71,6 +105,13 @@ if [ -f "$CA" ] && [ -f "$KEY" ] && [ -f "$CERT" ] && [ -n "$PXC_SERVICE" ]; the
71105
sed_in_place "s^ssl_p2s_ca=\"\"^ssl_p2s_ca=\"$CA\"^" ${PROXY_CFG}
72106
sed_in_place "s^ssl_p2s_key=\"\"^ssl_p2s_key=\"$KEY\"^" ${PROXY_CFG}
73107
sed_in_place "s^ssl_p2s_cert=\"\"^ssl_p2s_cert=\"$CERT\"^" ${PROXY_CFG}
108+
109+
# Percona scheduler
110+
if [[ -f ${PERCONA_SCHEDULER_CFG} ]]; then
111+
sed_in_place "s:^sslCa.*=.*\"$:sslCa = \"${CA##*/}\":" ${PERCONA_SCHEDULER_CFG}
112+
sed_in_place "s:^sslKey.*=.*\"$:sslKey = \"${KEY##*/}\":" ${PERCONA_SCHEDULER_CFG}
113+
sed_in_place "s:^sslClient.*=.*\"$:sslClient = \"${CERT##*/}\":" ${PERCONA_SCHEDULER_CFG}
114+
fi
74115
fi
75116

76117
if [ -f "${SSL_DIR}/tls.key" ] && [ -f "${SSL_DIR}/tls.crt" ]; then

build/proxysql-init-entrypoint.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,6 @@ install -o "$(id -u)" -g "$(id -g)" -m 0755 -D /proxysql-admin.cnf /opt/percona/
99
install -o "$(id -u)" -g "$(id -g)" -m 0755 -D /proxysql_add_cluster_nodes.sh /opt/percona/proxysql_add_cluster_nodes.sh
1010
install -o "$(id -u)" -g "$(id -g)" -m 0755 -D /proxysql_add_proxysql_nodes.sh /opt/percona/proxysql_add_proxysql_nodes.sh
1111
install -o "$(id -u)" -g "$(id -g)" -m 0755 -D /proxysql_add_pxc_nodes.sh /opt/percona/proxysql_add_pxc_nodes.sh
12+
install -o "$(id -u)" -g "$(id -g)" -m 0755 -D /proxysql_scheduler_config.tmpl /opt/percona/proxysql_scheduler_config.tmpl
1213

1314
install -o "$(id -u)" -g "$(id -g)" -m 0755 -D /peer-list /opt/percona/peer-list

build/proxysql_add_proxysql_nodes.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ function proxysql_admin_exec() {
1515
function wait_for_proxysql() {
1616
local server="$1"
1717
echo "Waiting for host $server to be online..."
18-
while [ "$(proxysql_admin_exec "$server" 'SELECT MAX(active) FROM runtime_mysql_galera_hostgroups')" != "1" ]; do
18+
PROXYSQL_TABLE="runtime_mysql_galera_hostgroups"
19+
while [ "$(proxysql_admin_exec "$server" "SELECT MAX(active) FROM ${PROXYSQL_TABLE}")" != "1" ]; do
1920
echo "ProxySQL is not up yet... sleeping ..."
2021
sleep 1
2122
done

build/proxysql_add_pxc_nodes.sh

Lines changed: 112 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ function wait_for_mysql() {
1818
echo "MySQL is not up yet... sleeping ..."
1919
sleep 1
2020
done
21+
echo "MySQL host ${h} is up and running."
2122
}
2223

2324
function proxysql_admin_exec() {
@@ -35,55 +36,131 @@ function wait_for_proxy() {
3536
echo "ProxySQL is not up yet... sleeping ..."
3637
sleep 1
3738
done
39+
echo "ProxySQL is up and running."
3840
}
3941

42+
PERCONA_SCHEDULER_CFG=/opt/percona/scheduler-config.toml
43+
4044
function main() {
4145
echo "Running $0"
4246

43-
read -ra first_host
44-
if [ -z "$first_host" ]; then
45-
echo "Could not find PEERS ..."
46-
exit
47-
fi
48-
pod_zero=$(echo "$first_host" | cut -d . -f 1 | sed -r 's/-[0-9]+$/-0/')
49-
service=$(echo "$first_host" | cut -d . -f 2-)
47+
local service
48+
local pod_zero
49+
local update_weights
50+
local hosts
5051

5152
sleep 15s # wait for evs.inactive_timeout
52-
wait_for_mysql "$service"
53+
54+
while read host; do
55+
if [[ -z ${host} ]]; then
56+
echo "No host provided via stdin."
57+
exit 0
58+
fi
59+
60+
service=$(echo $host | cut -d . -f 2-)
61+
pod_name=$(echo $host | cut -d . -f -1)
62+
pod_zero=$(echo $pod_name | sed "s/-[0-9]*$/-0/")
63+
pod_id=$(echo $pod_name | awk -F'-' '{print $NF}')
64+
65+
wait_for_mysql "${host}"
66+
67+
hosts=$((hosts + 1))
68+
69+
write_weight=1000
70+
read_weight=1000
71+
case ${pod_id} in
72+
0)
73+
write_weight=1000000
74+
read_weight=600
75+
;;
76+
*)
77+
write_weight=$((write_weight - pod_id))
78+
read_weight=$((read_weight - pod_id))
79+
;;
80+
esac
81+
82+
update_weights="${update_weights} UPDATE mysql_servers SET weight=${read_weight} WHERE hostgroup_id IN (10, 8010) AND hostname LIKE \"${pod_name}%\"; UPDATE mysql_servers SET weight=${write_weight} WHERE hostgroup_id IN (11, 8011) AND hostname LIKE \"${pod_name}%\";"
83+
done
84+
5385
wait_for_proxy
5486

87+
sed -i "s/^clusterHost.*=.*$/clusterHost=\"${service}\"/" ${PERCONA_SCHEDULER_CFG}
88+
5589
SSL_ARG=""
5690
if [ "$(proxysql_admin_exec "127.0.0.1" 'SELECT variable_value FROM global_variables WHERE variable_name="mysql-have_ssl"')" = "true" ]; then
5791
SSL_ARG="--use-ssl=yes"
92+
if [ "${SCHEDULER_ENABLED}" == "true" ]; then
93+
sed -i "s/^useSSL.*=.*$/useSSL=1/" ${PERCONA_SCHEDULER_CFG}
94+
else
95+
SSL_ARG="--use-ssl=yes"
96+
fi
5897
fi
5998

60-
local tmp=$(mktemp)
61-
sed "s/WRITE_NODE=.*/WRITE_NODE='$pod_zero.$service:3306'/g" /etc/proxysql-admin.cnf >${tmp}
62-
cat ${tmp} >/etc/proxysql-admin.cnf
63-
64-
proxysql-admin \
65-
--config-file=/etc/proxysql-admin.cnf \
66-
--cluster-hostname="$first_host" \
67-
--enable \
68-
--update-cluster \
69-
--force \
70-
--remove-all-servers \
71-
--disable-updates \
72-
--force \
73-
$SSL_ARG
74-
75-
proxysql-admin \
76-
--config-file=/etc/proxysql-admin.cnf \
77-
--cluster-hostname="$first_host" \
78-
--sync-multi-cluster-users \
79-
--add-query-rule \
80-
--disable-updates \
81-
--force
82-
83-
proxysql-admin \
84-
--config-file=/etc/proxysql-admin.cnf \
85-
--cluster-hostname="$first_host" \
86-
--update-mysql-version
99+
if [ "${SCHEDULER_ENABLED}" == "true" ]; then
100+
if proxysql-admin --config-file=/etc/proxysql-admin.cnf --is-enabled >/dev/null 2>&1; then
101+
echo "Cleaning setup from proxysql-admin..."
102+
proxysql-admin --config-file=/etc/proxysql-admin.cnf --disable
103+
104+
echo "Cleaning proxysql_servers..."
105+
proxysql_admin_exec "127.0.0.1" "DELETE FROM proxysql_servers; LOAD PROXYSQL SERVERS TO RUNTIME;"
106+
fi
107+
108+
if [ "$(proxysql_admin_exec "127.0.0.1" 'SELECT count(*) FROM runtime_scheduler')" -eq 0 ]; then
109+
percona-scheduler-admin --config-file=${PERCONA_SCHEDULER_CFG} --enable --force
110+
fi
111+
112+
# don't remove and re-add servers if not necessary
113+
if [[ "$(proxysql_admin_exec 127.0.0.1 'SELECT COUNT(DISTINCT(hostname)) FROM mysql_servers;')" != ${hosts} ]]; then
114+
percona-scheduler-admin \
115+
--config-file=${PERCONA_SCHEDULER_CFG} \
116+
--write-node="${pod_zero}.${service}:3306" \
117+
--update-cluster \
118+
--remove-all-servers
119+
proxysql_admin_exec "127.0.0.1" "${update_weights}; LOAD MYSQL SERVERS TO RUNTIME;"
120+
fi
121+
122+
# update weights if ProxySQL is restarted
123+
if [[ "$(proxysql_admin_exec 127.0.0.1 'SELECT COUNT(DISTINCT(hostname)) FROM mysql_servers WHERE weight=1000;')" > 0 ]]; then
124+
proxysql_admin_exec "127.0.0.1" "${update_weights}; LOAD MYSQL SERVERS TO RUNTIME;"
125+
fi
126+
127+
percona-scheduler-admin \
128+
--config-file=${PERCONA_SCHEDULER_CFG} \
129+
--sync-multi-cluster-users \
130+
--add-query-rule
131+
132+
percona-scheduler-admin \
133+
--config-file=${PERCONA_SCHEDULER_CFG} \
134+
--update-mysql-version
135+
else
136+
if percona-scheduler-admin --config-file=${PERCONA_SCHEDULER_CFG} --is-enabled >/dev/null 2>&1; then
137+
echo "Cleaning setup from percona-scheduler-admin..."
138+
percona-scheduler-admin --config-file=${PERCONA_SCHEDULER_CFG} --disable
139+
fi
140+
141+
proxysql-admin \
142+
--config-file=/etc/proxysql-admin.cnf \
143+
--cluster-hostname="${pod_zero}.${service}" \
144+
--enable \
145+
--update-cluster \
146+
--force \
147+
--remove-all-servers \
148+
--disable-updates \
149+
$SSL_ARG
150+
151+
proxysql-admin \
152+
--config-file=/etc/proxysql-admin.cnf \
153+
--cluster-hostname="${pod_zero}.${service}" \
154+
--sync-multi-cluster-users \
155+
--add-query-rule \
156+
--disable-updates \
157+
--force
158+
159+
proxysql-admin \
160+
--config-file=/etc/proxysql-admin.cnf \
161+
--cluster-hostname="${pod_zero}.${service}" \
162+
--update-mysql-version
163+
fi
87164

88165
echo "All done!"
89166
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# For the detailed manual, see
2+
# https://github.com/percona/pxc_scheduler_handler#how-to-configure-pxc-scheduler-handler
3+
4+
[global]
5+
OS = "na"
6+
daemonInterval = 2000
7+
daemonize = false
8+
debug = true
9+
lockClusterTimeout = 600
10+
lockFileTimeout = 60
11+
lockrefreshtime = 450
12+
logLevel = "debug"
13+
logTarget = "stdout"
14+
performance = true
15+
16+
[setup]
17+
clusterHost = SCHEDULER_CLUSTERHOST
18+
clusterPort = SCHEDULER_CLUSTERPORT
19+
clusterUser = 'operator'
20+
clusterUserPassword = SCHEDULER_CLUSTERPASSWORD
21+
maxConnections=SCHEDULER_MAXCONNECTIONS
22+
monitorUser='monitor'
23+
monitorUserPassword=SCHEDULER_MONITORPASSWORD
24+
nodeCheckInterval=SCHEDULER_NODECHECKINTERVAL
25+
useSSL=0
26+
27+
[proxysql]
28+
clustered = false
29+
host = SCHEDULER_PROXYSQLHOST
30+
lockfilepath = "/opt/percona"
31+
password = SCHEDULER_PROXYSQLPASSWORD
32+
port = 6032
33+
respectManualOfflineSoft = false
34+
user = 'proxyadmin'
35+
36+
[pxccluster]
37+
activeFailover = 1
38+
checkTimeOut = SCHEDULER_CHECKTIMEOUT
39+
clusterId = 10
40+
configHgRange = 8000
41+
failBack = true
42+
hgR = 10
43+
hgW = 11
44+
mainSegment = 0
45+
maintenanceHgRange = 9000
46+
maxNumWriters = 1
47+
persistPrimarySettings = 0
48+
pingTimeout = SCHEDULER_PINGTIMEOUT
49+
retryDown = SCHEDULER_RETRYDOWN
50+
retryUp = SCHEDULER_RETRYUP
51+
singlePrimary = true
52+
sslCa = "ca.crt"
53+
sslCertificatePath = "/etc/proxysql/ssl-internal"
54+
sslClient = "tls.crt"
55+
sslKey = "tls.key"
56+
writerIsAlsoReader = SCHEDULER_WRITERALSOREADER

build/pxc-entrypoint.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,14 +187,15 @@ fi
187187
if [[ $MYSQL_VERSION =~ ^(8\.0|8\.4)$ ]]; then
188188
sed -i "/\[mysqld\]/a gtid-mode=ON" $CFG
189189
sed -i "/\[mysqld\]/a enforce-gtid-consistency" $CFG
190+
sed -i "/\[mysqld\]/a innodb_buffer_pool_in_core_file=OFF" $CFG
190191
fi
191192

192193
sed -i "/\[mysqld\]/a wsrep_notify_cmd=/var/lib/mysql/wsrep_cmd_notify_handler.sh" $CFG
193194

194195
# add sst.cpat to exclude pxc-entrypoint, pxc-configure-pxc from SST cleanup
195196
grep -q "^progress=" $CFG && sed -i "s|^progress=.*|progress=1|" $CFG
196197
grep -q "^\[sst\]" "$CFG" || printf '[sst]\n' >>"$CFG"
197-
grep -q "^cpat=" "$CFG" || sed '/^\[sst\]/a cpat=.*\\.pem$\\|.*init\\.ok$\\|.*galera\\.cache$\\|.*wsrep_recovery_verbose\\.log$\\|.*readiness-check\\.sh$\\|.*liveness-check\\.sh$\\|.*get-pxc-state$\\|.*sst_in_progress$\\|.*sleep-forever$\\|.*pmm-prerun\\.sh$\\|.*sst-xb-tmpdir$\\|.*\\.sst$\\|.*gvwstate\\.dat$\\|.*grastate\\.dat$\\|.*\\.err$\\|.*\\.log$\\|.*RPM_UPGRADE_MARKER$\\|.*RPM_UPGRADE_HISTORY$\\|.*pxc-entrypoint\\.sh$\\|.*unsafe-bootstrap\\.sh$\\|.*pxc-configure-pxc\\.sh\\|.*peer-list$\\|.*auth_plugin$\\|.*version_info$\\|.*mysql-state-monitor$\\|.*mysql-state-monitor\\.log$\\|.*notify\\.sock$\\|.*mysql\\.state$\\|.*wsrep_cmd_notify_handler\\.sh$' "$CFG" 1<>"$CFG"
198+
grep -q "^cpat=" "$CFG" || sed '/^\[sst\]/a cpat=.*\\.pem$\\|.*init\\.ok$\\|.*galera\\.cache$\\|.*wsrep_recovery_verbose\\.log$\\|.*readiness-check\\.sh$\\|.*liveness-check\\.sh$\\|.*get-pxc-state$\\|.*sst_in_progress$\\|.*sleep-forever$\\|.*pmm-prerun\\.sh$\\|.*sst-xb-tmpdir$\\|.*\\.sst$\\|.*gvwstate\\.dat$\\|.*grastate\\.dat$\\|.*\\.err$\\|.*\\.log$\\|.*RPM_UPGRADE_MARKER$\\|.*RPM_UPGRADE_HISTORY$\\|.*pxc-entrypoint\\.sh$\\|.*unsafe-bootstrap\\.sh$\\|.*pxc-configure-pxc\\.sh\\|.*peer-list$\\|.*auth_plugin$\\|.*version_info$\\|.*mysql-state-monitor$\\|.*mysql-state-monitor\\.log$\\|.*notify\\.sock$\\|.*mysql\\.state$\\|.*wsrep_cmd_notify_handler\\.sh$\\|.*core\\..*$' "$CFG" 1<>"$CFG"
198199

199200
if [[ $MYSQL_VERSION == '8.0' && $MYSQL_PATCH_VERSION -ge 26 ]] || [[ $MYSQL_VERSION == '8.4' ]]; then
200201
grep -q "^skip_replica_start=ON" "$CFG" || sed -i "/\[mysqld\]/a skip_replica_start=ON" $CFG

0 commit comments

Comments
 (0)