Администрирование серверов баз данных
Введение в администрирование MySQL
С развитием систем баз данных процедуры инсталляции и использования MySQL становятся все проще. Судя по всему, именно простота работы с MySQL стала основной причиной широкой ее популярности среди пользователей. Особенно это относится к тем из них, которые не являются, да и не желают быть программистами. Безусловно, знания компьютерного профессионала могут оказаться весьма полезными, но для успешного использования MySQL быть опытным программистом вовсе не обязательно.
Однако и полностью без управления MySQL работать также не может. Администратор должен хотя бы иногда проверять согласованность и эффективность ее работы и знать, что делать при возникновении проблем. Вся эта информация представлена далее
Этот курс посвящен рассмотрению различных аспектов администрирования MySQL . В этой лекции представлено описание всех основных вопросов, которыми необходимо владеть для успешного выполнения задач по администрированию инсталляцией MySQL. Она же включает краткий обзор всех обязанностей администратора. Инструкции по их выполнению рассматриваются в следующих лекциях.
Представленный далее в этой лекции длинный список обязанностей может не на шутку напугать начинающего или неопытного администратора. Каждая указанная в списке задача действительно очень важна, однако не стоит пробовать освоить их все сразу. Гораздо лучше использовать лекции этого курса в качестве справочного руководства, которое всегда под рукой и в которое при необходимости можно заглянуть.
Уже имеющие опыт работы администраторы могут заметить, что администрирование MySQL подобно администрированию других систем управления базами данных. Опыт администрирования других систем просто неоценим. В то же время, администрирование MySQL имеет свои уникальные особенности, которые и описываются в этом курсе.
Обзор задач администрирования
СУБД MySQL состоит из нескольких основных компонентов. Знание их сути и предназначения поможет лучше понять природу управляемой системы и принципы работы различных ее средств. Настоятельно рекомендуется потратить немного времени, чтобы хорошенько разобраться в представленном далее материале. Это значительно упростит дальнейшую работу. В частности, необходимо вникнуть в следующие аспекты работы MySQL.
- Сервер MySQL. Сервер mysqld выполняет все операции с базами данных и таблицами. Для запуска сервера, мониторинга его работы и перезапуска в случае сбоя применяется программа safe_mysqld (демон)
- Клиентские программы и утилиты MySQL. Для взаимодействия с сервером и выполнения ряда административных задач используются различные программы MySQL, наиболее важными среди которых являются следующие:
- mysql. Интерактивная программа, позволяющая отправлять SQL-запросы на сервер и просматривать результаты их выполнения.
- mysqladmin. Административная программа, позволяющая выполнять такие операции, как завершение работы сервера, создание и удаление баз данных. Эту же программу можно применять для проверки состояния сервера, если что-то в его работе не так.
- isamchk или myisamchk. Утилиты, предназначенные для анализа и оптимизации таблиц, а также восстановления их в случае повреждения.
- mysqldump. Средство резервирования баз данных или их копирования на другой сервер.
- SQL — язык сервера. Некоторые задачи администрирования можно выполнить только с помощью утилиты командной строки mysqladmin . Иногда гораздо эффективней справиться с задачей может администратор, который может «общаться» с сервером на его языке. Предположим, что необходимо проверить, почему привилегии пользователя работают вовсе не так, как ожидается. Напрямую «поговорить» с сервером на человеческом языке, к сожалению, нельзя. Зато можно воспользоваться программой-клиентом mysql и послать SQL-запрос для анализа таблиц разрешений.
Незнакомым с операторами SQL пользователям следует разобраться по крайней мере в базовых принципах их работы. Незнание SQL — достаточно серьезное препятствие, и время, затраченное на изучение этого языка, окупится очень быстро. Конечно, чтобы стать настоящим «знатоком SQL «, придется напряженно учиться и достаточно долго практиковаться. Познакомиться же с основами этого языка можно за весьма короткий промежуток времени. Более детально о языке SQL и использовании клиентской программы, работающей с командной строкой, рассказывается в курсе «Введение в MySQL».
Администрирование баз данных
Все об администрировании БД
Все подряд
Лучшие
Авторы
Как мы делали ядро инвестиционного бизнеса «Альфа-Банка» на базе Tarantool
Кадр из фильма «Our Secret Universe: The Hidden Life of the Cell»Инвестиционный бизнес — это одно из сложнейших направлений в банковском мире, потому что здесь есть не только кредиты, займы и депозиты, но и ценные бумаги, валюта, товары, деривативы и всякие сложности в виде структурных продуктов.
В последнее время мы наблюдаем рост финансовой грамотности населения. Всё больше людей вовлекается в торговлю на рынках ценных бумаг. Индивидуальные инвестиционные счета появились не так давно. Они позволяют вам торговать на рынках ценных бумаг и при этом либо получать налоговые вычеты, либо не платить налоги. И все клиенты, которые к нам приходят, хотят управлять своим портфелем и видеть отчётность в реальном времени. Причем чаще всего этот портфель мультипродуктовый, то есть люди являются клиентами различных направлений бизнеса.
Кроме того, растут и потребности регуляторов, как российских, так и зарубежных.
Чтобы соответствовать текущим потребностям и заложить фундамент для будущих модернизаций, мы разработали ядро инвест-бизнеса на основе Tarantool.
Новости
Релиз InterSystems IRIS 2020.1
В конце марта вышла новая версия платформы данных InterSystems IRIS 2020.1. Даже пандемия коронавируса не предотвратила релиз.
Из важного в новом релизе — повышение быстродействия ядра, генерация REST-приложения по спецификации OpenAPI 2.0, шардинг для объектов, новый вид Портала Управления, поддержка MQTT, универсальный кеш запросов, новый фреймворк для создания элементов продукции на Java или .NET. Полный список изменений и Upgrade Checklist на английском языке можно найти по ссылке. Подробнее — под катом.
Практика обновления версий PostgreSQL. Андрей Сальников
Предлагаю ознакомиться с расшифровкой доклада 2018 года Андрея Сальникова «Практика обновления версий PostgreSQL»
В большинстве своем, системные администраторы и ДБА бояться как огня делать мажорные обновления версий баз данных (RDBMS), особенно если эта база данных в эксплуатации и имеет достаточно высокую нагрузку. Главной причиной тому некоторый даунтайм базы данных, который всегда подразумевается при планировании таких работ.
На практике, такого рода upgrade занимает довольно длительное время и зачастую администраторам с малым опытом подобных операций приходится откатываться на старую версию баз данных из-за достаточно банальных ошибок, которые можно было бы избежать еще на этапе подготовки.
В Data Egret мы накопили огромный опыт проведения мажорных апгрейдов PostgreSQL в проектах, где нет права на ошибку. Я поделюсь своим опытом и расскажу о следующих шагах процесса: как правильно подготовиться к upgrade-у PostgreSQL? что необходимо сделать на этапе подготовки? как запланировать последовательность действий на сам upgrade? как провести процедуру upgrade-а успешно, без возврата на предыдущую версию бд? как минимизировать или вообще избежать простоя всей системы во время upgrade-а? какие действия необходимо выполнить после успешного upgrade-а PostgreSQL? Я также расскажу про две наиболее популярные процедуры апгрейда PostgreSQL — pg_upgrade и pg_dump/pg_restore, плюсы и минусы каждого из методов и расскажу про все типичные проблемы на всех этапах этой процедуры, и как их избежать.
Доклад будет интересен как новичкам так и тем ДБА которые уже давно работают с PostgreSQL, но хотят побольше узнать о том как правильно планировать и проводить upgrade максимально безболезненно.
Kilor 31 марта 2020 в 09:45
PostgreSQL Antipatterns: вычисление условий в SQL
В процессе оптимизации плана исполнения запроса PostgreSQL может произвольным образом «переставлять» эквивалентные условия, не вычислять какие-то из них для отдельных записей, относить к условию применяемого индекса… Короче, проще всего считать, что вы заранее не можете управлять тем, в каком порядке будут (и будут ли вообще) вычисляться равноправные условия.
Поэтому если управлять приоритетом все-таки хочется, надо структурно сделать эти условия неравными с помощью условных выражений и операторов.
Рекомендуем
Умный асфальт и умный кастет: опрос про эти и другие умные вещи
Бесплатные сервисы на время карантина: курсы, книги, кино и сериалы
Тест для настоящих Java-чемпионов
Резервные копии с WAL-G. Что там в 2019? Андрей Бородин
Предлагаю ознакомиться с расшифровкой доклада начала 2019 года Андрея Бородина «Резервные копии с WAL-G. Что там в 2019?»
Поиск и устранение проблем в Postgres с помощью pgCenter. Алексей Лесовский
Предлагаю ознакомиться с расшифровкой доклада начала 2019 года Алексея Лесовского — «Поиск и устранение проблем в Postgres с помощью pgCenter»
Время от времени при эксплуатации Postgres’а возникают проблемы, и чем быстрее найдены и устранены источники проблемы, тем благодарнее пользователи. pgCenter это набор CLI утилит которые является мощным средством для выявления и устранения проблем в режиме «здесь и сейчас». В этом докладе я расскажу как эффективно использовать pgCenter для поиска и устранения проблем, в каких направлениях осуществлять поиск и как реагировать на те или иные проблемы, в частности, как:
- проверить, все ли в порядке с Postgres’ом;
- быстро найти плохих клиентов и устранить их;
- выявлять тяжелые запросы;
- и другие полезные приемы с pgCenter.
Kilor 26 марта 2020 в 10:20
Рецепты для хворающих SQL-запросов
За прошедшее время вы уже воспользовались им более 6000 раз, но одна из удобных функций могла остаться незамеченной — это структурные подсказки, которые выглядят примерно так:
Прислушивайтесь к ним, и ваши запросы «станут гладкими и шелковистыми». 🙂
А если серьезно, то многие ситуации, которые делают запрос медленным и «прожорливым» по ресурсам, типичны и могут быть распознаны по структуре и данным плана.
В этом случае каждому отдельному разработчику не придется искать вариант оптимизации самостоятельно, опираясь исключительно на свой опыт — мы можем ему подсказать, что тут происходит, в чем может быть причина, и как можно подойти к решению. Что мы и сделали.
Давайте чуть подробнее рассмотрим эти кейсы — как они определяются и к каким рекомендациям приводят.
AdBlock похитил этот баннер, но баннеры не зубы — отрастут
ClickHouse в Авито: посиделки в прямом эфире с Алексеем Миловидовым
Привет, Хабр! 9 апреля с 17:00 до 20:00 наши инженеры соберутся на уютные посиделки с главным разработчиком ClickHouse Алексеем Миловидым. Поговорим про то, как мы используем систему управления базами данных в Авито, с какими сложностями сталкиваемся, и зададим Алексею вопросы о настоящем и будущем ClickHouse.
По понятным причинам мы сейчас не проводим мероприятия в офисе, так что приглашаем всех смотреть прямую трансляцию встречи. Формат: три микродоклада и большая Q&A сессия, где зрители смогут задать свои вопросы.
PostgreSQL. Добавляем not null constraints в большие таблицы
Проекты развиваются, клиентская база увеличивается, базы данных разрастаются, и наступает момент, когда мы начинаем замечать, что некогда простые манипуляции над базами данных требуют более сложных действий, а цена ошибки сильно повышается. Уже нельзя за раз промигрировать данные с одного столбца в другой, индексы лучше накатывать асинхронно, добавлять столбцы с default значениями теперь нельзя.
Одной из команд, с которой надо быть осторожным на таблицах с большим количеством записей, является добавление not null constraint на столбец. При добавлении данного constraint PostgreSQL приобретает access exclusive lock на таблицу, в результате чего другие сессии не могут временно даже читать таблицу; затем БД проверяет, что в столбце действительно ни одного null нет, и только после этого вносятся изменения. Под катом я рассмотрю различные варианты, как можно добавить not null constraint , лоча таблицу на минимально возможное время или даже не лоча ее совсем.
Книга «Базы данных. Инжиниринг надежности»
Привет, Хаброжители! В сфере IT произошла настоящая революция — с инфраструктурой стали работать как с кодом. Этот процесс создает не только новые проблемы, но и возможности для обеспечения безотказной работы баз данных. Авторы подготовили это практическое руководство для всех, кто желает влиться в сообщество современных инженеров по обеспечению надежности баз данных (database reliability engineers, DBRE).
В этой книге: • требования к сервисам хранения данных и управление рисками. • создание и развитие архитектуры, обеспечивающей прозрачную поддержку базы данных. • оптимизация процесса управления релизами. • хранение, индексирование и репликация данных. • определение характеристик хранилища данных и подбор оптимальных вариантов его использования. • исследование компонентов архитектуры и создание архитектур, ориентированных на обработку больших данных.
Администрирование серверов баз данных
А дминистрирование базы данных – это функция управления базой данных (БД). Лицо ответственное за администрирование БД называется “Администратор базы данных” (АБД) или “Database Administrator” (DBA).
Функция “администрирования данных” стала активно рассматриваться и определяться как вполне самостоятельная с конца 60-х годов. Практическое значение это имело для предприятий, использующих вычислительную технику в системах информационного обеспечения для своей ежедневной деятельности. Специализация этой функции с течением времени совершенствовалась, но качественные изменения в этой области стали происходить с началом использования так называемых интегрированных баз данных. Одна такая база данных могла использоваться для решения многих задач.
Таким образом, сформировалось определение БД как общего информационного ресурса предприятия, которое должно находиться всегда в работоспособном состоянии. И как для каждого общего ресурса значительной важности, БД стала требовать отдельного управления. Во многих случаях это было необходимо для обеспечения её повседневной эксплуатации, её развития в соответствии с растущими потребностями предприятия. К тому же БД и технология её разработки постоянно совершенствовались и уже требовались специальные знания высокого уровня для довольно сложного объекта, которым стала база данных. Отсюда функция управления базой данных и получила название “Администрирование базы данных”, а лицо ею управляющее стали называть “Администратор баз данных”.
Администратор базы данных (DBA)
Администратор базы данных (АБД) или Database Administrator (DBA) – это лицо, отвечающее за выработку требований к базе данных, её проектирование, реализацию, эффективное использование и сопровождение, включая управление учётными записями пользователей БД и защиту от несанкционированного доступа. Не менее важной функцией администратора БД является поддержка целостности базы данных.
АБД имеет код специальности по общероссийскому классификатору профессий рабочих, должностей служащих и тарифных разрядов (ОКПДТР) — 40064 и код 2139 по Общероссийскому классификатору занятий (ОКЗ). Код 2139 ОКЗ расшифровывается следующим образом: 2 — СПЕЦИАЛИСТЫ ВЫСШЕГО УРОВНЯ КВАЛИФИКАЦИИ, 21 — Специалисты в области естественных* и инженерных наук, 213 — Специалисты по компьютерам, 2139 — Специалисты по компьютерам, не вошедшие в другие группы.
История
Классические подходы к наполнению содержанием понятия «АБД» стали формироваться после издания рабочего отчета группы по базам данных Американского Национального Института Стандартов ANSI/X3/SPARC в 1975 года. В этом отчете была описана трехуровневая архитектура СУБД, в которой выделялся уровень внешних схем данных, уровень концептуальной схемы данных и уровень схемы физического хранения данных. В соответствии с этой архитектурой определялись три роли АБД: администратор концептуальной схемы, администратор внешних схем и администратор хранения данных. Эти роли в случае очень маленькой системы мог играть один человек, в большой системе для выполнения каждой роли могла назначаться группа людей. Каждой роли соответствовал набор функций, а все эти функции вместе составляли функции АБД.
В 1980 — 1981 г. в американской литературе стало принятым включать в функции АБД:
- организационное и техническое планирование БД,
- проектирование БД,
- обеспечение поддержки разработок прикладных программ,
- управление эксплуатацией БД.
В нашей стране в это же время первое определение АБД в ГОСТ-ах задало слишком узкий состав функций АБД:
- подготовка вычислительного комплекса к установке СУБД, участие в установке и приемке СУБД и самой БД с комплексом прикладных программ
- управление эксплуатацией БД
- подготовка словарей и другой НСИ — нормативно-справочной информации — к моменту начала испытания БД
Предполагалось, что функции АБД будут ориентированы только на эксплуатацию БД, а её разработка будет вестись силами специализированной организации.
К середине 90-х годов сложились еще не завершенные, но уже достаточно устойчивые и полные методологии разработки систем с базами данных. Основная работа по планированию информационных потребностей предприятия, проектированию концептуальной и логической схемы БД, внешних схем, используемых в отдельных процессах обработки информации, ложится теперь на группу проектирования Автоматизированной Системы (АС). Становиться и более определённым объем функций АБД. Это обеспечение надежной и эффективной работы пользователей и программ с БД, поддержка разработчиков в их доступе к БД и средствам разработки.
Основные задачи
Задачи АБД могут незначительно отличаться в зависимости от вида применяемой СУБД, но в основные задачи входит:
- Проектирование базы данных.
- Оптимизация производительности базы данных
- Обеспечение и контроль доступа к базе данных
- Обеспечение безопасности в базе данных
- Резервирование и восстановление базы данных
- Обеспечение целостности баз данных
- Обеспечение перехода на новую версию СУБД
Основные типы
Среди АБД нет строгого документального разграничения по типам. Но можно выделить несколько общих видов АБД, в зависимости от возложенных на них обязанностей:
- Системный администратор
- Архитектор БД
- Аналитик БД
- Разработчик моделей данных
- Администратор приложении
- Проблемно-ориентированный администратор БД
- Аналитик производительности
- Администратор хранилища данных
Должностная инструкция
Как таковой официальной версии должностной инструкции администратора базы данных не существует. Имеется несколько документов, различающихся в основном оформлением и содержанием некоторых пунктов. Естественно, ни о какой подробной расшифровке задач администратора базы данных в этих документах речи не идёт. Должностная инструкция — это, прежде всего документ, регламентирующий производственные полномочия и обязанности работника. И хотя в некоторых организациях изменяют текст должностной инструкции в соответствии с условиями специфики работы, не стоит ожидать в ней прямых указаний на то, что надо делать администратору. В большинстве случаев такие детальные директивы работы регламентируются другими документами (например, инструкция по резервному копированию, инструкция по обеспечению информационной безопасности при работе с базами данных).
Ниже приведены несколько типовых вариантов должностных инструкций найденных в интернете:
Основы администрирования SQL Server (шпаргалка начинающего администратора)
SQL Server для чайников
Анализ рынка вакансий показал, что Вакансий для начинающего администратора баз данных (далее Junior DBA) мало и работодатель требует как минимум некоторый опыт работы в информационных технологиях, чаще,конечно, требуется реальный опыт работы с БД. Такая ситуация приводит к тому, что устроиться на данную вакансию сложно.
Почему компании не хотят нанимать Junior DBA
Базы данных являются центральным ядром многих компаний, они хранят в себе платежи, личные данные и корпоративную информацию, без которой существование организации станет невозможным. Компании стремятся уменьшить риски потери или утечки информации и не хотят брать на роль DBA сотрудников без опыта работы. По этой причине компании более склонны обучить своих сотрудников, чем брать начинающего DBA (Junior DBA).
Обычно, большие компании берут Junior DBA на определённую работу, которая, как правило, низкоквалифицирована и направлена на помощь опытным администраторам баз данных (Senior DBA). В такой компании вы можете столкнуться с тем, что вам будет сложно пробиться дальше, так как никто не хочет терять работу, но для стажа работы и некоторого опыта общения этот вариант может быть интересен.
Сертификация не так полезна для Junior DBA
Не стремитесь к сертификатам в начале вашей карьеры. Сертификат — это как украшение новогодней Ёлки, но если ёлка не может устойчиво стоять, то украшения ей не помогут. Сертификат будет служить дополнительным плюсом при поиске работы, но не тратьте на него времени, если у вас нет базовых знаний администрирования.
Когда полезна сертификация
- Для прохождения первых этапов отбора
- Для принятия решения в вашу пользу если кандидаты одинаковы
- Для поддержания вашего интереса к технологии
- Необходим для организаций, где есть тендеры
Как выбрать место работы для Junior DBA
В начале вашей карьеры следует обращать больше внимание не на зарплату, а на коллектив. Вам необходимо найти такое место работы, где вы сможете перенять опыт у ваших коллег. Вам очень повезёт, если вы сможете найти достойного наставника, тогда ваш карьерный рост будет стремительным. Если вы устраиваетесь на работу где нет других ДБА, то вам придётся самостоятельно проходить все сложности обучения и очень вероятно что это обучение будет сопровождаться авариями и другими сложностями, в таком случае будет полезно иметь знакомых, опытных администраторов БД, которым можно задать вопросы по телефону.
Чтобы стать Senior DBA вам необходимо постоянно развиваться. Вот несколько вариантов как вы можете это делать:
- Посещать курсы
- Посещать мероприятия
- Читать сайты и форумы
- Задавать вопросы на форумах и сайтах
- Смотреть обучающее видео
- Старайтесь делать на работе больше, чем вас просят (изучать каждую тему глубже)
Пора переходить к нашей теме.
Что нужно знать начинающим администраторам БД:
- Модели восстановления (обязательная тема для любого кто планирует заниматься работой администратора баз данных. Эту тему надо понимать в полном объёме (FULL,LOG) (https://msdn.microsoft.com/ru-ru/library/ms189275.aspx)
— FULL https://technet.microsoft.com/ru-ru/library/ms190217(v=sql.105).aspx
— LOG https://technet.microsoft.com/ru-ru/library/ms191164.aspx - После изучения моделей восстановления, обязательно проведите самостоятельное тестирование с полным и частичным восстановлением (Restore)
- Безопасность уровня БД и сервера
- Изучение лога ошибок
- Конфигурация и установка
- Простые запросы
- Базовые понятия производительности сервера (плохо ему или хорошо)
- Индексы и статистика
- CHECKDB
- Варианты отказоустойчивости (Log Shipping, Mirroring, Failover Cluser, AlwaysOn). Отказоустойчивость ни в коем случае не отменяет необходимость делать резервные копии
Советы начинающим администраторам БД
- Делайте Backup перед любыми изменениями в БД
- Если вы выполняете добавление, обновление или удаление данных, то можно явно открыть транзакцию BEGIN TRANSACTION > выполнить ваш код > прочитать таблицу с параметром NOLOCK (позволяет читать незафиксированные данные) SELECT * FROM MyTable WITH (NOLOCK)> если всё прошло успешно, можно зафиксировать транзакцию — COMMIT TRANSACTION
- Пишите комментарии, они не раз помогут вам при разборе вашего кода, когда вы вернётесь к нему спустя некоторое время
- Скачайте для практики SQL Server Developer Edition (2014/16 бесплатны). Данная редакция имеет только одно ограничение — запрет на использование в продуктивных системах, что позволит вам практиковаться на всех компонентах SQL Server.
- Старайтесь отслеживать любые изменения на сервере БД, так как отвечать придётся именно вам, даже если изменения сделали другие
- Не вносите критические изменения, которые могут повлиять на производительность или доступность системы, без согласования с пользователями и вашим руководством
В конце хотелось бы добавить, что во время интенсивного обучения крайне важно отдыхать. Хороший сон позволит вам лучше усваивать материал, а периодические перерывы помогут по другому смотреть на ситуацию, но ни в коем случае не путайте полезные перерывы с ленью.
Вам так же будет полезно изучить вопросы для собеседование на позицию Администратор MS SQL SERVER