Файл my.cnf предназначен для настройки следующих параметров при запуске MySQL в командной строке с файлом cnf, тогда нет необходимости добавлять такие параметры в команду при запуске загрузки.
Этот файл my.cnf может быть настраиваемым расположением, или вы можете использовать следующее расположение по умолчанию, пока он находится в расположении по умолчанию, MySQL автоматически распознает его (устанавливается через источник deb или APT, исходное расположение находится в списке ниже):
имя файла | цель |
---|---|
/etc/my.cnf | Глобальные параметры |
/etc/mysql/my.cnf | Глобальные параметры |
SYSCONFDIR/my.cnf | Глобальные параметры |
$MYSQL_HOME/my.cnf | Параметры для конкретного сервера (только сервер) |
defaults-extra-file | Указанный файл —defaults-extra-file, если есть |
~/.my.cnf | Пользовательские параметры |
~/.mylogin.cnf | Параметры пути входа для конкретного пользователя (только на стороне клиента) |
Приведенное выше подробное описание может относиться к официальному объяснению: https://dev.mysql.com/doc/refman/5.7/en/option-files.html
Короче говоря, независимо от того, используете ли вы установку исходного кода APT, установку пакета deb или установку пакета двоичного (сжатый пакет tar.gz), вы можете настроить конфигурацию запуска MySQL и настройку с помощью файла my.cnf.
Начиная с версии 5.7.18, двоичный пакет больше не содержит образец файла my-default.cnf, поэтому я извлек образец из версии 5.7.17, но обнаружил, что в нем не слишком много конфигураций. Содержимое my-default.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 |
# For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html # *** DO NOT EDIT THIS FILE. It‘s a template which will be copied to the # *** default location during install, and will be replaced if you # *** upgrade to a newer version of MySQL. [mysqld] # Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. # innodb_buffer_pool_size = 128M # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin # These are commonly set, remove the # and set as required. # basedir = ..... # datadir = ..... # port = ..... # server_id = ..... # socket = ..... # Remove leading # to set options mainly useful for reporting servers. # The server defaults are faster for transactions and fast SELECTs. # Adjust sizes as needed, experiment to find the optimal values. # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES |
Фактически, эти элементы являются параметрами командной строки.На официальном сайте вы можете использовать эту страницу https://dev.mysql.com/doc/refman/5.7/en/option-files.html как вход для поиска элементов, которые необходимо настроить. Необходимо настроить.
Ниже приведен пример из my.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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 |
[client] port = 3306 socket = /tmp/mysql.sock [mysqld] ###############################Основные настройки################# ################### # Уникальный номер службы MySQL. Каждый идентификатор службы MySQL должен быть уникальным. server-id = 1 # Номер сервисного порта по умолчанию 3306 port = 3306 # mysqlУстановите корневой каталог basedir = /opt/mysql #mysql Расположение файла данных datadir = /opt/mysql/data # Временный каталог Например, будет использоваться файл загрузки данных tmpdir = /tmp # Установить каталог, в котором находится файл socke socket = /tmp/mysql.sock # В основном используется для механизма хранения MyISAM, если несколько серверов подключаются к базе данных, рекомендуется прокомментировать следующие skip-external-locking # Используйте только IP-адрес для проверки логина клиента, без имени хоста skip_name_resolve = 1 # Уровень изоляции транзакции, по умолчанию - повторяющееся чтение, уровень повторяемого чтения по умолчанию mysql (на этом уровне может быть много блокировок пропусков, влияющих на производительность) transaction_isolation = READ-COMMITTED # Набор символов по умолчанию для базы данных, основной набор символов поддерживает некоторые специальные смайлы (специальные смайлы занимают 4 байта) character-set-server = utf8mb4 # Набор символов базы данных соответствует некоторым правилам сортировки, обратите внимание на соответствие серверу набора символов collation-server = utf8mb4_general_ci # Установите набор символов, когда клиент подключается к mysql, чтобы предотвратить искажение символов init_connect=‘SET NAMES utf8mb4‘ # Если в инструкции sql учитывается регистр, 1 означает нечувствительность lower_case_table_names = 1 # Максимальное количество подключений max_connections = 400 # Максимальное количество неправильных подключений max_connect_errors = 1000 #TIMESTAMP Если NOT NULL не объявлен, допустимы значения NULL explicit_defaults_for_timestamp = true #SQL Размер отправленного пакета данных, если есть BLOB-объект, рекомендуется изменить его на 1G max_allowed_packet = 128M # Соединение MySQL будет принудительно закрыто после простоя в течение определенного периода времени (единица измерения: секунды) #MySQL Значение wait_timeout по умолчанию - 8 часов, и параметр interactive_timeout необходимо настроить одновременно, чтобы он вступил в силу. interactive_timeout = 1800 wait_timeout = 1800 # Максимальное значение временной таблицы внутренней памяти, равное 128M. # Например, группировать по с большим объемом данных, временные таблицы могут быть использованы при сортировке по, # Превышение этого значения будет записано на диск, и давление ввода-вывода системы увеличится tmp_table_size = 134217728 max_heap_table_size = 134217728 # Отключить функцию набора результатов запроса кеша mysql # Позже, исходя из деловой ситуации, чтобы определить, открывать ли # В большинстве случаев закройте следующие два query_cache_size = 0 query_cache_type = 0 #################### Настройки памяти, выделенные пользовательским процессом BEGIN #################### ######## ## Каждый сеанс будет выделять размер памяти, установленный параметром # Используется для последовательного сканирования таблицы, прочитанные данные временно сохраняются в read_buffer_size, когда буфер заполнен или после чтения, данные возвращаются вышестоящему вызывающему # Обычно 128 ~ 256 КБ, используется для MyISAM #read_buffer_size = 131072 # Для случайного чтения таблицы будет использоваться при сортировке и чтении по неиндексированному полю, # Обычно 128 ~ 256 КБ, используется для MyISAM #read_rnd_buffer_size = 262144 Используется, когда #order by или group by # Рекомендуется сначала настроить на 2M, наблюдать и настраивать позже sort_buffer_size = 2097152 # Как правило, в базе данных нет больших транзакций, установлено значение 1 ~ 2M, значение по умолчанию - 32 КБ binlog_cache_size = 524288 ####################### Настройки памяти, выделенные пользовательским процессом END ################## ########## # Сколько запросов может быть сохранено в стеке за короткий период времени, прежде чем MySQL временно перестанет отвечать на новые запросы # Официальное предложение back_log = 50 + (max_connections / 5), максимальное количество - 900 back_log = 130 ########################### Настройки журнала ################## #################### # Файл журнала ошибок базы данных log_error = error.log # Медленный запрос настроек журнала sql slow_query_log = 1 slow_query_log_file = slow.log # Проверить, что sql не используется для индекса log_queries_not_using_indexes = 1 # После открытия log_queries_not_using_indexes запишите частоту медленного SQL и количество записей в минуту log_throttle_queries_not_using_indexes = 5 # Эффективно как подчиненная библиотека, также будет записано, насколько медленно sql копируется из библиотеки log_slow_slave_statements = 1 # Медленное выполнение запроса в секундах, должно достигнуть этого значения для записи long_query_time = 8 # Количество извлеченных строк должно достигнуть этого значения, чтобы запрос был записан как медленный min_examined_row_limit = 100 #mysql binlog Срок хранения файла журнала, он будет удален автоматически expire_logs_days = 5 ########################### Настройки копии главный-подчиненный ################## ################## # Открыть функцию binlog mysql log-bin=mysql-bin #binlog Способ записи контента, запись каждой строки, которая используется binlog_format = ROW # Для режима binlog_format = ROW уменьшить содержимое журнала и записывать только затронутые столбцы binlog_row_image = minimal # вывод информации о состоянии мастера и подключении в таблицу mysql.slave_master_info master_info_repository = TABLE # позиция ведомого устройства в журналах реле выводит в таблицу mysql.slave_relay_log_info relay_log_info_repository = TABLE # Действует как подчиненная библиотека. Если вы хотите каскадное копирование, вам понадобится этот параметр log_slave_updates # Эффективно, когда действует как ведомое устройство, релейный журнал relay-log может восстановить себя relay_log_recovery = 1 # Действует как ведомая библиотека и игнорирует ошибки при копировании ведущий-ведомый slave_skip_errors = ddl_exist_errors #################### журнал повторного выполнения и настройка отношения бинарного журнала НАЧАЛО ##################### #### # (Шаг 1) подготовить SQL-операции, связанные с dml, а затем сохранить кеш в буфере журнала повторов на диск # (Шаг 2) Если предыдущая подготовка прошла успешно, продолжить сохранение журнала транзакций в binlog # (Шаг 3) Если предыдущее прошло успешно, записать запись фиксации в журнал повтора # Безопаснее всего, когда innodb_flush_log_at_trx_commit и sync_binlog оба равны 1, # Когда происходит сбой службы mysqld или хоста сервера, двоичный журнал может потерять не более одного оператора или одной транзакции. # Но когда оба установлены в 1, это вызовет частые операции io, так что этот режим также самый медленный. # Когда innodb_flush_log_at_trx_commit установлен в 0, сбой процесса mysqld приведет к потере всех данных транзакции в последнюю секунду. # Когда innodb_flush_log_at_trx_commit имеет значение 2, все данные транзакции за последнюю секунду могут быть потеряны только при сбое операционной системы или выключении системы. # фиксация транзакции, управление режимом постоянного диска для буферизации журнала повторного выполнения По умолчанию 1 innodb_flush_log_at_trx_commit = 2 # зафиксировать транзакцию, управлять режимом записи в журнал binlog mysql По умолчанию 0 #innodb_flush_log_at_trx_commit и sync_binlog оба равны 1, mysql - самый безопасный, но давление на производительность также самое большое. sync_binlog = 1 ################### Настройки журнала повторного выполнения и отношения бинарного журнала END ##################### ###### ########################## Настройки Innodb #################### ################# # Единица блока данных - 8k, по умолчанию - 16k, нагрузка на процессор 16k немного ниже, 8k имеет более высокую пропускную способность для выбора Значение параметра #innodb_page_size также влияет на максимальную длину индекса, 8 КБ меньше максимальной длины индекса 16 КБ. #innodb_page_size = 8192 # Обычно устанавливается 60% ~ 70% физического хранилища innodb_buffer_pool_size = 1G После # 5.7.6 значение по умолчанию - 16M #innodb_log_buffer_size = 16777216 # Этот параметр предназначен для unix, linux, непосредственно комментировать этот параметр в окне. Значение по умолчанию - NULL. #O_DIRECT Уменьшение конфликта между кешем VFS на уровне операционной системы и буферным кешем самого Innodb innodb_flush_method = O_DIRECT # Этот формат поддерживает сжатие, значение по умолчанию после 5.7.7 innodb_file_format = Barracuda #CPU Настройка мощности многоядерной обработки, предполагая, что ЦП имеет 2 x 4 ядра, настройки следующие # Читайте больше, пишите меньше можно установить в соотношении 2: 6 innodb_write_io_threads = 4 innodb_read_io_threads = 4 # Увеличить количество очищаемых грязных страниц и количество вставок слиянием, а также повысить производительность дискового ввода-вывода # Значение по умолчанию 200 (единица измерения: страница) # Значение может быть определено в соответствии с последними IOPS диска innodb_io_capacity = 500 # Чтобы получить максимальное время ожидания для заблокированного ресурса, значение по умолчанию составляет 50 секунд, и после этого времени будет выдана следующая ошибка: # ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction innodb_lock_wait_timeout = 30 # Регулировка процента недавно использованных страниц, прочитанных и выгруженных в буферном пуле. Установив этот параметр, можно уменьшить количество выгружаемых страниц. innodb_buffer_pool_dump_pct = 40 # Установить каталог, в котором находится файл redoLog, redoLog записывает конкретное содержимое операции транзакции innodb_log_group_home_dir = /opt/mysql/redolog/ # Установить каталог, в котором находится файл undoLog, undoLog используется для операций отката транзакции innodb_undo_directory = /opt/mysql/undolog/ # Количество файлов redoLog в innodb_log_group_home_dir. Содержимое файла redoLog записывается с циклической перезаписью. innodb_log_files_in_group = 3 # MySql5.7 Официальная рекомендация - установить как можно больше, что может быть близко к размеру innodb_buffer_pool_size # Раньше установка большого значения для этого значения могла привести к слишком долгому восстановлению времени простоя mysql, а теперь восстановление было намного быстрее # Это значение уменьшает частоту сброса грязных данных на диск # Максимальное значение innodb_log_file_size * innodb_log_files_in_group <= 512 ГБ, один файл <= 256 ГБ innodb_log_file_size = 1024M # Установите пространство, занимаемое файлом undoLog, которое нужно освободить # 5.7 Файл undoLog MySql увеличивается и не может быть переработан innodb_undo_log_truncate = 1 innodb_undo_tablespaces = 3 innodb_undo_logs = 128 # 5.7.7 Этот параметр включен по умолчанию для управления максимальной длиной индекса одного столбца до 3072 #innodb_large_prefix = 1 # 5.7.8 По умолчанию 4, количество потоков для фоновой очистки Inodb #innodb_purge_threads = 4 # Установив параметр конфигурации innodb_thread_concurrency, чтобы ограничить количество параллельных потоков, # Как только количество потоков выполнения достигает этого предела, дополнительные потоки будут спать на несколько микросекунд, прежде чем будут помещены в очередь. # Вы можете настроить время сна, установив параметр innodb_thread_sleep_delay # По умолчанию значение равно 0. В официальном документе также даны некоторые предложения по использованию innodb_thread_concurrency: # (1) Если количество одновременных пользовательских потоков в рабочей нагрузке меньше 64, рекомендуется установить innodb_thread_concurrency = 0; # (2) Если рабочая нагрузка была серьезной или даже иногда достигла пика, рекомендуется установить innodb_thread_concurrency = 128, ### И путем постоянного уменьшения этого параметра, 96, 80, 64 и т. Д., До тех пор, пока не будет найдено количество потоков, которые могут обеспечить лучшую производительность #innodb_thread_concurrency = 0 # Вся возникшая информация об ошибках взаимоблокировки записывается в error.log, прежде чем в командной строке можно будет просматривать только последнюю информацию о взаимоблокировках. innodb_print_all_deadlocks = 1 ############################другие настройки#################### ################## [mysqldump] quick max_allowed_packet = 128M [mysql] no-auto-rehash [myisamchk] key_buffer_size = 20M sort_buffer_size = 256k read_buffer = 2M write_buffer = 2M [mysqlhotcopy] interactive-timeout [mysqld_safe] # Увеличить количество открытых файлов на процесс open-files-limit = 28192 |
Совет: не рекомендуется копировать все вышеперечисленные файлы. Лучше копировать отдельно, когда вам нужна какая-то часть, потому что требования каждого сервера разные.