前言
最大化 MariaDB 數據庫的性能,需要對 MariaDB 的參數進行調整,以適應不同的應用場景。
MariaDB 的性能已經非常好,但是在某些情況下,可能需要進行一些調整,以適應不同的應用場景。
優化工具
MySQLTuner
MySQLTuner 是一個 Perl 腳本,用於調整 MariaDB 參數。它可以分析 MariaDB 的組態檔案,以提高 MariaDB 數據庫的性能。
可以自動化許多 MariaDB 的參數調整,不用手動計算各種參數的值,而且會根據 MariaDB 的實際情況提供一些建議。
另外也會提供一些安全建議,例如密碼強度、漏洞等。下載的檔案是 MySQLTuner 的主要腳本和一些基本密碼和漏洞列表。
1
2
3
| wget http://mysqltuner.pl/ -O mysqltuner.pl
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/basic_passwords.txt -O basic_passwords.txt
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/vulnerabilities.csv -O vulnerabilities.csv
|
使用方法
參考設定
以下設定是基於 20 核心、60GB 內存的伺服器,適用於大型數據庫。數據庫佔用的內存大約 30GB,並且有 500 個同時連接。
數據庫主要使用 InnoDB 引擎,主要用於讀取操作,並且有一些寫入操作,用於架設 WordPress 網站。
修改 /etc/mysql/mariadb.conf.d/50-server.cnf
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
| basedir = /usr
bind-address = 0.0.0.0
binlog_cache_size = 1M
binlog_ignore_db = mysql
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
expire_logs_days = 10
innodb_buffer_pool_instances = 8
innodb_buffer_pool_size = 24G
innodb_file_per_table = ON
innodb_flush_method = O_DIRECT
innodb_io_capacity = 2000
innodb_io_capacity_max = 4000
innodb_log_buffer_size = 16M
innodb_log_file_size = 6G
innodb_log_files_in_group = 4
innodb_stats_on_metadata = OFF
innodb_thread_concurrency = 32
join_buffer_size = 1M
key_buffer_size = 384M
log_bin = mysql-bin
log_error = mysql-bin.err
max_allowed_packet = 64M
max_connections = 505
max_heap_table_size = 2048M
max_user_connections = 500
myisam_sort_buffer_size = 384M
open_files_limit = 65536
performance_schema = ON
pid-file = /run/mysqld/mysqld.pid
port = 3306
query_cache_limit = 2M
query_cache_size = 512M
read_buffer_size = 768K
read_rnd_buffer_size = 2M
# server-id 用應用於主從複製
server-id = 7414657
skip-name-resolve = 1
skip-networking = 0
sort_buffer_size = 6M
table_definition_cache = 4096
table_open_cache = 8000
thread_cache_size = 32
tmp_table_size = 2048M
|