my.cnf приклади конфігурації MySQL, MariaDB

Поради та підказки щодо софту, роботи в операційних системах, комплектуючих та зборок комп'ютерів.
Аватар користувача
toxi
Администратор
Администратор
Статті: 0
Повідомлень: 535
З нами з: 12-04-2008 07:58:25
Ваша стать: Чоловічий
І'мя: Roman
Контактна інформація:

my.cnf приклади конфігурації MySQL, MariaDB

Повідомлення toxi »

Де знаходиться та який використовується my.cnf
Для пошуку всіх можливих розташування файлу my.cnf, замість команди find простіше і швидше використовувати попередньо оновлену утиліту locate:

Код: Виділити все

# locate my.cnf
/etc/my.cnf
/etc/my.cnf.d
/etc/mysql/my.cnf
У цьому випадку слава Богу файл my.cnf один на весь сервер, а насправді їх може бути кілька і мало того вони можуть успадковувати один одного.

Починаючи з версії 3.22, MySQL може зчитувати прийняті за замовчуванням параметри запуску для сервера та клієнтів з файлів параметрів. У Unix зчитування прийнятих за замовчуванням параметрів MySQL провадиться з наступних файлів:

Код: Виділити все

Ім'я файлу - Призначення
/etc/my.cnf - Загальні параметри
DATADIR/my.cnf - Параметри для сервера
defaults-extra-file - Файл, вказаний за допомогою --defaults-extra-file=#
~/.my.cnf - Параметри для користувача
DATADIR є каталогом даних MySQL (зазвичай '/usr/local/mysql/data' для бінарної установки або '/usr/local/var' для встановлення з вихідних текстів). Зверніть увагу, що це каталог, який був заданий під час налаштування, а не вказаний за допомогою --datadir при запуску mysqld! (--datadir не впливає на перегляд файлів параметрів сервером, оскільки їх перегляд відбувається до обробки аргументів командного рядка).

MySQL намагається прочитати файли параметрів у вказаному порядку. Якщо існує кілька таких файлів, то параметр, вказаний у файлі, що йде пізніше, має перевагу над таким самим параметром, зазначеним у файлі, розташованому раніше. Параметри, вказані в командному рядку, мають більш високий пріоритет щодо параметрів, зазначених у будь-якому з файлів параметрів. Деякі параметри можна встановити за допомогою змінних оточення. Параметри, вказані в командному рядку або у файлах параметрів, мають перевагу по відношенню до змінних оточення.

Наводимо список програм, що підтримують файли параметрів: mysql, mysqladmin, mysqld, mysqld_safe, mysql.server, mysqldump, mysqlimport, mysqlshow, mysqlcheck, myisamchk та myisampack.

Будь-який параметр, який може бути заданий у командному рядку під час запуску програми MySQL, може бути також заданий у файлі параметрів (без попереднього подвійного слеша). Щоб отримати список доступних параметрів, запустіть програму з параметром --help.

Приклади конфігурацій
Основне джерело highload.today

Якщо у конфігураційному файлі є налаштування thread_concurrency - приберіть її.
Приклад налаштувань Mysql для сервера з 1Гб оперативної пам'яті та двома ядрами:

Код: Виділити все

[client]
port                    = 3306
socket                  = /var/run/mysqld/mysqld.sock
 
[mysqld_safe]
socket                  = /var/run/mysqld/mysqld.sock
nice                        = 0
 
[mysqld]
user                    = mysql
pid-file                = /var/run/mysqld/mysqld.pid
socket                  = /var/run/mysqld/mysqld.sock
port                    = 3306
basedir                 = /usr
datadir                 = /var/lib/mysql
tmpdir                  = /tmp
language                = /usr/share/mysql/english
old_passwords           = 0
bind-address                = 127.0.0.1
 
skip-external-locking
 
max_allowed_packet          = 16M
key_buffer_size             = 16M
[p:innodb_buffer_pool_size]     = 512M
[p:innodb_file_per_table]       = 1
[p:innodb_flush_method]         = O_DIRECT
[p:innodb_flush_log_at_trx_commit]  = 0
 
thread_stack                = 128K
[p:thread_cache_size]           = 128
myisam-recover              = BACKUP
max_connections             = 128
table_cache                 = 32
 
query_cache_limit           = 1M
[p:query_cache_size]            = 4M
 
[p:slow_query_log]                = /var/log/mysql/mysql-slow.log
long_query_time             = 1
 
expire_logs_days            = 10
[p:max_binlog_size]             = 100M
 
[mysqldump]
quick
quote-names
max_allowed_packet          = 16M
Для 2Гб оперативної пам'яті:

Код: Виділити все

[client]
port                        = 3306
socket                      = /var/run/mysqld/mysqld.sock
 
[mysqld_safe]
socket                      = /var/run/mysqld/mysqld.sock
nice                        = 0
 
