Как стать автором
Обновить
27
0.1
Михаил Григорьев @Sleuthhound

Системное администрирование и базы данных

Отправить сообщение

SQL миграции в Postgres. Часть 2

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров12K

В первой части мы рассмотрели базовые операции, такие как добавление новых атрибутов, создание индексов и ограничений и т.д.

Эта статья посвящена двум более сложным миграциям:

- обновление большой таблицы
- разделение таблицы на две

Рассмотрим подходы, которые позволяют провести миграции с минимальным простоем для приложения.

Читать далее
Всего голосов 20: ↑20 и ↓0+20
Комментарии2

Собираем логи с Loki

Время на прочтение13 мин
Количество просмотров136K


Мы в Badoo постоянно мониторим свежие технологии и оцениваем, стоит ли использовать их в нашей системе. Одним из таких исследований и хотим поделиться с сообществом. Оно посвящено Loki — системе агрегирования логов.


Loki — это решение для хранения и просмотра логов, также этот стек предоставляет гибкую систему для их анализа и отправки данных в Prometheus. В мае вышло очередное обновление, которое активно продвигают создатели. Нас заинтересовало, что умеет Loki, какие возможности предоставляет и в какой степени может выступать в качестве альтернативы ELK — стека, который мы используем сейчас.

Всего голосов 44: ↑44 и ↓0+44
Комментарии16

Тестирование лучших self-hosted аналогов Notion

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров19K

image


Хабр, в связи с уходом Notion выросла потребность в аналогичном решении, которое бы было сопоставимо удобной Wiki, Task Manager — платформе. 


Я испробовал десять self-hosted решений и нашел несколько почти идеальных! Вы можете развернуть их у себя на сервере, при работе над совместными проектами с командой или для ведения личных записей.

Читать дальше →
Всего голосов 45: ↑43 и ↓2+55
Комментарии34

PostgreSQL 16. Страницы и версии строк. Часть 3

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров4.7K

Данная статья является продолжением: PostgreSQL 16. Изоляция транзакций. Часть 2.

В этой части мы рассмотрим, из каких частей состоит страница в PostgreSQL, как выполняются операции CRUD (создание, чтение, обновление, удаление) для строк с сохранением нескольких версий одной и той же строки в таблице и как на это влияют транзакции. Также рассмотрим вложенные транзакции.

Читать далее
Всего голосов 13: ↑13 и ↓0+18
Комментарии2

Как и зачем создавать кастомные сборщики мусора в Go

Время на прочтение8 мин
Количество просмотров4.1K

В Golang (да в принципе во всех ЯП) управление памятью и эффективное использование ресурсов — основа создания высокопроизводительных приложений. Одним из важных инструментов, который помогает справляться с этой задачей, является сборщик мусора (на англ garbage collection). Встроенный сборщик мусора Go выполняет свою работу довольно хорошо, но иногда требуется более тонкая настройка, чтобы соответствовать специальным требованиям потребностям конкретного приложения.

Здесь нам и помогут кастомные сборщики мусора.

Читать далее
Всего голосов 10: ↑8 и ↓2+10
Комментарии6

Опционы в стартапах: гайд для сотрудника

Уровень сложностиПростой
Время на прочтение18 мин
Количество просмотров4.2K

Представьте, что стартап ранней стадии предлагает вам 1,500 опционов. Сколько это в деньгах?

Как вообще работают опционы?

Я решил разобраться и поделиться с вами.

Цель этого руководства не дать поток финансовых терминов, как это обычно делают, а доступно разобрать механизм опционов и ответить на действительно важные вопросы с точки зрения сотрудника стартапа.

Читать далее
Всего голосов 16: ↑15 и ↓1+18
Комментарии1

Архивация сегментов WAL с помощью Pgbackrest

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров2.3K

Добрый день, меня зовут Андрей, я специалист по администрированию баз данных в компании «Сервионика». За 2,5 года под моим контролем побывало около 700 кластеров баз данных, из которых 80 % — High Avaiability, треть из них — это трёхнодовые полноценные кластеры, где есть мастер, синхронная и асинхронная реплики. Также были успешно проведены проекты по миграции с Oracle и MSSQL на PostgreSQL.

