my.cnf примеры конфигурации MySQL, MariaDB
Где находится и какой используется 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).
- Что такое utf8mb4? utf8mb4 - набор символов, используемый для хранения 4 байта в MySQL, внедрён в 2010 году начиная с версии 5.5.3. Главное отличие utf8mb4 от utf8 в том, что utf8mb4 задействует более полные возможности кодировки UTF8, позволяя поддерживать все языки и специальные символы, не поддерживающие utf8 (например японский язык или смайлики из ios - emoji). Однако, как можно догадаться, если utf8mb4 использует для хранения 1 символа 4 байта, то база данных может увеличиться в размере, если сравнивать с точно такой же базой данных в utf8. В наше время немного увеличенный размер базы данных не является существенно проблему, по этому, если вы стоите перед выбором использовать utf8 или utf8mb4 набор символов - используйте utf8mb4.
Некоторые параметры 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
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!
7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах