opened image

MySQL серверін VPS-те қалай баптап, оңтайландыруға болады

Ең көп таралған және танымал реляциялық деректер базасы MySQL болып табылады.  Веб-қосымшалар мен қызметтер көбінесе осы деректер базасында құрылады. Алайда, тұрақты жұмыс пен жоғары өнімділікке қол жеткізу үшін MySQL-ды дұрыс конфигурациялау қажет, әсіресе оны VPS-те іске қосқанда. MySQL серверін оңтайландыру ресурстарды тиімді пайдалануға және сұрауларға жауап беру уақытын жақсартуға мүмкіндік береді, бұл әсіресе жоғары жүктемесі бар қосымшалар үшін маңызды.

 

MySQL: VPS-те орнату

 

MySQL-ды серверіңізге орнату оңтайландыру процесін бастамас бұрын қажет. Мұны қалай жасауға болатынын түсіну үшін, екі операциялық жүйе үшін осы процестің қадамдық нұсқаулығын ұсынамыз. 

 

Ubuntu/Debian үшін орнату процесі

 

  1. Жаңа нұсқадағы пакет менеджерін орнатыңыз:
    sudo apt update

      2. MySQL-ды орнатыңыз:
            sudo apt install mysql-server


 

3. Келесі қадам MySQL-ды жұмыс жағдайына келтіру, содан кейін операциялық жүйеңіз жүктелген кезде автоматты түрде іске қосылуын конфигурациялау:
sudo systemctl start mysql
sudo systemctl enable mysql

 

 

CentOS/RHEL үшін орнату процесі

 

  1. MySQL-ды репозиторийден орнату қажет:
    sudo yum install mysql-server

  2. Келесі қадам MySQL-ды жұмыс жағдайына келтіру және автоматты іске қосу конфигурациясын орнату:
    sudo systemctl start mysqld
    sudo systemctl enable mysqld

  3. Қауіпсіздікті жақсарту үшін бастапқы конфигурацияны іске қосыңыз:
    sudo mysql_secure_installation

 

MySQL: оңтайландыру процесі

 

Өнімділікті арттыру үшін MySQL конфигурациясын өзгерту қажет, орнату процесі аяқталғаннан кейін. Оңтайландыру бірнеше бағыттарды қамтиды: кэштеу, индекстеу және конфигурация параметрлерін орнату.

1. Кэштеу параметрлері

MySQL-дағы кэштеу жиі сұралатын деректерді сақтауға мүмкіндік береді, бұл деректер базасына жүктемені азайтады және жауап беру уақытын жылдамдатады. Кэштеуді конфигурациялау үшін негізгі параметрлердің тізімін ұсынамыз:

  • query_cache_size — сұрау кэшінің көлемі. Үлкен көлем өнімділікті жақсартады.

  • query_cache_limit — кэштеуге болатын нәтижелердің көлемі.

  • innodb_buffer_pool_size — InnoDB үшін негізгі параметр, кэште деректер мен индекстерді сақтау үшін бөлінген жад көлемін орнатады.

MySQL кэштеу конфигурациясы кезінде өзгерістер көбінесе /etc/mysql/ немесе /etc/ директориясында орналасқан my.cnf файлына енгізіледі.

Кэштеу параметрлерін қолдану үшін мынадай егжей-тегжейлі нұсқаулық:

 

1-қадам: MySQL конфигурация файлын ашыңыз

Редакциялау үшін my.cnf файлын ашыңыз. Жүйеге байланысты, әкімші атынан команданы орындау қажет болуы мүмкін:

sudo nano /etc/mysql/my.cnf

 

2-қадам: [mysqld] бөлімін табыңыз

Кэштеу параметрлері MySQL серверінде жұмыс істеуі үшін оларды [mysqld] бөлімінде қосу қажет.

 

3-қадам: Кэштеу параметрлерін енгізу

Төменде көрсетілген конфигурацияларды көшіріп, my.cnf құжатына [mysqld] бөлімінің астына енгізіңіз:

 

[mysqld]

query_cache_type = 1          # Сұрау кэшін қосу

query_cache_size = 64M        # Кэш көлемін анықтау 

