#!/bin/bash set -e BACKUP_DIR="/root/mariadb-upgrade-backup-$(date +%F-%H%M)" REPO_FILE="/etc/yum.repos.d/MariaDB.repo" echo "=== Create backup folder ===" mkdir -p "$BACKUP_DIR" echo "=== Backup MariaDB config ===" cp -a /etc/my.cnf "$BACKUP_DIR/my.cnf.bak" 2>/dev/null || true cp -a /etc/my.cnf.d "$BACKUP_DIR/my.cnf.d.bak" 2>/dev/null || true echo "=== Backup all databases using Plesk admin ===" mysqldump -uadmin -p"$(cat /etc/psa/.psa.shadow)" --all-databases --single-transaction --routines --events | gzip > "$BACKUP_DIR/all-databases.sql.gz" echo "=== Stop MariaDB ===" systemctl stop mariadb || true echo "=== Kill old MariaDB/MySQL process if exists ===" pkill -9 mariadbd 2>/dev/null || true pkill -9 mysqld 2>/dev/null || true pkill -9 mysqld_safe 2>/dev/null || true echo "=== Remove stale socket/pid files ===" rm -f /var/lib/mysql/mysql.sock rm -f /var/lib/mysql/mysql.pid rm -f /run/mariadb/mariadb.pid rm -f /run/mysqld/mysqld.pid echo "=== Fix bind-address if needed ===" if grep -q "bind-address *= *::ffff:127.0.0.1" /etc/my.cnf; then sed -i 's/bind-address *= *::ffff:127.0.0.1/bind-address = 127.0.0.1/g' /etc/my.cnf fi echo "=== Create MariaDB 10.11 repo ===" cat > "$REPO_FILE" <<'EOF' [mariadb] name = MariaDB 10.11 baseurl = https://rpm.mariadb.org/10.11/rhel/9/x86_64 gpgkey = https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck = 1 enabled = 1 module_hotfixes = 1 EOF echo "=== Clean DNF cache ===" dnf clean all dnf makecache echo "=== Upgrade MariaDB packages ===" dnf -y upgrade MariaDB-server MariaDB-client MariaDB-common MariaDB-shared MariaDB-backup || dnf -y install MariaDB-server MariaDB-client MariaDB-common MariaDB-shared MariaDB-backup echo "=== Start MariaDB ===" systemctl daemon-reload systemctl enable mariadb systemctl start mariadb echo "=== Run mariadb-upgrade ===" mariadb-upgrade -uadmin -p"$(cat /etc/psa/.psa.shadow)" echo "=== Repair Plesk DB ===" plesk repair db -y echo "=== Restart related Plesk services ===" systemctl restart sw-engine || true systemctl restart sw-cp-server || true echo "=== Final check ===" mariadb -V systemctl status mariadb -l --no-pager echo "=== DONE ===" echo "Backup saved at: $BACKUP_DIR"