Instalare MariaDB 10.6 în paralel cu MariaDB 5.5 pe un server CentOS 7

Instalare MariaDB 10.6 în paralel cu MariaDB 5.5 pe un server CentOS 7

Se dă un server CentOS 7 administrat cu Plesk Obsidian 18.0.75 și pe care rulează deja un serviciu de baze de date MariaDB 5.5. Plesk propune upgradarea MariaDB la versiunea 10.5 (versiunea curentă long term support). Pentru că există un număr semnificativ de baze de date asociate unor aplicații critice, se dorește ca acestea să fie migrate progresiv pe o nouă versiune a MariaDB. Soluția propusă este instalarea în paralel a unui serviciu MariaDB 10.6 care să fie izolat complet de instanța actuală MariaDB 5.5 și pe care să nu o afecteze sub nicio formă.

Ca metodă de precauție, pentru a ne asigura că cele două instanțe MariaDB nu vor interfera, noua versiune va fi instalată într-un folder separat.

Se crează folderul pentru noua versiune:

mkdir /opt/mariadb10
cd /opt/mariadb10

Se descarcă MariaDB 10.6

wget https://downloads.mariadb.org/interstitial/mariadb-10.6.17/bintar-linux-x86_64/mariadb-10.6.17-linux-x86_64.tar.gz
tar -xvf mariadb-10.6.17-linux-x86_64.tar.gz
mv mariadb-10.6.17-linux-x86_64 mariadb

Se crează un datadir separat

mkdir /opt/mariadb10/data
chown -R mysql:mysql /opt/mariadb10/data

Se crează un fișier de configurare gol, doar pentru această instalare, ca să se evite folosirea fișierelor de configurare existente deja pentru MariaDB 5.5:

nano /opt/mariadb10/clean.cnf

cu conținutul:

[mysqld]

Se inițializează baza de date:

/opt/mariadb10/mariadb/scripts/mysql_install_db \
--defaults-file=/opt/mariadb10/clean.cnf \
--basedir=/opt/mariadb10/mariadb \
--datadir=/opt/mariadb10/data \
--user=mysql

Se crează un fișier real de configurare /opt/mariadb10/my.cnf specific acestei instalări:

[mysqld]
basedir=/opt/mariadb10/mariadb
datadir=/opt/mariadb10/data
port=3307
socket=/opt/mariadb10/mysql.sock
pid-file=/opt/mariadb10/mariadb.pid
log-error=/opt/mariadb10/error.log
bind-address = 0.0.0.0

Apoi:

chmod -R 755 /opt/mariadb10

Se crează un serviciu systemd separat:

[Unit]
Description=MariaDB 10.x (custom)
After=network.target

[Service]
ExecStart=/opt/mariadb10/mariadb/bin/mysqld --defaults-file=/opt/mariadb10/my.cnf
User=mysql
Group=mysql

[Install]
WantedBy=multi-user.target

Se pornește și se activează noul serviciu:

systemctl daemon-reload
systemctl enable mariadb10
systemctl start mariadb10

Urmează crearea unui utilizator pentru Plesk, cu drepturi depline. Pentru aceasta se va realiza o conexiune la noua instanță a bazei de date, folosind socket, iar mai întâi vom seta parola pentru utilizatorul root:

/opt/mariadb10/mariadb/bin/mysql -u root --socket=/opt/mariadb10/mysql.sock
> ALTER USER 'root'@'localhost' IDENTIFIED BY 'parola_root';
> ALTER USER 'root'@'127.0.0.1' IDENTIFIED BY 'parola_root';
> FLUSH PRIVILEGES;

Dacă utilizatorul root@127.0.0.1 nu există, trebuie creat:

CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'parola_root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Se crează utilitorul pleskdb:

CREATE USER 'pleskdb'@'127.0.0.1' IDENTIFIED BY 'parola_pleskdb';
GRANT ALL PRIVILEGES ON *.* TO 'pleskdb'@'127.0.0.1' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Se deschide portul 3307 în firewall, chiar din Plesk, doar pentru conexiuni din rețeaua locală:

Tools & Settings > Firewall > Modify Firewall Rules > Add Custom Rule
Rule name: MariaDB 10.5
Port: 3307
Protocol: TCP
Allow from: 192.168.2.0/24
Action: Allow
Apoi se apasă Apply Changes, iar Plesk va reconstrui firewall-ul.

Se testează conexiunea TCP/IP:

/opt/mariadb10/mariadb/bin/mysql -u root -p -P 3307 -h 127.0.0.1

Se adaugă în Plesk noul server de baze de date:

Tools & Settings > Database Servers > Add Database Server
Type: MySQL
Host: 127.0.0.1
Port: 3307
User: pleskdb
Password: parola_pleskdb

Plesk îl va trata ca un server extern, chiar dacă e local.