Skip to content

Commit 7ed5059

Browse files
committed
15336 FIX Add support for MariaDB 11
SUP-18615 Change-Id: I2dfe0a57fd5a0a148bb48d9f31b26a7e3c3ad8c5
1 parent e784ede commit 7ed5059

File tree

2 files changed

+57
-28
lines changed

2 files changed

+57
-28
lines changed

.werks/15336.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
[//]: # (werk v2)
2+
# Add support for MariaDB 11
3+
4+
key | value
5+
---------- | ---
6+
compatible | yes
7+
version | 2.4.0b1
8+
date | 2024-06-10T07:54:55+00:00
9+
level | 1
10+
class | fix
11+
component | checks
12+
edition | cre
13+
14+
15+
MariaDB 11 deprecated mysql* binaries and shows an error message like:
16+
17+
```
18+
mysqladmin: Deprecated program name. It will be removed in a future release, use ‘/usr/bin/mariadb-admin’ instead
19+
```
20+
21+
The agent plugin now checks if the MariaDB binaries are available and prefers them over the mySQL binaries.

agents/plugins/mk_mysql

Lines changed: 36 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,22 @@ do_query() {
2323
# Check if mysqld is running and root password setup
2424
echo "<<<mysql_ping>>>"
2525
echo "$INSTANCE_HEADER"
26-
mysqladmin --defaults-file="$MK_CONFDIR"/mysql.cfg ${1:+--socket="$1"} ping 2>&1 || return
26+
$MYSQLADMIN --defaults-file="$MK_CONFDIR"/mysql.cfg ${1:+--socket="$1"} ping 2>&1 || return
2727

2828
echo "<<<mysql>>>"
2929
echo "$INSTANCE_HEADER"
30-
mysql --defaults-file="$MK_CONFDIR"/mysql.cfg ${1:+--socket="$1"} -sN \
30+
$MYSQL --defaults-file="$MK_CONFDIR"/mysql.cfg ${1:+--socket="$1"} -sN \
3131
-e "show global status ; show global variables ;"
3232

3333
echo "<<<mysql_capacity>>>"
3434
echo "$INSTANCE_HEADER"
35-
mysql --defaults-file="$MK_CONFDIR"/mysql.cfg ${1:+--socket="$1"} -sN \
35+
$MYSQL --defaults-file="$MK_CONFDIR"/mysql.cfg ${1:+--socket="$1"} -sN \
3636
-e "SELECT table_schema, sum(data_length + index_length), sum(data_free)
3737
FROM information_schema.TABLES GROUP BY table_schema"
3838

3939
echo "<<<mysql_slave>>>"
4040
echo "$INSTANCE_HEADER"
41-
mysql --defaults-file="$MK_CONFDIR"/mysql.cfg ${1:+--socket="$1"} -s \
41+
$MYSQL --defaults-file="$MK_CONFDIR"/mysql.cfg ${1:+--socket="$1"} -s \
4242
-e "show slave status\G"
4343

4444
}
@@ -51,31 +51,39 @@ if [ ! -f "${MK_CONFDIR}/mysql.local.cfg" ]; then
5151
EOF
5252
fi
5353

54-
if type mysqladmin >/dev/null; then
55-
mysql_socket_string=$(grep -F -h socket "$MK_CONFDIR"/mysql{.local,}.cfg | sed -ne 's/.*socket=\([^ ]*\).*/\1/p')
56-
alias_string=$(grep -F -h alias "$MK_CONFDIR"/mysql{.local,}.cfg | sed -ne 's/.*aliases=\([^ ]*\).*/\1/p')
54+
if type mariadb-admin &>/dev/null; then
55+
MYSQL=mariadb
56+
MYSQLADMIN=mariadb-admin
57+
elif type mysqladmin &>/dev/null; then
58+
MYSQL=mysql
59+
MYSQLADMIN=mysqladmin
60+
else
61+
exit 0
62+
fi
5763

58-
if [ -z "$mysql_socket_string" ]; then
59-
mysql_socket_string=$(ps -fww -C mysqld | grep "socket" | sed -ne 's/.*socket=\([^ ]*\).*/\1/p')
60-
fi
61-
if [ -z "$mysql_socket_string" ]; then
62-
do_query "" ""
63-
else
64-
IFS=" " mapfile -t mysql_sockets <<<"$mysql_socket_string"
65-
IFS="," read -r -a aliases <<<"$alias_string"
64+
mysql_socket_string=$(grep -F -h socket "$MK_CONFDIR"/mysql{.local,}.cfg | sed -ne 's/.*socket=\([^ ]*\).*/\1/p')
65+
alias_string=$(grep -F -h alias "$MK_CONFDIR"/mysql{.local,}.cfg | sed -ne 's/.*aliases=\([^ ]*\).*/\1/p')
6666

67-
for i in "${!mysql_sockets[@]}"; do
68-
socket="${mysql_sockets[i]}"
69-
alias="${aliases[i]}"
70-
if [ -z "$alias" ]; then
71-
do_query "$socket" "$socket"
72-
else
73-
do_query "$socket" "$alias"
74-
fi
75-
done
76-
fi
67+
if [ -z "$mysql_socket_string" ]; then
68+
mysql_socket_string=$(ps -fww -C mysqld | grep "socket" | sed -ne 's/.*socket=\([^ ]*\).*/\1/p')
69+
fi
70+
if [ -z "$mysql_socket_string" ]; then
71+
do_query "" ""
72+
else
73+
IFS=" " mapfile -t mysql_sockets <<<"$mysql_socket_string"
74+
IFS="," read -r -a aliases <<<"$alias_string"
7775

78-
# In async execution the cache file would be removed if the plugin exits with non-zero exit code.
79-
# Avoid this from happening, just because the last mysql command failed (due to missing permissions).
80-
exit 0
76+
for i in "${!mysql_sockets[@]}"; do
77+
socket="${mysql_sockets[i]}"
78+
alias="${aliases[i]}"
79+
if [ -z "$alias" ]; then
80+
do_query "$socket" "$socket"
81+
else
82+
do_query "$socket" "$alias"
83+
fi
84+
done
8185
fi
86+
87+
# In async execution the cache file would be removed if the plugin exits with non-zero exit code.
88+
# Avoid this from happening, just because the last mysql command failed (due to missing permissions).
89+
exit 0

0 commit comments

Comments
 (0)