Как стать автором
Обновить
127.48

Как из одной базы данных сделать 10 разных, храня только инкременты: обзор решения

Время на прочтение 3 мин
Количество просмотров 7K
История очень простая: есть большая продуктовая база данных. Она нужна пяти-шести командам разработки, тестировщикам и другим командам. Можно сделать штук 10 разных инстансов + БД, но обычно это дорого и долго. Гораздо лучше взять одну мастер-базу и хранить её инкременты для тех команд, которые с ней работают. Для этого есть специальные утилиты. Если лет пять назад они только начинали распространяться в России, то теперь их использование — абсолютно нормальная практика.

Давайте посмотрим, как это работает, на примере Actifio:

image
Слева — Shapshots, на их основе можно создавать виртуальные БД (VDB).

Итак, берём продуктовую базу и начинаем её клонировать. Нужно это для того, чтобы, в частности, получать тестовую базу за 15 минут, а не за две недели (а бывает и дольше), как обычно в крупных компаниях.

Куда нужна такая БД?


Да почти везде:

image

Обычный процесс выглядит так:

image

На самом деле это процесс курильщика, потому что вот процесс здорового человека, подумавшего когда-то про правильную инфраструктуру:

image

Для этого мы делаем не вот так:

image

То есть каждый инстанс БД взаимодействует в режиме read-write (да-да, именно чтение и запись, это не оЧепятка ;) !!!) через Actifio с основной и единственной на всех БД и её инкрементами. Или, если вы не хотите нагружать её чтением, — с единственным зеркалом для разработки/препрода/тестов и иных полезных задач.

image

То есть, допустим, разработчики говорят: нам нужна тестовая БД для быстрой выкатки нового функционала. ОК. Заходим в GUI Actifio, нажимаем раз пять-шесть мышкой и делаем провижн виртуальной БД (VDB), которая является клоном продуктивной БД. Таких клонов (VDB) может быть сколь угодно много. VDB готовится из одной-единственной копии продуктивной БД. И эта копия БД постоянно обновляется (догоняет) информацией из продуктивной БД (по графику, который можно установить произвольным образом).

У нас среднее время от тикета до предоставления базы — 30 минут.

Actifio ещё можно использовать для задач Disaster Recovery:

image

Ну и бекапа и восстановления БД соответственно примерно так же.

Как выглядят интерфейсы?


Вот так. Процесс создания виртуальной БД (VDB):

image

Слева выбираем необходимый снэпшот для создания виртуальной БД (VDB) и нажимаем кнопку Mount (внизу справа):

image

Заполняем необходимую информацию о создаваемой VDB и нажимаем кнопку Submit. Процесс создания VDB начался, он займёт минут 15–20:

image

Сам процесс создания VDB можно контролировать:

image

Собственно, всё.

Практика


У нас было так: сначала просишь железячников подготовить сервер, потом — стораджиста, инженера, подготовить сторадж, сетевика — подключиться к вопросам и так далее. Потом надо сделать копии этой базы, перетащить её на целевой сервер, где будут работать разработчики, развернуть эту базу, скоммутировать её со стораджем. Иногда при этом ещё нужно покупать саму хранилку (железо). А это тендер и прочие радости. Теперь мы берём, один раз делаем копию продуктивной базы, потом запускаем процедуру обновления вот этой базы. Клон базы используется как источник для всех остальных команд, он связан с основной базой асинхронной репликации или репликацией по типу бекапа (по ночам, например). Все команды работают с одним этим клоном независимо друг от друга.

Мы разворачиваем Актифио обычно в виртуальной среде заказчика, к которой подсоединён сторадж, где будет храниться основной клон. Обычно это железо из тестового, то есть либо доживающее свой пятый-шестой год, либо из недорогих. Хоть там и будет копия продуктовой базы, продуктовой нагрузки не будет, поэтому можно брать самые дешёвые хранилки. Дальше делается первая большая репликация, то есть фактически пишется этот самый клон в сторадж. Потом из основной базы делаются инкрементальные а-ля бекапчики по ночам.

От клона в разные стороны торчат тестовые инстансы, где команды могут полноценно работать с базой. Каждая запись хранится как инкремент для этого инстанса, то есть каждый работает со своей версией базы и может там менять что хочет, но база типа 15 ТБ занимает с 22 нашими инкрементами в районе 20 ТБ (потому что там ещё включён дедуп, который не используется на проде из-за хайлоада).

Разворачивается на Linux, UNIX, Windows. Нужно проверить версию операционки и версию СУБД, но всё популярное подходит. С легаси может не срастись.

Это всё в эксплуатации уже больше пяти лет.

С какого момента это окупается?


Обычно с баз от 3 ТБ и четырёх команд. Мы начали использовать на базе 6 ТБ и шести команд у себя лет пять назад.

Актифио — не единственное решение, но построены они плюс-минус одинаково. Есть, конечно, ещё другие варианты, которые построены на подмножестве данных, которые как бы распиливают большую базу на много маленьких, с которыми работают команды, но при условии примерно одинаковой стоимости лицензий мы выбрали именно решение Actifio. Поднимается и проверяется всё за пару недель, маны стали простые и теперь уже с картинками.
Теги:
Хабы:
+51
Комментарии 19
Комментарии Комментарии 19

Публикации

Информация

Сайт
croc.ru
Дата регистрации
Дата основания
Численность
1 001–5 000 человек
Местоположение
Россия