---
title: 'Jak skonfigurować i zoptymalizować serwer MySQL na VPS | Zomro'
description: 'Optymalizacja serwera MySQL pozwala efektywnie wykorzystać zasoby i poprawić odpowiedź na zapytania.'
image: 'https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/seo%40server-panel.net/2024/11/25/screenshot_1_q50.jpg'
---

![opened image]()

  * [Zomro](https://zomro.com/pl/)
  * [FAQ](https://zomro.com/pl/blog/faq/)
  * Jak skonfigurować i zoptymalizować serwer MySQL na VPS 



# Jak skonfigurować i zoptymalizować serwer MySQL na VPS

25-11-2024

Jedną z najczęściej używanych i popularnych relacyjnych baz danych jest MySQL. Aplikacje internetowe i usługi często opierają się na tej bazie danych. Jednak aby osiągnąć stabilną pracę i wysoką wydajność, wymagana jest odpowiednia konfiguracja MySQL, szczególnie podczas uruchamiania go na VPS. Optymalizacja serwera MySQL pozwala efektywnie wykorzystać zasoby i poprawić czas reakcji na zapytania, co jest szczególnie ważne dla aplikacji o dużym obciążeniu.

## **MySQL: instalacja na VPS**

Instalacja MySQL na Twoim serwerze jest niezbędna przed rozpoczęciem optymalizacji. Aby zrozumieć, jak to zrobić, przedstawimy Ci krok po kroku instrukcję tego procesu dla dwóch systemów operacyjnych. 

**Proces instalacji dla Ubuntu/Debian**

  1. Zainstaluj najnowszą wersję menedżera pakietów:  
sudo apt update




2\. Przeprowadź instalację MySQL:  
sudo apt install mysql-server

  
![Jak skonfigurować i zoptymalizować serwer MySQL na VPS - 1](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/seo%40server-panel.net/2024/11/25/screenshot_1_q50.jpg)

3\. Następnym krokiem należy uruchomić MySQL, a następnie skonfigurować automatyczne uruchamianie przy starcie systemu operacyjnego:  
sudo systemctl start mysql  
sudo systemctl enable mysql

![Jak skonfigurować i zoptymalizować serwer MySQL na VPS - 2](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/seo%40server-panel.net/2024/11/25/screenshot_2_q50.jpg)

## **Proces instalacji dla CentOS/RHEL**

  1. Należy zainstalować MySQL z repozytorium:  
sudo yum install mysql-server

  2. Następnie należy uruchomić MySQL i skonfigurować autostart:  
sudo systemctl start mysqld  
sudo systemctl enable mysqld

  3. Uruchom konfigurację początkową w celu poprawy bezpieczeństwa:  
sudo mysql_secure_installation




### MySQL: proces optymalizacji

Aby zwiększyć wydajność, należy wprowadzić zmiany w konfiguracji MySQL po zakończeniu procesu instalacji. Optymalizacja obejmuje kilka obszarów: buforowanie, indeksowanie i ustawienia konfiguracyjne.

1\. Ustawienia buforowania

Buforowanie w MySQL pozwala przechowywać dane, które są często żądane, co zmniejsza obciążenie bazy danych i przyspiesza czas reakcji. Poniżej przedstawiamy listę podstawowych parametrów do konfiguracji buforowania:

  * query_cache_size — rozmiar pamięci podręcznej zapytań. Większy rozmiar poprawia wydajność.

  * query_cache_limit — limit rozmiaru wyników, które można buforować.

  * innodb_buffer_pool_size — kluczowy parametr dla InnoDB, który ustala ilość pamięci przeznaczonej do przechowywania danych i indeksów w pamięci podręcznej.




Podczas konfigurowania buforowania MySQL zmiany najczęściej wprowadza się w pliku my.cnf, który znajduje się w katalogu /etc/mysql/ lub /etc/ na większości serwerów Linux.

Oto szczegółowy przewodnik dotyczący stosowania parametrów buforowania:

**Krok 1: Otwórz plik konfiguracyjny MySQL**

Otwórz plik my.cnf do edycji. W zależności od systemu może być konieczne wykonanie polecenia jako administrator:

sudo nano /etc/mysql/my.cnf

**Krok 2: Znajdź sekcję [mysqld]**

Aby parametry buforowania działały na serwerze MySQL, muszą być włączone w sekcji [mysqld].

**Krok 3: Wprowadzenie parametrów buforowania**

Skopiuj poniższe konfiguracje i zastosuj je w dokumencie my.cnf w sekcji [mysqld]:

[mysqld]

query_cache_type = 1  # Aktywacja buforowania zapytań

query_cache_size = 64M  # Ustalenie rozmiaru buforu 

query_cache_limit = 1M # Maksymalny rozmiar wyniku zapytania do buforowania

table_open_cache = 2000  # Całkowita liczba tabel przechowywanych w pamięci podręcznej

thread_cache_size = 50 # Liczba wątków, które mogą być przechowywane w pamięci podręcznej

  
![Jak skonfigurować i zoptymalizować serwer MySQL na VPS - 3](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/seo%40server-panel.net/2024/11/25/screenshot_3_q50.jpg)

**Uwaga:** Ustawione wartości, na przykład 64M dla query_cache_size, można zmienić według własnych potrzeb.

**Krok 4: Zrestartuj MySQL, aby zmiany weszły w życie**

Po edytowaniu należy zapisać plik i wyjść z edytora. W tym celu należy zrestartować MySQL za pomocą polecenia:

sudo systemctl restart mysql

  
![Jak skonfigurować i zoptymalizować serwer MySQL na VPS - 4](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/seo%40server-panel.net/2024/11/25/screenshot_4_q50.jpg)

Sprawdzenie ustawień buforowania

Aby sprawdzić, czy zmiany weszły w życie, należy wykonać polecenie:

SHOW VARIABLES LIKE 'query_cache%';

SHOW VARIABLES LIKE 'table_open_cache';

SHOW VARIABLES LIKE 'thread_cache_size';

Te polecenia wyświetlą aktualny stan parametrów, pozwalając sprawdzić ich poprawność i w razie potrzeby dostosować ustawienia.

2\. Indeksowanie tabel

Indeksowanie w MySQL — to metoda poprawy wydajności, która pozwala zoptymalizować wyszukiwanie i pobieranie informacji z bazy danych. Indeksy są tworzone dla kolumn tabel i pomagają serwerowi MySQL szybciej znajdować wiersze, które spełniają warunki zapytania, poprzez zmniejszenie liczby przeszukiwanych wierszy. Podobnie jak spis treści w książce, indeks wskazuje, gdzie można znaleźć potrzebne dane, nie przeszukując całego zbioru informacji.

**Dlaczego potrzebne jest indeksowanie?**

  1. **Przyspieszenie zapytań** : indeksy zapewniają szybsze wykrywanie i pobieranie informacji przez serwer MySQL, co znacznie zwiększa efektywność przetwarzania zapytań.

  2. **Zmniejszenie obciążenia serwera** : liczba operacji we/wy, dzięki indeksowaniu, staje się mniejsza, co ułatwia przetwarzanie zapytań i w rezultacie zmniejsza obciążenie serwera.

  3. **Optymalizacja operacji łączenia (JOIN)** : indeksy pomagają szybciej znajdować i porównywać wiersze podczas łączenia kilku tabel.

  4. **Poprawa sortowania i grupowania** : przy użyciu indeksów MySQL może szybciej wykonywać operacje ORDER BY i GROUP BY.




**Kiedy i jakie indeksy stosować?**

  * **Klucz główny (PRIMARY KEY)** : tworzony dla unikalnego identyfikatora każdego rekordu (np. identyfikator użytkownika). MySQL automatycznie tworzy indeks dla klucza głównego.

  * **Indeksy unikalne (UNIQUE)** : stosowane dla pól, których wartości muszą być unikalne (np. email).

  * **Indeksy zwykłe (INDEX)** : przydatne dla kolumn często używanych w warunkach wyszukiwania WHERE lub w łączeniach JOIN.

  * **Indeksy złożone** : indeksują jednocześnie kilka kolumn, co jest wygodne do optymalizacji złożonych zapytań z wieloma warunkami.




**Przykłady zastosowania indeksowania**

Przyjrzyjmy się kilku rzeczywistym przypadkom, w których stosowane są indeksy.

**1\. Indeksowanie kolumny z częstymi zapytaniami**

Załóżmy, że mamy tabelę orders zawierającą kolumny id, customer_id oraz status. Jeśli zapytania często wybierają zamówienia według statusu, to aby znacznie zwiększyć szybkość wykonywania takich zapytań, należy stworzyć indeks dla kolumny status.

CREATE INDEX idx_status ON orders(status);

Po wykonaniu zapytania:

SELECT * FROM orders WHERE status = 'completed';

MySQL będzie używać indeksu do szybkiego wyszukiwania wierszy z status = 'completed', nie przeszukując wszystkich wierszy tabeli.

**2\. Indeksy unikalne dla ograniczenia danych**

Jeśli chcemy ograniczyć duplikację w polu email tabeli users, możemy stworzyć unikalny indeks:

CREATE UNIQUE INDEX idx_email ON users(email);

Teraz próba wstawienia powtarzającego się emaila spowoduje błąd, ponieważ unikalny indeks zabrania duplikatów.

**3\. Indeksy dla złożonych zapytań, składające się z kilku komponentów**

Kiedy mamy zapytania, które często wybierają dane według kilku pól, na przykład według firstname i lastname w tabeli employees, można stworzyć złożony indeks:

CREATE INDEX idx_name ON employees(firstname, lastname);

Teraz, przy wykonaniu polecenia:

SELECT * FROM employees WHERE firstname = 'John' AND lastname = 'Doe';

Wybór będzie przeprowadzany szybciej, ponieważ MySQL będzie używać złożonego indeksu i nie będzie już potrzeby sprawdzania wszystkich rekordów.

**Indeksy: utrzymanie i aktualizacja**

Warto pamiętać, że główna rekomendacja polega na tym, że indeksowanie powinno dotyczyć tylko kolumn, które często uczestniczą w zapytaniach, a także od czasu do czasu przeglądać ich aktualność. Indeksy aktywnie wykorzystują przestrzeń dyskową, znacznie spowalniają proces aktualizacji, usuwania rekordów oraz wstawiania. Powodem tego jest konieczność przeliczenia przy każdej zmianie danych.

**Indeksy: przykład monitorowania**

Możesz skorzystać z następującego polecenia, aby zobaczyć indeksy:

SHOW INDEX FROM orders;

Daje to nam informacje o tym, jakie indeksy zostały utworzone, ich typ oraz na jakie kolumny są stosowane.

3\. Ustawienia parametrów połączeń

Parametry odpowiadające za liczbę jednoczesnych połączeń pozwalają elastycznie zarządzać obciążeniem serwera. Główne parametry:

  * max_connections — maksymalna liczba połączeń.

  * wait_timeout — czas oczekiwania na zakończenie nieaktywnych połączeń.




[mysqld]

max_connections = 200

wait_timeout = 600

Wsparcie i monitorowanie MySQL

Aby utrzymać wydajność MySQL, ważne jest, aby monitorować jego stan i okresowo przeprowadzać optymalizację. Użyj następujących podejść:

  * Monitorowanie procesów MySQL: aby obserwować wykonywane zapytania, można używać poleceń SHOW PROCESSLIST lub specjalistycznych narzędzi.




Regularnie przeprowadzaj proces optymalizacji tabel, stosując odpowiednie polecenie:  
OPTIMIZE TABLE table_name;

  * Automatyzacja monitorowania: Skonfiguruj monitorowanie za pomocą takich narzędzi, jak MySQL Workbench, Percona Monitoring and Management lub Grafana, aby stale obserwować wydajność.




Podsumowanie

Konfiguracja i optymalizacja MySQL na [VPS](https://zomro.com/pl/vps) pomagają zwiększyć efektywność i stabilność działania aplikacji. Stosując opisane metody, możesz poprawić szybkość przetwarzania danych, zmniejszyć opóźnienia i zwiększyć niezawodność działania serwera MySQL. Regularne aktualizacje i monitorowanie ustawień pomagają utrzymać wysoką wydajność w dłuższej perspektywie.

Indeksowanie — to ważna technika optymalizacji wydajności MySQL. Zyskuje szczególną efektywność przy pracy z zapytaniami zawierającymi filtrowanie i sortowanie, a także z dużymi tabelami. W przypadku prawidłowego stosowania indeksów znacznie poprawia się szybkość działania bazy danych. Niemniej jednak ważne jest, aby pamiętać o ostrożnym ich stosowaniu, z naprawdę istotnymi kolumnami do spełnienia warunków wyszukiwania, sortowania lub łączenia.

Similar articles:

[Jak zobaczyć logi shutdown i restart w Windows Server](https://zomro.com/pl/blog/faq/258-kak-posmotret-logi-shutdown-i-restart-v-windows-server) [Czyszczenie starych logów i plików tymczasowych na serwerach Linux](https://zomro.com/pl/blog/faq/371-cleaning-up-old-logs-and-temporary-files-on-linux-servers) [Jak zainstalować Redis w Dockerze i Docker Compose](https://zomro.com/pl/blog/faq/301-kak-ustanovit-redis-v-docker) [Jak połączyć się z serwerem za pomocą FTP, SFTP i SCP](https://zomro.com/pl/blog/faq/144-kak-podkljuchitsja-k-serveru-po-ftp-sftp-i-scp) [Jak przekazać kamerę internetową na zdalny pulpit](https://zomro.com/pl/blog/faq/265-kak-prokinut-veb-kameru-na-udalennyj-rabochij-stol)

[ Serwery dedykowane od €74.24/mies ](/pl/dedicated-servers)
