На днях столкнулся с ошибкой в эксплуатации и настройке MySQL сервера, о которой решил написать, чтобы самому не забыть решение, и с вами поделиться. Тема довольно распространённая, теория по которой будет полезна всем, кто работает с этой СУБД.
В MySQL есть настройка innodb_temp_data_file_path, которая отвечает за управление временным табличным пространством (temporary tablespace). Это место, где временно хранятся данные на протяжении сеанса пользователя, потом очищаются. В основном это пространство используется для операций сортировки, может чего-то ещё. Точно я не знаю.
По умолчанию этот параметр имеет значение autoextend и в некоторых случаях при такой настройке файл
Тут указано, что создаётся файл изначального размера 12 мегабайт с автоматическим увеличением до 2 гигабайт. Заранее предсказать, какого максимального объёма будет достаточно, трудно. Это зависит от многих факторов. Я такую настройку сделал несколько лет назад на одном сервере, который на днях засбоил.
Проблемы выражались в том, что существенно увеличилась запись на диск. Об этом отрапортовал Zabbix. Посмотрел статистику этой VM на гипервизоре, тоже видно, что нагрузка на диск выросла. В самой VM в логе MySQL примерно в то же время стали появляться ошибки:
Меня они сначала сбили с толку, так как подумал, что на сервере не хватает места. Но нет, с местом всё в порядке. Стал разбираться дальше и понял, что подобная ошибка означает не только недостаток места на диске, (а при нём будет такая же ошибка) но и нехватку выделенного места под temporary tablespace. Увеличил значение в innodb_temp_data_file_path и перезапустил MySQL сервер. Ошибка ушла, как и повышенная нагрузка на диск.
Это один из тех параметров, на который нужно обращать внимание при настройке MySQL сервера, иначе он может в какой-то момент преподнести сюрприз. Можно этот файл вынести на отдельный диск, или вообще указать 2 разных файла на разных дисках. В процессе написания заметки возникла идея, что может его и в память можно перенести. Но это надо погружаться в тему, чтобы понять, к чему это в итоге приведёт и стоит ли так делать. Если кто-то пробовал, напишите о своём опыте.
#mysql
В MySQL есть настройка innodb_temp_data_file_path, которая отвечает за управление временным табличным пространством (temporary tablespace). Это место, где временно хранятся данные на протяжении сеанса пользователя, потом очищаются. В основном это пространство используется для операций сортировки, может чего-то ещё. Точно я не знаю.
По умолчанию этот параметр имеет значение autoextend и в некоторых случаях при такой настройке файл
ibtmp1, в котором хранятся временные данные, может сожрать всё свободное место на сервере. У меня такое было не раз. Поэтому я всегда ограничиваю этот размер. Выглядит это примерно так:innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:2GТут указано, что создаётся файл изначального размера 12 мегабайт с автоматическим увеличением до 2 гигабайт. Заранее предсказать, какого максимального объёма будет достаточно, трудно. Это зависит от многих факторов. Я такую настройку сделал несколько лет назад на одном сервере, который на днях засбоил.
Проблемы выражались в том, что существенно увеличилась запись на диск. Об этом отрапортовал Zabbix. Посмотрел статистику этой VM на гипервизоре, тоже видно, что нагрузка на диск выросла. В самой VM в логе MySQL примерно в то же время стали появляться ошибки:
[ERROR] /usr/sbin/mysqld: The table '/tmp/#sql_1c6f_1' is fullМеня они сначала сбили с толку, так как подумал, что на сервере не хватает места. Но нет, с местом всё в порядке. Стал разбираться дальше и понял, что подобная ошибка означает не только недостаток места на диске, (а при нём будет такая же ошибка) но и нехватку выделенного места под temporary tablespace. Увеличил значение в innodb_temp_data_file_path и перезапустил MySQL сервер. Ошибка ушла, как и повышенная нагрузка на диск.
Это один из тех параметров, на который нужно обращать внимание при настройке MySQL сервера, иначе он может в какой-то момент преподнести сюрприз. Можно этот файл вынести на отдельный диск, или вообще указать 2 разных файла на разных дисках. В процессе написания заметки возникла идея, что может его и в память можно перенести. Но это надо погружаться в тему, чтобы понять, к чему это в итоге приведёт и стоит ли так делать. Если кто-то пробовал, напишите о своём опыте.
#mysql
👍90👎3
В нескольких последних публикациях про СУБД регулярно появлялись комментарии что тут, что в ВК, что админу нафиг не сдались эти базы данных. Пусть в них DBA разбираются, а не мы. Я не разделяю такую точку зрения. Основные мои доводы следующие. Не претендую на истину, а делюсь своим мнением.
1️⃣ Широкий профиль специалиста делает его универсальным и более востребованным с точки зрения применения своих навыков. Проще говоря, сменить или найти работу легче. Получается более устойчивое положение.
2️⃣ Найти своё призвание, то, чем нравится и хочется заниматься - непростая задача. Для кого-то очень сложная, если не повезёт быстро разобраться в себе в юности. И в то же время эта одна из главных задач в жизни. Не найдя себя, всю жизнь можно прожить несчастным и нереализованным. Нужно пробовать себя в разных направлениях, изучать разные науки и сферы деятельности, чтобы понять, что тебе ближе. Чем больше растёшь вширь, тем быстрее это поймёшь. Исключение - если ты уже чётко знаешь, чего хочешь.
3️⃣ Работа в разных направлениях банально более разнообразна. Меньше устаёшь от рутины и однотипных действий. Легко спасаться от выгорания. Я помню на собеседовании парня из банка, который 3 года только тем и занимался, что обслуживал почтовый кластер. Больше в его ответственности ничего не было. Знания очень узкие. Мне нужен был системный администратор. Этот человек хоть формально и был им, но я его не взял, потому что он кроме почтовых серверов ничего не знал. Банк тогда просто закрылся. Думаю, ему было непросто найти работу на такие же деньги, но не на поддержку почтового сервера. Собственно, он и не мог её найти, поэтому пошёл на понижение в зарплате.
☝️Тему эту я начал не просто так, а как подводку к основному материалу, которым хотел поделиться. У небезызвестного Созыкина Андрея есть качественный бесплатный курс по основам SQL:
🎓 Основы SQL
Он состоит из видеолекций на ютубе, к которым прилагаются презентации. Плюс задачи и их решение тоже в формате видео. Курс небольшой, буквально по базе, которая пригодится для админа 👨💻 или девопса 🤹🏻♂️. Можно пройти за выходные. День на лекции, день на практики. Можно на новогодние отложить и заняться, когда надоест есть оливье. В качестве СУБД в курсе подразумевается PostgreSQL. Очень востребованная на текущий день система управления базами данных.
#обучение #sql
☝️Тему эту я начал не просто так, а как подводку к основному материалу, которым хотел поделиться. У небезызвестного Созыкина Андрея есть качественный бесплатный курс по основам SQL:
🎓 Основы SQL
Он состоит из видеолекций на ютубе, к которым прилагаются презентации. Плюс задачи и их решение тоже в формате видео. Курс небольшой, буквально по базе, которая пригодится для админа 👨💻 или девопса 🤹🏻♂️. Можно пройти за выходные. День на лекции, день на практики. Можно на новогодние отложить и заняться, когда надоест есть оливье. В качестве СУБД в курсе подразумевается PostgreSQL. Очень востребованная на текущий день система управления базами данных.
#обучение #sql
Please open Telegram to view this post
VIEW IN TELEGRAM
asozykin.ru
Основы SQL
Курс по языку SQL начального уровня
👍161👎5