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.