Резервное копирование — один из важнейших процессов администрирования баз данных. К сожалению, никто не застрахован от сбоев оборудования или логических ошибок. Однажды мы столкнулись с ошибкой резервного копирования PostgreSQL, которая возникает у многих пользователей Pgbackrest. В сети нет единого описания её исправления. Расскажу о том, к какому решению мы пришли, и как в компании реализовано резервное копирование PostgreSQL.

Читать далее
Всего голосов 10: ↑10 и ↓0+17
Комментарии4

Обзор открытых свободных инструментов для создания резервных копий СУБД PostgreSQL

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров6.1K

Перефразируя древнюю мудрость: все люди делятся на 10 типов: те, кто не знает, зачем нужны резервные копии, и те, кто делает резервные копии.
В данном обзоре я попробую мал-мала расшифровать свою давнюю табличку (внеся в неё некоторое количество изменений):
Обзор наиболее популярных средств для создания резервных копий PostgreSQL.
Ибо не вижу я ни подобных обзоров в информационном поле, ни грамотного, с технической точки зрения, подхода к выбору инструмента вообще, и для создания резервных копий (РК) СУБД PostgreSQL в тех организациях, куда заносит профессиональная деятельность, в частности. Основной аргумент выбора: знания и умения текущего системного администратора. Доводилось встречаться со сменой инструмента по причине того, что новый администратор баз данных не знал и не умел уже использовавшийся продукт. Причём использовался вполне себе достойный, но... (конкретики не будет, по причинам, например, секретным, увы мне).

Читать далее
Всего голосов 12: ↑8 и ↓4+7
Комментарии21

Оптимизация настроек Kafka кластера. Часть 1. Механизмы управления пропускной способностью

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров4.1K

Привет, Хабр! Представляю вам перевод технического документа от Confluent, который посвящен тому, как определить, что именно нужно оптимизировать (пропускная способность, задержка, надежность или доступность), как настроить развертывание Kafka в соответствии с этими целями и убедиться в их достижении с помощью мониторинга. Сегодня я выкладываю первую часть, в которой обсуждается, как определить цели оптимизации и улучшить пропускную способность Kafka. Последующие статьи будут посвящены задержке, надежности, доступности, мониторингу и бенчмаркингу.

Читать далее
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Знакомство с Percona Everest [Beta] — инструментом для управления кластерами баз данных

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров2K

Осенью 2023 года вышла Alpha-версия Percona Everest — нового продукта от компании Percona. Это cloud-native database platform — инструмент с графическим интерфейсом для управления кластерами баз данных, развёрнутыми в Kubernetes.

22 февраля 2024 года Percona Everest перешла в состояние Beta. Обновлённый продукт сильно отличается от первой версии — разработчики проделали большой объем работы. В сегодняшней статье разберём, как выглядит Beta-версия Percona Everest и как её установить. Также рассмотрим, чего не хватает инструменту, на наш взгляд, на текущий момент.

Читать далее
Всего голосов 18: ↑18 и ↓0+20
Комментарии2

DBaaS в Kubernetes: падения и взлеты

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров2.7K

Привет, Хабр! 

Мы — команда Рег.ру, направление облачных сервисов, — однажды решили создать сервис управляемых баз данных, он же DBaaS. Раскрываем технические аспекты DBaaS: на каких технологиях основана услуга, какие инструменты использованы, с какими трудностями мы столкнулись при создании и запуске в продакшн. Будет интересно!

Читать далее
Всего голосов 7: ↑7 и ↓0+8
Комментарии2

Go optimizations in VictoriaMetrics. Александр Валялкин

Время на прочтение22 мин
Количество просмотров6.6K

Предлагаю ознакомиться с расшифровкой доклада конца 2019 года Александра Валялкина "Go optimizations in VictoriaMetrics"


