MySQLTuner көмегімен MySQL-ды оңтайландыру
MySQLTuner — MySQL жұмысын талдап, оны оңтайландыру бойынша ұсыныстар беретін құрал.
Бұл құралды жүктеп алу үшін келесі команданы орындаңыз:
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
Құралды іске қоспас бұрын MySQL сервері MySQLTuner толыққанды талдау үшін жеткілікті деректер жинай алуы үшін шамамен бір тәулік бойы қайта жүктелмей және конфигурациясы өзгертілмей жұмыс істеуі керек. Әйтпесе құралдың нәтижелері аз ақпарат береді.
Құралды мына командамен іске қосыңыз:
perl mysqltuner.pl
MySQLTuner нәтижесі бірнеше бөлімнен тұрады және шамамен былай көрінеді (нақты шығыс әлдеқайда толық әрі ұзын болады):
root@server:~# perl mysqltuner.pl
>> MySQLTuner 1.7.19 - Major Hayden <[email protected]>;
>> Bug reports, feature requests, and downloads at http://mysqltuner.pl/
>> Run with '--help' for additional options and output filtering
[--] Skipped version check for MySQLTuner script
[OK] Logged in using credentials from Debian maintenance account.
-------- Log file Recommendations ---------------------------------------------
[OK] Log file /var/log/mysql/error.log exists
[--] Log file: /var/log/mysql/error.log(0B)
[OK] Log file /var/log/mysql/error.log is readable.
[!!] Log file /var/log/mysql/error.log is empty
-------- Security Recommendations ---------------------------------------------
[OK] There are no anonymous accounts for any database users
[!!] User 'root@localhost' has no password set.
[!!] User 'user1@%' does not specify hostname restrictions.
[!!] User 'user@%' does not specify hostname restrictions.
-------- Performance Metrics --------------------------------------------------
[--] Galera GCache Max memory usage: 0B
[OK] Maximum reached memory usage: 243.2M (12.20% of installed RAM)
[!!] Maximum possible memory usage: 2.7G (138.90% of installed RAM)
[!!] Overall possible memory usage with other process exceeded memory
-------- InnoDB Metrics -------------------------------------------------------
[--] InnoDB is enabled.
[--] InnoDB Thread Concurrency: 0
[OK] InnoDB File per table is activated
[OK] InnoDB buffer pool / data size: 128.0M/416.0K
-------- Recommendations ------------------------------------------------------
General recommendations:
Set up a Secure Password for root@localhost user: SET PASSWORD FOR 'root'@'SpecificDNSorIp' = PASSWORD('secure_password');
Restrict Host for 'user1'@% to user1@SpecificDNSorIp
UPDATE mysql.user SET host ='SpecificDNSorIp' WHERE user='user1' AND host ='%'; FLUSH PRIVILEGES;
Dedicate this server to your database for highest performance.
Reduce or eliminate unclosed connections and network issues
Configure your accounts with ip or subnets only, then update your configuration with skip-name-resolve=1
Before changing innodb_log_file_size and/or innodb_log_files_in_group read this: https://bit.ly/2TcGgtU
Variables to adjust:
*** MySQL's maximum memory usage is dangerously high ***
*** Add RAM before increasing MySQL buffer variables ***
query_cache_size (=0)
query_cache_type (=0)
query_cache_limit (> 1M, or use smaller result sets)
innodb_log_file_size should be (=16M) if possible, so InnoDB total log files size equals to 25% of buffer pool size.
[!!] белгісімен белгіленген жолдарды мұқият зерделеңіз, сондай-ақ соңғы Recommendations (ұсыныстар) блогындағы ұсыныстар жиынтығына назар аударыңыз.
Variables to adjust (баптауға арналған айнымалылар) бөлімінде көрсетілген параметрлерді MySQL конфигурациялық файлында өзгерту керек. Егер көрсетілген параметр файлда болмаса, оны қолмен қосу қажет.
MySQL конфигурациялық файлының орны операциялық жүйеге байланысты әртүрлі болуы мүмкін.
Debian/Ubuntu жүйелерінде файл мына жолда орналасқан:
/etc/mysql/my.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
CentOS жүйесінде конфигурациялық файл мына жерде орналасқан:
/etc/my.cnf
/etc/mysql/my.cnf
Конфигурациялық файлға әр өзгеріс енгізгеннен кейін MySQL қызметін қайта іске қосу қажет:
systemctl restart mysql
Қосымша кеңестер
1. Конфигурациялық файлға өзгеріс енгізбес бұрын оның сақтық көшірмесін жасаңыз (командада нақты жолды көрсетіңіз):
cp /etc/mysql/my.cnf ~/my.cnf.backup
2. Өзгерістер енгізгеннен кейін серверге шамамен бір тәулік жұмыс істеуге мүмкіндік беріп, содан кейін MySQLTuner-ді қайта іске қосыңыз. Бұл MySQL-дың жаңа баптаулармен жұмысын талдап, оңтайландыруды жалғастыруға мүмкіндік береді.
3. MySQLTuner ұсыныстары бойынша өзгерістерді біртіндеп енгізіп, әр өзгерістен кейін сервердің жұмысын мұқият бақылаңыз. Бұл кез келген мәселені тез анықтап, жоюға және қажет болса, қалаусыз өзгерістерді кері қайтаруға көмектеседі.
Баптауларға өзгеріс енгізгеннен кейін MySQL қызметін қайта іске қосуды ұмытпаңыз.