query_cache_limit = 1M        # Кэштеуге болатын сұрау нәтижесінің шегі

table_open_cache = 2000       # Кэште сақталатын жалпы кесте саны

thread_cache_size = 50        # Кэште сақталатын ағындар саны


 

Ескерту: Орнатылған мәндер, мысалы, query_cache_size үшін 64M, қажеттіліктеріңізге қарай өзгертілуі мүмкін.

4-қадам: Өзгерістер күшіне енуі үшін MySQL-ды қайта іске қосыңыз

Редакциялаудан кейін файлды сақтап, редактордан шығыңыз. Ол үшін MySQL-ды келесі команданы пайдаланып қайта жүктеу қажет:

sudo systemctl restart mysql


 

Кэштеу конфигурациясын тексеру

Өзгерістердің күшіне енгенін тексеру үшін келесі команданы орындау қажет:

SHOW VARIABLES LIKE 'query_cache%';

SHOW VARIABLES LIKE 'table_open_cache';

SHOW VARIABLES LIKE 'thread_cache_size';

 

Бұл командалар параметрлердің ағымдағы күйін көрсетеді, олардың дұрыстығын тексеруге және қажет болған жағдайда параметрлерді нақтылауға мүмкіндік береді.

2. Кестелерді индекстеу

MySQL-дағы индекстеу — бұл өнімділікті жақсарту әдісі, ол деректер базасынан ақпаратты іздеу мен алу процесін оңтайландыруға мүмкіндік береді. Индекстер кесте бағандары үшін жасалады және MySQL серверіне сұрау шарттарына сәйкес келетін жолдарды жылдам табуға көмектеседі, бұл қаралатын жолдар санын азайтады. Кітаптағы мазмұн сияқты, индекс қажетті деректерді табу үшін барлық ақпарат массивін қараусыз қалдыруға мүмкіндік береді.

Индекстеу не үшін қажет?

  1. Сұрауларды жылдамдату: индекстер MySQL серверінің ақпаратты жылдам табуы мен алуы үшін тиімділікті арттырады, бұл сұрауларды өңдеу тиімділігін едәуір арттырады.

  2. Сервер жүктемесін азайту: индекстеу арқасында енгізу-шығару саны азаяды, бұл сұрауларды өңдеуді жеңілдетеді және, нәтижесінде, сервер жүктемесінің азаюына ықпал етеді.

  3. JOIN операцияларын оңтайландыру: индекстер бірнеше кестелерді біріктіргенде жолдарды жылдам табуға және сәйкестендіруге көмектеседі.

  4. Сұрыптау мен топтастыруды жақсарту: индекстерді қолданған кезде MySQL ORDER BY және GROUP BY операцияларын жылдам орындауға мүмкіндік береді.

 

Қашан және қандай индекстерді қолдану керек?

  • Бастапқы кілт (PRIMARY KEY): әр жазбаның (мысалы, пайдаланушы идентификаторы) бірегей идентификаторы үшін жасалады. MySQL автоматты түрде бастапқы кілт үшін индекс жасайды.

  • Бірегей индекстер (UNIQUE): мәндері бірегей болуы тиіс өрістер үшін қолданылады (мысалы, электрондық пошта).

  • Әдеттегі индекстер (INDEX): WHERE шарттарында немесе JOIN біріктірулерінде жиі қолданылатын бағандар үшін пайдалы.

  • Кешенді индекстер: бірнеше бағанды бірден индекстеу, бұл бірнеше шарттары бар күрделі сұрауларды оңтайландыру үшін ыңғайлы.

 

Индекстеуді қолдану мысалдары

 

Индекстерді қолданатын бірнеше нақты жағдайларды қарастырайық.

1. Жиі сұралатын бағанды индекстеу

Мысалы, orders кестесінде id, customer_id және status бағандары бар делік. Егер сұраулар жиі статус бойынша тапсырыстарды таңдаса, онда статус бағаны үшін индекс жасау қажет.

CREATE INDEX idx_status ON orders(status);

Сұрауды орындағаннан кейін:

SELECT * FROM orders WHERE status = 'completed';

MySQL статус = 'completed' жолдарын жылдам табу үшін индексті пайдаланады, кестенің барлық жолдарын қараусыз қалдырмайды.

 

