Více instancí MariaDB na jednom serveru

★ ★ ★ ★ ★ Nehodnoceno

1. Proč izolovat starší databázi?

ISPConfig a současné weby používají hlavní službu MariaDB na portu 3306. Starší aplikace může vyžadovat tolerantní chování SQL, které se nehodí pro administrační panel ani pro ostatní weby. Druhá služba zabrání kompromisu v globální konfiguraci.

2. Rozložení instancí

VlastnostHlavní instanceStarší instance
ÚčelISPConfig a běžné webyPouze starší aplikace
Naslouchání TCP3306127.0.0.1:3307
Službamariadb.servicemariadb-charming.service
KonfiguraceKonfigurace distribuce/etc/mysql/mariadb-charming.cnf
Datový adresářVýchozí adresář MariaDB/var/lib/mysql-charming
Režim SQLBěžná výchozí pravidlaPrázdný, jen tam, kde to vyžaduje kompatibilita

Použité řešení: databázová služba pro starší aplikaci záměrně není veřejná. Aplikace se připojují přes 127.0.0.1:3307 nebo přes vyhrazený unixový socket.

3. Omezení ISPConfig

ISPConfig používejte pro běžnou službu na portu 3306. Ke starší službě se připojujte výslovně na 127.0.0.1:3307. Nepoužívejte localhost, pokud není výslovně nastavený jeho socket, protože by se mohla vybrat hlavní instance.

4. Konfigurace druhé instance

Neměňte globální sql_mode hlavní instance. Vytvořte samostatný konfigurační soubor s jiným portem, socketem, souborem PID, datovým adresářem a cestou k logům.

[mariadbd]
port = 3307
bind-address = 127.0.0.1
socket = /run/mysqld/mariadb-charming.sock
pid-file = /run/mysqld/mariadb-charming.pid
datadir = /var/lib/mysql-charming
log-error = /var/log/mysql/mariadb-charming.err
sql_mode =

[client]
port = 3307
socket = /run/mysqld/mariadb-charming.sock

Vyhrazený datový adresář inicializujte nástrojem MariaDB odpovídajícím nainstalované verzi a nastavte jeho vlastníka na uživatele mysql. Adresář nesmí být dostupný uživatelům webu.

5. Samostatná služba v systemd

Druhá instance se spouští nezávisle, takže se hlavní databáze dá běžně provozovat, aniž by se měnilo chování starší aplikace.

[Unit]
Description=MariaDB legacy application instance
After=network.target

[Service]
Type=simple
User=mysql
Group=mysql
ExecStart=/usr/sbin/mariadbd --defaults-file=/etc/mysql/mariadb-charming.cnf
Restart=on-failure
PrivateTmp=true

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now mariadb-charming.service
systemctl --no-pager status mariadb-charming.service
ss -lntp | grep 3307

Nastavení zabezpečení přizpůsobte konvencím služby v balíčku vaší distribuce. Než se na ni v produkci spolehnete, vyzkoušejte restart služby i obnovu databáze.

6. Vlastní uživatelé a oprávnění

Účty aplikací vytvářejte jen ve starší instanci. Omezte je na 127.0.0.1, přidělte jen nezbytná databázová oprávnění a hesla uchovávejte mimo tento dokument.

mariadb --protocol=TCP --host=127.0.0.1 --port=3307 -u root -p
CREATE DATABASE legacy_application CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'legacy_app'@'127.0.0.1' IDENTIFIED BY 'use-a-password-manager';
GRANT ALL PRIVILEGES ON legacy_application.* TO 'legacy_app'@'127.0.0.1';
FLUSH PRIVILEGES;

Jako databázový hostitel aplikace nastavte výslovně 127.0.0.1 a jako port 3307. Při použití localhost se může vybrat unixový socket a aplikace se omylem připojí k hlavní instanci.

7. Přidejte jasně označené připojení v phpMyAdminu

phpMyAdmin může nabízet druhý záznam serveru pro lokální starší službu. Označte ho výrazně, použijte hostitele na lokální smyčce a port 3307 a nepovolujte libovolné vzdálené hostitele.

$cfg['Servers'][$i]['host'] = '127.0.0.1';
$cfg['Servers'][$i]['port'] = '3307';
$cfg['Servers'][$i]['verbose'] = 'Legacy MariaDB (3307)';
$cfg['Servers'][$i]['auth_type'] = 'cookie';

Použijte strukturu konfigurace a lokální include, které dodává nainstalovaný balíček phpMyAdminu. Po aktualizaci balíčků otestujte oba záznamy.

8. Zálohy, monitoring a kontrola při převzetí

  • Zálohujte obě instance zvlášť a obnovu ověřujte na neprodukčním místě.
  • Sledujte obě služby v systemd, volné místo na disku, chybové logy a dokončení záloh.
  • Pomocí ss -lntp ověřte, že port 3307 naslouchá jen na lokální smyčce.
  • Ověřte, že hlavní instance má dál původní nastavení režimu SQL.
  • Po každé změně otestujte starší aplikaci s výslovně zadaným hostitelem a portem.
mariadb --protocol=TCP -h 127.0.0.1 -P 3307 -e "SELECT @@port, @@sql_mode;"
mariadb -e "SELECT @@port, @@sql_mode;"
systemctl is-active mariadb mariadb-charming

Cílem jsou dvě nezávisle provozovatelné služby: zabezpečená hlavní MariaDB pro ISPConfig a běžné weby a oddělená kompatibilní služba pro starší aplikaci.

0.0
★ ★ ★ ★ ★
0 hodnocení
5 ★
0 %
4 ★
0 %
3 ★
0 %
2 ★
0 %
1 ★
0 %

Přidejte komentář

Nic tu není.

Zatím sem nebyl vložen žádný komentář.