Для пошуку всіх можливих розташування файлу my.cnf, замість команди find простіше і швидше використовувати попередньо оновлену утиліту locate:
Код: Виділити все
# locate my.cnf
/etc/my.cnf
/etc/my.cnf.d
/etc/mysql/my.cnf
Починаючи з версії 3.22, MySQL може зчитувати прийняті за замовчуванням параметри запуску для сервера та клієнтів з файлів параметрів. У Unix зчитування прийнятих за замовчуванням параметрів MySQL провадиться з наступних файлів:
Код: Виділити все
Ім'я файлу - Призначення
/etc/my.cnf - Загальні параметри
DATADIR/my.cnf - Параметри для сервера
defaults-extra-file - Файл, вказаний за допомогою --defaults-extra-file=#
~/.my.cnf - Параметри для користувача
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
Код: Виділити все
[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
Код: Виділити все
[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
Код: Виділити все
[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
Код: Виділити все
[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
Код: Виділити все
[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
Код: Виділити все
[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
Код: Виділити все
[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
Види кодувань символів – набір символів (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
utf8_unicode_ci підтримує expansions на відміну від utf8_general_ci, тобто вміє зіставляти один символ кільком (наприклад - у Німеччині ß = ss ). Детальніше Unicode Character Sets.
Порівняння utf8_unicode_ci _ci без урахування регістру, utf8_unicode_bin _bin з урахуванням регістру.