[mysqld]
user                        = mysql
pid-file                    = /var/run/mysqld/mysqld.pid
socket                      = /var/run/mysqld/mysqld.sock
port                        = 3306
basedir                     = /usr
datadir                     = /var/lib/mysql
tmpdir                      = /tmp
language                    = /usr/share/mysql/english
old_passwords               = 0
bind-address                = 127.0.0.1
 
skip-external-locking
 
max_allowed_packet          = 16M
key_buffer_size             = 16M
innodb_buffer_pool_size     = 1024M
innodb_file_per_table       = 1
innodb_flush_method         = O_DIRECT
innodb_flush_log_at_trx_commit  = 0
 
max_connections             = 136
 
        query_cache_size            = 0
 
slow_query_log              = /var/log/mysql/mysql-slow.log
long_query_time             = 1
 
expire_logs_days            = 10
max_binlog_size             = 100M
 
[mysqldump]
quick
quote-names
max_allowed_packet          = 16M
Для 4Гб оперативної пам'яті:

Код: Виділити все

[client]
port                        = 3306
socket                      = /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket                      = /var/run/mysqld/mysqld.sock
nice                        = 0

[mysqld]
user                        = mysql
pid-file                    = /var/run/mysqld/mysqld.pid
socket                      = /var/run/mysqld/mysqld.sock
port                        = 3306
basedir                     = /usr
datadir                     = /var/lib/mysql
tmpdir                      = /tmp
language                    = /usr/share/mysql/english
old_passwords               = 0
bind-address                = 127.0.0.1

skip-external-locking

max_allowed_packet          = 16M
key_buffer_size             = 16M
innodb_buffer_pool_size     = 2048M
innodb_file_per_table       = 1
innodb_flush_method         = O_DIRECT
innodb_flush_log_at_trx_commit  = 0

max_connections             = 144

        query_cache_size            = 0

slow_query_log              = /var/log/mysql/mysql-slow.log
long_query_time             = 1

expire_logs_days            = 10
max_binlog_size             = 100M

[mysqldump]
quick
quote-names
max_allowed_packet          = 16M
Для 8Гб оперативної пам'яті:

Код: Виділити все

[client]
port                        = 3306
socket                      = /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket                      = /var/run/mysqld/mysqld.sock
nice                        = 0

[mysqld]
user                        = mysql
pid-file                    = /var/run/mysqld/mysqld.pid
socket                      = /var/run/mysqld/mysqld.sock
port                        = 3306
basedir                     = /usr
datadir                     = /var/lib/mysql
tmpdir                      = /tmp
language                    = /usr/share/mysql/english
old_passwords               = 0
bind-address                = 127.0.0.1

skip-external-locking

max_allowed_packet          = 16M
key_buffer_size             = 16M
innodb_buffer_pool_size     = 4096M
innodb_file_per_table       = 1
innodb_flush_method         = O_DIRECT
innodb_flush_log_at_trx_commit  = 0

max_connections             = 160

        query_cache_size            = 0

slow_query_log              = /var/log/mysql/mysql-slow.log
long_query_time             = 1

expire_logs_days            = 10
max_binlog_size             = 100M

[mysqldump]
quick
quote-names
max_allowed_packet          = 16M
Для 16Гб оперативної пам'яті:

Код: Виділити все

[client]
port                        = 3306
socket                      = /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket                      = /var/run/mysqld/mysqld.sock
nice                        = 0

[mysqld]
user                        = mysql
pid-file                    = /var/run/mysqld/mysqld.pid
socket                      = /var/run/mysqld/mysqld.sock
port                        = 3306
basedir                     = /usr
datadir                     = /var/lib/mysql
tmpdir                      = /tmp
language                    = /usr/share/mysql/english
old_passwords               = 0
bind-address                = 127.0.0.1

skip-external-locking

max_allowed_packet          = 16M
key_buffer_size             = 16M
innodb_buffer_pool_size     = 8192M
innodb_file_per_table       = 1
innodb_flush_method         = O_DIRECT
innodb_flush_log_at_trx_commit  = 0

max_connections             = 192

        query_cache_size            = 0

slow_query_log              = /var/log/mysql/mysql-slow.log
long_query_time             = 1

expire_logs_days            = 10
max_binlog_size             = 100M

[mysqldump]
quick
quote-names
max_allowed_packet          = 16M
Для 32Гб оперативної пам'яті:

Код: Виділити все

[client]
port                        = 3306
socket                      = /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket                      = /var/run/mysqld/mysqld.sock
nice                        = 0

[mysqld]
user                        = mysql
pid-file                    = /var/run/mysqld/mysqld.pid
socket                      = /var/run/mysqld/mysqld.sock
port                        = 3306
basedir                     = /usr
datadir                     = /var/lib/mysql
tmpdir                      = /tmp
language                    = /usr/share/mysql/english
old_passwords               = 0
bind-address                = 127.0.0.1

skip-external-locking

