Baza podataka na linuxu: instalacija, konfiguracija i održavanje

Article Image

Zašto je Linux dobar izbor za pokretanje baza podataka

Ako planirate da upravljate bazama podataka na produkciji ili razvoju, verovatno ćete razmatrati Linux kao glavnu platformu. Linux nudi stabilnost, kontrolu nad resursima i dobru podršku za popularne sisteme za upravljanje bazama podataka (DBMS) kao što su PostgreSQL, MySQL/MariaDB, i SQLite za lakše potrebe. Kao administrator ili developer, vi dobijate direktan pristup datotečnom sistemu, mrežnim podešavanjima i mogućnost da fino podesite kernel parametre koji utiču na performanse baze podataka.

Od čega zavisi izbor DBMS-a i kako uskladiti očekivanja

Razumevanje potreba aplikacije

Pre nego što započnete instalaciju, procenite zahteve vaše aplikacije: da li vam trebaju transakcije i spoji (ACID), složene upite i indeksiranje, ili je fokus na jednostavnoj skladištenju ključeva i vrednosti? Vaš izbor DBMS-a treba da odražava ove potrebe. Na primer, PostgreSQL je često bolji za složene relacione modele i analitičke zahteve, dok MySQL/MariaDB može biti lakše za brzu web integraciju.

Licenciranje i dugoročna podrška

Obratite pažnju na licencu DBMS-a i dostupnost podrške ili upravljanih servisa. Ako želite otvoreni kod i bogat skup funkcionalnosti bez dodatnih troškova, PostgreSQL je dobar izbor. Ako vam je potrebno kompatibilno rešenje za postojeće aplikacije zasnovane na MySQL, MariaDB ili MySQL Community mogu biti pogodniji.

Priprema sistema: hardver, disklovi i bezbednosne postavke

Hardverske smernice i konfiguracija diska

Prilagodite resurse bazi podataka prema očekivanom opterećenju. CPU jezgra, RAM i brzina diska imaju direktan uticaj na latenciju i propusnost. Za baze sa velikim opterećenjem razmislite o SSD diskovima i odvojenim volumima za WAL/redo zapise, podatke i logove. Takođe podesite pravilne mount opcije (npr. noatime) kako biste smanjili nepotrebne I/O operacije.

OS podešavanja i bezbednost pre instalacije

  • Napravite korisnika i grupu specifične za DBMS (npr. postgres, mysql) i ograničite pristup fajlovima.
  • Proverite firewall i otvorene portove — dozvolite komunikaciju samo sa odobrenih adresa.
  • Podesite SELinux/AppArmor profile po potrebi, ili dokumentujte razloge za privremeno isključivanje tokom testiranja.
  • Pripremite sistemske parametre (kernel.shmmax, vm.swappiness, fs.file-max) prema preporukama vašeg DBMS-a.

Ove početne odluke utiču na pouzdanost i performanse cele baze. U sledećem delu ćemo praktično proći kroz korake instalacije i osnovnu konfiguraciju za najpopularnije DBMS opcije na distribucijama kao što su Ubuntu i CentOS, uključujući konkretne komande i provere nakon instalacije.

Instalacija i pokretanje: PostgreSQL i MySQL/MariaDB

Dolazimo do praktičnog dela — instalacija i početno pokretanje na tipičnim distribucijama. Donosim najčešće komande za Ubuntu (Debian-based) i CentOS/RHEL (dnf/yum).

PostgreSQL (Ubuntu):

sudo apt update
sudo apt install postgresql postgresql-contrib
sudo systemctl enable --now postgresql
sudo -u postgres psql -c "SELECT version();"

PostgreSQL (CentOS/RHEL):

sudo dnf install -y postgresql-server postgresql-contrib
sudo postgresql-setup --initdb
sudo systemctl enable --now postgresql
sudo -u postgres psql -c "SELECT version();"

MySQL/MariaDB (Ubuntu):

sudo apt update
sudo apt install mariadb-server    # ili mysql-server
sudo systemctl enable --now mariadb
sudo mysql_secure_installation
mysql -u root -p -e "SELECT VERSION();"

MySQL/MariaDB (CentOS/RHEL):

sudo dnf install -y mariadb-server
sudo systemctl enable --now mariadb
sudo mysql_secure_installation
mysql -u root -p -e "SELECT VERSION();"

SQLite zahteva samo paket za klijentski alat na serveru ili razvojnoj mašini:

sudo apt install sqlite3   # ili sudo dnf install sqlite

Nakon instalacije proverite servis i logove: systemctl status postgresql ili systemctl status mariadb, a logovi su obično u /var/log/postgresql ili /var/log/mysqld.log.

Article Image

Osnovna mrežna i autentifikaciona konfiguracija

Posle instalacije podesite pristup samo onoliko koliko je potrebno. Za remoto povezivanje podesite:

PostgreSQL:

