MySQL the.cnf recommended settings MariaDB 10.2

mariadbMySQL

I am a beginner managing a server and I have a problem after upgrading from MySQL 5.7 to MariaDB 10.2. Performance usage is very high: 191%. Can somebody help optimize values in my.cnf for a database server with the following specifications:

> Architecture:          x86_64
> 
> CPU op-mode(s):        32-bit, 64-bit
> 
> Byte Order:            Little Endian
> 
> CPU(s):                2
> 
> On-line CPU(s) list:   0,1
> 
> Thread(s) per core:    1
> 
> Core(s) per socket:    1
> 
> Socket(s):             2
> 
> NUMA node(s):          1
> 
> Vendor ID:             GenuineIntel
> 
> CPU family:            6
> 
> Model:                 79
> 
> Model name:            Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz
> 
> Stepping:              1
> 
> CPU MHz:               2199.998
> 
> BogoMIPS:              4399.99
> 
> Virtualization:        VT-x
> 
> Hypervisor vendor:     KVM
> 
> Virtualization type:   full
> 
> L1d cache:             32K
> 
> L1i cache:             32K
> 
> L2 cache:              4096K
> 
> L3 cache:              16384K
> 
> NUMA node0 CPU(s):     0,1

and MySQLTuner:

> >>  MySQLTuner 1.7.14 - Major Hayden <major@mhtx.net>
> 
>  >>  Bug reports, feature requests, and downloads at http://mysqltuner.com/
> 
>  >>  Run with '--help' for additional options and output filtering
> 
> [--] Skipped version check for MySQLTuner script
> 
> [OK] Currently running supported MySQL version 10.2.21-MariaDB
> 
> [OK] Operating on 64-bit architecture
> 
> -------- Log file Recommendations ----------------------------------------------
> -------------------- [--] Log file: /var/lib/mysql/mvpiot.novalocal.err(513K)
> 
> [OK] Log file /var/lib/mysql/mvpiot.novalocal.err exists
> 
> [OK] Log file /var/lib/mysql/mvpiot.novalocal.err is readable.
> 
> [OK] Log file /var/lib/mysql/mvpiot.novalocal.err is not empty
> 
> [OK] Log file /var/lib/mysql/mvpiot.novalocal.err is smaller than 32
> Mb
> 
> [!!] /var/lib/mysql/mvpiot.novalocal.err contains 1146 warning(s).
> 
> [!!] /var/lib/mysql/mvpiot.novalocal.err contains 2355 error(s).
> 
> [--] 37 start(s) detected in /var/lib/mysql/mvpiot.novalocal.err
> 
> 
> [--] 1) 2019-01-12  8:25:46 140431271381184 [Note] /usr/sbin/mysqld:
> ready for connections.
> 
> [--] 2) 2019-01-12  7:29:03 140574858127552 [Note] /usr/sbin/mysqld:
> ready for connections.
> 
> [--] 3) 2019-01-11 18:39:26 140560611846336 [Note] /usr/sbin/mysqld:
> ready for connections. [--] 4) 2019-01-11 17:00:17 140623437183168
> [Note] /usr/sbin/mysqld: ready for connections. [--] 5) 2019-01-11
> 16:30:08 140674500737216 [Note] /usr/sbin/mysqld: ready for
> connections. [--] 6) 2019-01-11 14:55:17 140065307875520 [Note]
> /usr/sbin/mysqld: ready for connections. [--] 7) 2019-01-11 13:34:41
> 140588138420416 [Note] /usr/sbin/mysqld: ready for connections. [--]
> 8) 2019-01-11 13:01:12 139932833945792 [Note] /usr/sbin/mysqld: ready
> for connections. [--] 9) 2019-01-11 12:27:23 140694443542720 [Note]
> /usr/sbin/mysqld: ready for connections. [--] 10) 2019-01-11 12:08:55
> 139655472789696 [Note] /usr/sbin/mysqld: ready for connections. [--] 9
> shutdown(s) detected in /var/lib/mysql/mvpiot.novalocal.err [--] 1)
> 2019-01-10 18:03:26 139706578528000 [Note] /usr/sbin/mysqld: Shutdown
> complete [--] 2) 2019-01-10 17:48:26 140143107737344 [Note]
> /usr/sbin/mysqld: Shutdown complete [--] 3) 2019-01-10 17:45:56
> 140094187407104 [Note] /usr/sbin/mysqld: Shutdown complete [--] 4)
> 2019-01-10 17:42:51 139985407059712 [Note] /usr/sbin/mysqld: Shutdown
> complete [--] 5) 2019-01-10 17:26:12 140542010558208 [Note]
> /usr/sbin/mysqld: Shutdown complete [--] 6) 2019-01-10 17:26:09
> 140119564142336 [Note] /usr/sbin/mysqld: Shutdown complete [--] 7)
> 2019-01-10 13:42:59 140154423613184 [Note] /usr/sbin/mysqld: Shutdown
> complete [--] 8) 2019-01-10  9:21:20 140596763801344 [Note]
> /usr/sbin/mysqld: Shutdown complete [--] 9) 2019-01-10  9:21:18
> 139833937012480 [Note] /usr/sbin/mysqld: Shutdown complete
> 
> 
> -------- Storage Engine Statistics -----------------------------------------------------------------
> 
> [--] Status: +Aria +CSV +InnoDB +MEMORY +MRG_MyISAM +MyISAM
> +PERFORMANCE_SCHEMA +SEQUENCE
> 
> [--] Data in Aria tables: 192.0K (Tables: 6)
> 
> [--] Data in MyISAM tables: 15.5M (Tables: 85)
> 
> [--] Data in InnoDB tables: 140.7M (Tables: 87)
> 
> [OK] Total fragmented tables: 0
> 
> 
> -------- Analysis Performance Metrics --------------------------------------------------------------
> 
> [--] innodb_stats_on_metadata: OFF
> 
> [OK] No stat updates during querying INFORMATION_SCHEMA.
> 
> 
> -------- Security Recommendations ------------------------------------------------------------------
> 
> [OK] There are no anonymous accounts for any database users
> 
> [OK] All database users have passwords assigned
> 
> [!!] There is no basic password file list!
> 
> 
> -------- CVE Security Recommendations --------------------------------------------------------------
> 
> [--] Skipped due to --cvefile option undefined
> 
> 
> -------- Performance Metrics -----------------------------------------------------------------------
> 
> [--] Up for: 1h 26m 8s (432K q [83.607 qps], 20K conn, TX: 710M, RX:
> 32M)
> 
> [--] Reads / Writes: 97% / 3%
> 
> [--] Binary logging is disabled
> 
> [--] Physical Memory     : 3.9G
> 
> [--] Max MySQL memory    : 2.9G
> 
> [--] Other process memory: 0B
> 
> [--] Total buffers: 672.0M global + 4.5M per thread (500 max threads)
> 
> [--] P_S Max memory usage: 0B
> 
> [--] Galera GCache Max memory usage: 0B
> 
> [OK] Maximum reached memory usage: 1016.7M (25.74% of installed RAM)
> 
> [OK] Maximum possible memory usage: 2.9G (74.41% of installed RAM)
> 
> [OK] Overall possible memory usage with other process is compatible
> with memory available
> 
> [OK] Slow queries: 0% (0/432K)
> 
> [OK] Highest usage of available connections: 15% (76/500)
> 
> [OK] Aborted connections: 0.39%  (82/20849)
> 
> [!!] name resolution is active : a reverse name resolution is made for
> each new connection and can reduce performance
> 
> [!!] Query cache may be disabled by default due to mutex contention.
> 
> [OK] Query cache efficiency: 39.5% (237K cached / 602K selects)
> 
> [OK] Query cache prunes per day: 0
> 
> [OK] Sorts requiring temporary tables: 0% (0 temp sorts / 129 sorts)
> 
> [!!] Joins performed without indexes: 23
> 
> [OK] Temporary tables created on disk: 21% (296 on disk / 1K total)
> 
> [OK] Thread cache hit rate: 99% (76 created / 20K connections)
> 
> [OK] Table cache hit rate: 94% (319 open / 339 opened)
> 
> [OK] Open file limit used: 1% (188/10K)
> 
> [OK] Table locks acquired immediately: 100% (7K immediate / 7K locks)
> 
> 
> -------- Performance schema ------------------------------------------------------------------------
> 
> [--] Performance schema is disabled.
> 
> [--] Memory used by P_S: 0B
> 
> [--] Sys schema is installed.
> 
> 
> -------- ThreadPool Metrics ------------------------------------------------------------------------
> 
> [--] ThreadPool stat is enabled.
> 
> [--] Thread Pool Size: 2 thread(s).
> 
> [--] Using default value is good enough for your version
> (10.2.21-MariaDB)
> 
> 
> -------- MyISAM Metrics ----------------------------------------------------------------------------
> 
> [!!] Key buffer used: 18.4% (24M used / 134M cache)
> 
> [OK] Key buffer size / total MyISAM indexes: 128.0M/9.4M
> 
> [OK] Read Key buffer hit rate: 99.4% (748K cached / 4K reads)
> 
> [!!] Write Key buffer hit rate: 1.3% (255K cached / 3K writes)
> 
> 
> -------- InnoDB Metrics ----------------------------------------------------------------------------
> 
> [--] InnoDB is enabled.
> 
> [--] InnoDB Thread Concurrency: 0
> 
> [OK] InnoDB File per table is activated
> 
> [!!] InnoDB buffer pool / data size: 128.0M/140.7M
> 
> [!!] Ratio InnoDB log file size / InnoDB Buffer pool size (75 %):
> 48.0M * 2/128.0M should be equal 25%
> 
> [OK] InnoDB buffer pool instances: 1
> 
> [--] Number of InnoDB Buffer Pool Chunk : 1 for 1 Buffer Pool
> Instance(s)
> 
> [OK] Innodb_buffer_pool_size aligned with
> Innodb_buffer_pool_chunk_size & Innodb_buffer_pool_instances
> 
> [OK] InnoDB Read buffer efficiency: 100.00% (532580940 hits/ 532588160
> total)
> 
> [!!] InnoDB Write Log efficiency: 51.86% (13396 hits/ 25832 total)
> 
> [OK] InnoDB log waits: 0.00% (0 waits / 12436 writes)
> 
> 
> -------- AriaDB Metrics ----------------------------------------------------------------------------
> 
> [--] AriaDB is enabled.
> 
> [OK] Aria pagecache size / total Aria indexes: 128.0M/96.0K
> 
> [!!] Aria pagecache hit rate: 79.6% (1K cached / 302 reads)
> 
> 
> -------- TokuDB Metrics ----------------------------------------------------------------------------
> 
> [--] TokuDB is disabled.
> 
> 
> -------- XtraDB Metrics ----------------------------------------------------------------------------
> 
> [--] XtraDB is disabled.
> 
> 
> -------- Galera Metrics ----------------------------------------------------------------------------
> 
> [--] Galera is disabled.
> 
> 
> -------- Replication Metrics -----------------------------------------------------------------------
> 
> [--] Galera Synchronous replication: NO
> 
> [--] No replication slave(s) for this server.
> 
> [--] Binlog format: MIXED
> 
> [--] XA support enabled: ON
> 
> [--] Semi synchronous replication Master: Not Activated
> 
> [--] Semi synchronous replication Slave: Not Activated
> 
> [--] This is a standalone server
> 
> 
> -------- Recommendations ---------------------------------------------------------------------------
> 
> General recommendations:
> 
>     Control warning line(s) into /var/lib/mysql/mvpiot.novalocal.err file
> 
>     Control error line(s) into /var/lib/mysql/mvpiot.novalocal.err file
> 
>     MySQL was started within the last 24 hours - recommendations may be inaccurate
> 
>     Configure your accounts with ip or subnets only, then update your configuration with skip-name-resolve=1
> 
>     Adjust your join queries to always utilize indexes
> 
>     Performance schema should be activated for better diagnostics
> 
>     Before changing innodb_log_file_size and/or innodb_log_files_in_group read this: https://bit.ly/2TcGgtU
> 
> Variables to adjust:
> 
>     query_cache_size (=0)
> 
>     query_cache_type (=0)
> 
>     join_buffer_size (> 1.0M, or always use indexes with JOINs)
> 
>     performance_schema = ON enable PFS
> 
>     innodb_buffer_pool_size (>= 140.7M) if possible.
> 
>     innodb_log_file_size should be (=16M) if possible, so InnoDB total log files size equals to 25% of buffer pool size.

If anyone has an optimized my.cnf, can you give it to me?

Best Answer

How is "performance usage" measured?

The main tunable is innodb_buffer_pool_size. It should be about 70% of available RAM. The other things in my.cnf should not be changed without first understanding the situation. (The 128MB default is OK until your table get a bunch bigger.)

High CPU usage is almost always caused by lack of an optimal INDEX and/or poor formulation of some SELECT. Find the naughty queries and let's work on them. If you need help finding them, see this on the slowlog.

You have a lot of MyISAM tables; consider converting them to InnoDB. Tips here

For NUMA, see my notes here.

I repeat; You can't tune your way out of performance issues.