VictoriaMetrics — быстрая и масштабируемая СУБД для хранения и обработки данных в форме временного ряда (запись образует время и набор соответствующих этому времени значений, например, полученных через периодический опрос состояния датчиков или сбор метрик).


Всего голосов 18: ↑17 и ↓1+20
Комментарии6

Операторы PostgreSQL для Kubernetes. Как мы выбирали идеальный вариант для организации системы DBaaS

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров5K

Некоторое время назад у нас возникла задача организовать возможность создания managed баз данных. Сложность данной задачи в том, что нам надо развертывать и управлять тысячами баз данных PostgreSQL, которые обеспечивают репликацию, бэкапы, мониторинг и другие полезные пользователям функции. При этом в ядре нашей системы лежит Kubernetes, в котором запускаются приложения пользователей. И по ряду факторов нам требовалось запускать базы данных внутри кластера.

Чтобы не изобретать велосипед, мы решили рассмотреть известные операторы, позволяющие разворачивать базы данных PostgreSQL в Kubernetes и управлять ими.

Читать далее
Всего голосов 7: ↑5 и ↓2+5
Комментарии20

Написание минимальной подсистемы хранения данных в памяти для MySQL/MariaDB

Уровень сложностиСредний
Время на прочтение24 мин
Количество просмотров5.9K

Я потратил неделю, копаясь во внутренностях MySQL/MariaDB вместе с ещё примерно 80 разработчиками. Хотя MySQL и MariaDB — это, по большей части, одно и то же (я ещё к этому вернусь), я сосредоточился именно на MariaDB.

Раньше я никогда сам не собирал MySQL/MariaDB. В первый день «недели хакерства» я смог наладить локальную сборку MariaDB и твикнул код так, что запрос SELECT 23 возвращал 213. Сделал я и другой твик — такой, что запрос SELECT 80 + 20 возвращал 60. На второй день я смог заставить заработать простую UDF на C, благодаря которой запрос SELECT mysum(20, 30) давал 50.

Остаток недели я потратил, пытаясь разобраться с тем, как сделать минимальный движок для хранения данных в памяти. Именно о нём я и расскажу. Это — 218 строк кода на C++.

Читать далее
Всего голосов 21: ↑21 и ↓0+21
Комментарии5

Как я с 0 поднял свой уровень английского до B2 и подтвердил этот уровень на экзамене IELTS Academic

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров163K

Привет, Хабр!

В этой статье я расскажу о своем опыте изучения английского языка и поделюсь вещами которые работали и не работали для меня. Процесс изучения языка очень индивидуален, и никогда нельзя утверждать что верный какой-то один метод / схема (хотя некоторые статьи на Хабре прямо говорят: вот этот метод правильный, а вот этот нет).

Начнем с бекграунда и причин.

Я – инженер машиностроитель (мой профиль – торцевые уплотнения вращающихся валов). Я начал работать в своей отрасли сразу после бакалавра, параллельно заканчивая магистратуру, и как только я начал работать, я стал стараться впитать как можно больше теоретических знаний по моей специальности из академических источников. Достаточно бысто я понял, что последняя серьезная книга по моей специальности на русском языке была написана в 1978 году. И спустя больше чем 40 лет технологии сильно поменялись, а вот их описание на русском языке отсутствовает. Зато я нашел на reddit людей работающих в штатах в моей же отрасли. Они мне насоветовали кучу классной литературы. Разумееется, она вся на английском, и русского перевода не имеет.

Начал свой путь изучения языка я в январе 2022 года с около нулевого уровня. В всех моих школах преподование английского языка было не на самомом высоком уровне, а в университете было достаточно выучить 30 предложений наизусть чтобы получить достойную оценку на экзамене.

Конечно, перед началом обучения я прочитал много статей на хабре о том как люди учат языки. Некоторые из них поражали скоростью овладения материалом (что-то вроде с нуля до fluent за 4 месяца). Но одна вещь была неизменна – у всех был какой-то план изучения языка.

Читать далее
Всего голосов 150: ↑146 и ↓4+165
Комментарии220