# u /etc/postgresql//main/postgresql.conf (Ubuntu)
listen_addresses = 'localhost'  # promenite u '0.0.0.0' ili određenu IP adresu za remote
# i u pg_hba.conf dodajte red za mrežu:
host    all     all     10.0.0.0/24    md5

Na CentOS putanja može biti /var/lib/pgsql/data/postgresql.conf. Nakon izmene restartujte servis: sudo systemctl restart postgresql.

MySQL/MariaDB:

# u /etc/mysql/my.cnf (Ubuntu) ili /etc/my.cnf (CentOS)
bind-address = 127.0.0.1   # postavite na 0.0.0.0 ili konkretnu IP ako dozvoljavate remote veze
# pokrenite restart:
sudo systemctl restart mariadb

Sa sigurnosne strane pokrenite mysql_secure_installation za MySQL/MariaDB (uklanjanje anonimnih korisnika, onemogućavanje root udaljenog pristupa, uklanjanje test baze) i podesite jake lozinke za sve administrativne naloge.

Brze provere i stvaranje prvog korisnika/baze

Nakon pokretanja uradite osnovne provere i napravite test korisnika i bazu.

Provera portova:

ss -tulpn | grep -E '5432|3306'

PostgreSQL — primer kreiranja baze i korisnika:

sudo -u postgres psql -c "CREATE USER app_user WITH PASSWORD 'Sifra123';"
sudo -u postgres psql -c "CREATE DATABASE app_db OWNER app_user;"
sudo -u postgres psql -c "\l"    # prikaz baza

MySQL — primer:

mysql -u root -p -e "CREATE DATABASE app_db;
CREATE USER 'app_user'@'10.0.0.0/24' IDENTIFIED BY 'Sifra123';
GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'10.0.0.0/24';
FLUSH PRIVILEGES;"

Ne zaboravite firewall (ufw na Ubuntu ili firewalld na CentOS): otvorite port 5432/3306 samo za dozvoljene mreže. Primer za firewalld:

sudo firewall-cmd --permanent --add-port=5432/tcp
sudo firewall-cmd --reload

U sledećem delu ćemo se pozabaviti finijim podešavanjima performansi, backup strategijama i automatizacijom održavanja.

Article Image

Održavanje, backup i monitoring

Redovno održavanje i pouzdani backup su ključni za dostupnost i integritet podataka. Koristite kombinaciju logičkih i fizičkih backup-a, automatizujte zadatke i pratite stanje servera i baze podataka.

  • Backup: za PostgreSQL koristite pg_dump/pg_dumpall za logičke backup-e i pg_basebackup za fizičke; za MySQL/MariaDB koristite mysqldump ili mariabackup za fizičke kopije. Uvek testirajte restore u odvojenom okruženju.
  • Automatizacija: zakazivanje putem cron-a ili systemd timers, rotacija i enkripcija backup fajlova, slanje kopija na offsite lokacije ili S3-kompatibilne servise.
  • Monitoring: pratite performanse pomoću alata kao što su Prometheus/Grafana, pg_stat_statements za PostgreSQL i performance_schema za MySQL; nadgledajte disk, I/O, repliku i latenciju upita.
  • Održavanje: redovno primenjujte sigurnosne zakrpe, izvršavajte VACUUM/ANALYZE (PostgreSQL) ili OPTIMIZE (MySQL) tamo gde je potrebno, i planirajte nadogradnje u proverenim okruženjima.

Završne napomene i preporuke za dalje

Rad sa bazama podataka na Linuxu je proces učenja i poboljšanja. Fokusirajte se na automatizaciju rutinskih zadataka, testiranje procedura obnove i minimalizaciju površine napada. Dokumentujte konfiguracije i promene, i uvedite politike za upravljanje šiframa i pristupom. Za dublje tehnike podešavanja i najbolje prakse konsultujte zvaničnu dokumentaciju, na primer PostgreSQL dokumentacija, i redovno pratite zajednicu i sigurnosne glasnike.

Frequently Asked Questions

Kako da napravim automatizovan backup za PostgreSQL?

Koristite pg_dump za periodične logičke backup-e ili pg_basebackup za fizičke backup-e, zakažite zadatke preko cron-a ili systemd timer-a, automatizujte enkripciju i transfer na offsite skladište, i redovno testirajte restore procedure.

Kako ograničiti pristup bazi iz mreže?

Za PostgreSQL podesite listen_addresses i pravila u pg_hba.conf; za MySQL/MariaDB podesite bind-address i korisnička prava. Dodatno, koristite firewall (ufw ili firewalld) da otvorite port samo za dozvoljene IP adrese i po potrebi primenite VPN ili TLS tunelovanje za siguran pristup.

Šta proveriti nakon nadogradnje baze podataka?

Proverite logove za greške, izvršite integritetske provere i testne upite iz aplikacije, pokrenite potrebne maintenance komande (npr. VACUUM/ANALYZE), proverite performanse na testnoj instanci i osigurajte da su backup-i uspešno snimljeni pre i posle nadogradnje.