| Current Path : /var/www/cesa.co.za/scripts/ |
| Current File : /var/www/cesa.co.za/scripts/mysql-config-select.sh |
#!/bin/bash
set -euo pipefail
LOGFILE="/var/log/mysql-config-switch.log"
echo "$(date): Checking machine type for MySQL config selection" >> "$LOGFILE"
# Query the GCE metadata server for this instance's machine type
MACHINE_TYPE_URL="http://metadata.google.internal/computeMetadata/v1/instance/machine-type"
MACHINE_TYPE_FULL=$(curl -s -H "Metadata-Flavor: Google" "$MACHINE_TYPE_URL")
MACHINE_TYPE=$(basename "$MACHINE_TYPE_FULL")
echo "$(date): Detected machine type: $MACHINE_TYPE" >> "$LOGFILE"
CONF_DIR="/etc/mysql/mariadb.conf.d"
TARGET_CONF="$CONF_DIR/50-server.cnf"
case "$MACHINE_TYPE" in
e2-standard-2)
SOURCE_CONF="$CONF_DIR/50-server.cnf.large"
echo "$(date): Selecting LARGE config (e2-standard-2: 2 vCPU dedicated, 8GB RAM)" >> "$LOGFILE"
;;
e2-medium)
SOURCE_CONF="$CONF_DIR/50-server.cnf.small"
echo "$(date): Selecting SMALL config (e2-medium: 2 vCPU shared, 4GB RAM)" >> "$LOGFILE"
;;
*)
# Unknown machine type - fail safe to small config and flag it loudly
SOURCE_CONF="$CONF_DIR/50-server.cnf.small"
echo "$(date): WARNING - unrecognized machine type '$MACHINE_TYPE'. Defaulting to SMALL config." >> "$LOGFILE"
;;
esac
# Only replace and restart if the config actually needs to change
if ! cmp -s "$SOURCE_CONF" "$TARGET_CONF" 2>/dev/null; then
cp "$SOURCE_CONF" "$TARGET_CONF"
echo "$(date): Config changed, restarting MariaDB" >> "$LOGFILE"
systemctl restart mariadb
else
echo "$(date): Config unchanged, no restart needed" >> "$LOGFILE"
fi
echo "$(date): Done" >> "$LOGFILE"