Многогранный мониторинг Angie, форка веб-сервера nginx

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров9.4K

Здравствуй, дорогой читатель. Меня зовут Дмитрий. Я — системный инженер компании «Веб-сервер». На протяжении моего опыта оказания услуг технической поддержки сначала в компании Nginx, а теперь и в компании разработчика российского веб-сервера Angie, мы отвечаем на очень популярный вопрос: «Как организовать мониторинг состояния веб-сервера?». А вот так.

Читать далее
Всего голосов 23: ↑23 и ↓0+23
Комментарии16

Как построить локальный self-managed Kubernetes-кластер

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров15K

Возможно, у вас была мысль запустить собственную услугу Infrastructure as a Service (IaaS) либо разместить свои проекты на Kubernetes, но не платить за managed-услуги, или ваш проект — это и есть self-managed Kubernetes. У full-stack-разработчика и предпринимателя Нейта Бакареффа эти желания сошлись воедино.

Он решил научиться развертывать собственный кластер на виртуальных выделенных серверах, о чем и рассказал в своем блоге. Эта статья является переводом его материала.

Читать далее
Всего голосов 21: ↑18 и ↓3+21
Комментарии8

Стадо русских слонов

Время на прочтение7 мин
Количество просмотров16K

Тема импортозамещения всё более и более актуальна и уже даже можно сравнивать некоторые продукты между собой. Сегодня хотелось бы собрать в один строй и взглянуть на имеющиеся решения по СУБД семейства PostgreSQL. Кому интересно узнать про "русские" PostgreSQL - добро пожаловать под кат.

Читать далее..
Всего голосов 11: ↑10 и ↓1+11
Комментарии17

OpenConnect: недетектируемый VPN, который вам понравится

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров289K

Я уже написал здесь много статей на тему прокси-протоколов и прокси-клиентов, которые очень сложно детектировать и заблокировать, и которые используют пользователи в Китае, Иране, Ираке, Туркменистане, и теперь вот в России (мы здесь в отличной компании, правда?). Но довольно часто мне в комментариях писали, мол, это все отлично, но мне нужен именно VPN для целей именно VPN - доступа в частные локальные сети, либо для соединения клиентов между собой, и желательно так, чтобы его не заблокировали обезьяны с гранатой. Поэтому сегодня мы поговорим именно о VPN.

Классические OpenVPN, Wireguard и IPSec отметаем сразу - их уже давно умеют блокировать и блокировали не раз. Модифицированный Wireguard от проекта Amnezia под названием AmneziaWG — отличная задумка, но есть одно но...

Читать далее
Всего голосов 273: ↑272 и ↓1+323
Комментарии351

Разбираемся что MySQL пишет на диск и зачем [часть 1]

Уровень сложностиСложный
Время на прочтение8 мин
Количество просмотров19K

Разработчики предъявляют высокие требования к базам данных: максимальная надежность (ничего из того, что было записано не должно быть утеряно ни при каких обстоятельствах), и, одновременно, максимальная производительность при различных видах нагрузки (Запись/Чтение или OLTP/OLAP). Достичь этих требований может быть не просто. Давайте попробуем разобраться, как это делает MySQL.

Размышляя о базе данных, легко представить таблицу базы данных как HashMap/BinaryTree, отображающие первичный ключ (primary key) в структурированные записи с данными. Такое хранилище может работать in memory. Но, как только мы захотим записать данные на диск, придется использовать какие-то алгоритмы во внешней памяти. Просто положить наш HashMap на диск не получится, потому что память и диски слишком разные: чтение/запись диска производится блоками, latency диска больше чем у RAM, а еще нельзя будет воспользоваться обычными указателями и аллокаторами памяти - все это придется заменить самостоятельно.

Читать далее
Всего голосов 13: ↑13 и ↓0+13
Комментарии8
1
23 ...

Информация

В рейтинге
2 891-й
Откуда
Челябинск, Челябинская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

System Administration, Database Administrator
Lead
От 280 000 ₽
PostgreSQL
Linux
MySQL
Database
Zabbix