2. Деректерді шектеу үшін бірегей индекстер

Егер біз users кестесіндегі email өрісінде дубликаттарды шектеуді қаласақ, бірегей индекс жасауға болады:

CREATE UNIQUE INDEX idx_email ON users(email);

Енді қайталанатын электрондық поштаны енгізуге тырысқанда, бірегей индекс дубликаттарды тыйым салатындықтан, қате пайда болады.

 

3. Бірнеше компоненттен тұратын күрделі сұраулар үшін индекстер

Егер бізде бірнеше өріс бойынша, мысалы, employees кестесінде firstname және lastname бойынша деректерді жиі таңдайтын сұраулар болса, онда кешенді индекс жасауға болады:

CREATE INDEX idx_name ON employees(firstname, lastname);

Енді команданы орындаған кезде:

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

Таңдау жылдам жүргізіледі, өйткені MySQL кешенді индексті пайдаланады және барлық жазбаларды тексерудің қажеті жоқ.

Индекстер: қолдау және жаңарту

Есіңізде болсын, негізгі ұсыныс - индекстеуді тек сұрауларда жиі қолданылатын бағандарға жүргізу, сондай-ақ олардың өзектілігін уақыт өте келе қайта қарау. Себебі индекстер дискілік кеңістікті белсенді пайдаланады, жаңартулар, жазбаларды жою және енгізу процестерін едәуір баяулатады. Бұл деректер өзгерген сайын қайта есептеу қажеттілігіне байланысты.

Индекстер: мониторинг мысалы

Индекстерді көру үшін келесі команданы пайдалана аласыз:

SHOW INDEX FROM orders;

Бұл бізге қандай индекстердің жасалғаны, олардың түрі және қандай бағандарға қолданылатыны туралы ақпарат береді.

3. Қосылым параметрлерін конфигурациялау

Бір уақытта қосылымдар санына жауап беретін параметрлер сервер жүктемесін икемді басқаруға мүмкіндік береді. Негізгі параметрлер:

  • max_connections — максималды қосылым саны.

  • wait_timeout — белсенді емес қосылымдардың аяқталуын күту уақыты.

[mysqld]

max_connections = 200

wait_timeout = 600

MySQL-ды қолдау және мониторинг

MySQL өнімділігін сақтау үшін оның күйін бақылау және уақытында оңтайландыру жүргізу маңызды. Келесі тәсілдерді пайдаланыңыз:

  • MySQL процестерін мониторинг: орындалып жатқан сұрауларды бақылау үшін SHOW PROCESSLIST командаларын немесе арнайы утилиталарды пайдалануға болады.

Кестелерді оңтайландыру процесін жүйелі түрде жүргізіңіз, тиісті команданы қолданып:
OPTIMIZE TABLE table_name;

  • Мониторингті автоматтандыру: MySQL Workbench, Percona Monitoring and Management немесе Grafana сияқты құралдарды пайдаланып, өнімділікті тұрақты бақылау үшін мониторингті орнатыңыз.

 

 

Қорытынды

MySQL-ды VPS платформасында конфигурациялау және оңтайландыру қосымшалардың тиімділігі мен тұрақтылығын арттыруға көмектеседі. Сипатталған әдістерді қолдана отырып, деректерді өңдеу жылдамдығын арттыруға, кідірістерді азайтуға және MySQL серверінің жұмыс сенімділігін арттыруға болады. Параметрлерді жүйелі түрде жаңарту және мониторинг жүргізу ұзақ мерзімді перспективада жоғары өнімділікті сақтауға көмектеседі.

Индекстеу — MySQL өнімділігін оңтайландырудың маңызды техникасы. Ол фильтрация мен сұрыптауды қамтитын сұраулармен, сондай-ақ үлкен кестелермен жұмыс істегенде ерекше тиімділікке ие. Индекстерді дұрыс қолданған жағдайда деректер базасының жұмыс жылдамдығы айтарлықтай жақсарады. Дегенмен, индекстерді қолдануда абай болу маңызды, тек іздеу, сұрыптау немесе біріктіру шарттарын орындау үшін шын мәнінде маңызды бағандарға қатысты.