max_allowed_packet          = 16M
key_buffer_size             = 16M
innodb_buffer_pool_size     = 16384M
innodb_file_per_table       = 1
innodb_flush_method         = O_DIRECT
innodb_flush_log_at_trx_commit  = 0

max_connections             = 256

        query_cache_size            = 0

slow_query_log              = /var/log/mysql/mysql-slow.log
long_query_time             = 1

expire_logs_days            = 10
max_binlog_size             = 100M

[mysqldump]
quick
quote-names
max_allowed_packet          = 16M
Для 64Гб оперативної пам'яті:

Код: Виділити все

[client]
port                        = 3306
socket                      = /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket                      = /var/run/mysqld/mysqld.sock
nice                        = 0

[mysqld]
user                        = mysql
pid-file                    = /var/run/mysqld/mysqld.pid
socket                      = /var/run/mysqld/mysqld.sock
port                        = 3306
basedir                     = /usr
datadir                     = /var/lib/mysql
tmpdir                      = /tmp
language                    = /usr/share/mysql/english
old_passwords               = 0
bind-address                = 127.0.0.1

skip-external-locking

max_allowed_packet          = 16M
key_buffer_size             = 16M
innodb_buffer_pool_size     = 32768M
innodb_file_per_table       = 1
innodb_flush_method         = O_DIRECT
innodb_flush_log_at_trx_commit  = 0

max_connections             = 384

        query_cache_size            = 0

slow_query_log              = /var/log/mysql/mysql-slow.log
long_query_time             = 1

expire_logs_days            = 10
max_binlog_size             = 100M

[mysqldump]
quick
quote-names
max_allowed_packet          = 16M
Для 128Гб оперативної пам'яті:

Код: Виділити все

[client]
port                        = 3306
socket                      = /var/run/mysqld/mysqld.sock
 
[mysqld_safe]
socket                      = /var/run/mysqld/mysqld.sock
nice                        = 0
 
[mysqld]
user                        = mysql
pid-file                    = /var/run/mysqld/mysqld.pid
socket                      = /var/run/mysqld/mysqld.sock
port                        = 3306
basedir                     = /usr
datadir                     = /var/lib/mysql
tmpdir                      = /tmp
language                    = /usr/share/mysql/english
old_passwords               = 0
bind-address                = 127.0.0.1
 
skip-external-locking
 
max_allowed_packet          = 16M
key_buffer_size             = 16M
innodb_buffer_pool_size     = 65536M
innodb_file_per_table       = 1
innodb_flush_method         = O_DIRECT
innodb_flush_log_at_trx_commit  = 0
 
max_connections             = 640
 
        query_cache_size            = 0
 
slow_query_log              = /var/log/mysql/mysql-slow.log
long_query_time             = 1
 
expire_logs_days            = 10
max_binlog_size             = 100M
 
[mysqldump]
quick
quote-names
max_allowed_packet          = 16M
Параметри my.cnf MySQL (кодування UTF8)
Види кодувань символів – набір символів (character set, charset).
- З версії MySQL 5.5.3 рекомендується використовувати кодування utf8mb4_unicode_ci.

- Що таке utf8mb4? utf8mb4 - набір символів, що використовується для зберігання 4 байти MySQL, впроваджений в 2010 році починаючи з версії 5.5.3. Головна відмінність utf8mb4 від utf8 в тому, що utf8mb4 задіює більш повні можливості кодування UTF8, дозволяючи підтримувати всі мови та спеціальні символи, що не підтримують utf8 (наприклад, японська мова або смайли з ios - emoji). Однак, як можна здогадатися, якщо utf8mb4 використовує для зберігання 1 символу 4 байти, то база даних може збільшитися в розмірі, якщо порівнювати з такою самою базою даних в utf8. У наш час трохи збільшений розмір бази даних не є істотно проблемою, тому, якщо ви стоїте перед вибором використовувати utf8 або utf8mb4 набір символів - використовуйте utf8mb4.

- 5.1.2. Server Command Options

Деякі параметри my.cnf MySQL 5.5.22 застаріли (deprecated) і були замінені іншими і видалені. Наприклад, зміна кодування за умовчанням у my.cnf у секції [mysqld] буде виглядати так:

Код: Виділити все

[mysqld]
#...
character_set_server = utf8 # ранее default-character-set = utf8 и character_set_server = utf8
collation-server = utf8_unicode_ci # ранее collation_server = utf8_unicode_ci
collation-server = utf8_unicode_ci або collation-server = utf8_general_ci?
utf8_unicode_ci підтримує expansions на відміну від utf8_general_ci, тобто вміє зіставляти один символ кільком (наприклад - у Німеччині ß = ss ). Детальніше Unicode Character Sets.

Порівняння utf8_unicode_ci _ci без урахування регістру, utf8_unicode_bin _bin з урахуванням регістру.
Правила форуму :: Виконую послуги IT-адміністратора (види послуг).