Привет! У нас для вас отличные новости о Manticore’s инструменте резервного копирования, который мы недавно выпустили в рамках Manticore Search 6 . Если вы цените свои данные и хотите обеспечить их безопасность, тогда вам определенно стоит это проверить.
Этот инструмент меняет правила игры, когда дело доходит до резервного копирования ваших данных Manticore. Вам больше не нужно беспокоиться о потере важной информации из-за сбоев системы или других непредвиденных событий. С новым инструментом вы можете легко автоматизировать процесс резервного копирования, добавив его в вашу задачу cron. Это значит, что вы можете расслабиться, зная, что ваши данные защищены.
История
В прошлом обеспечение безопасности ваших данных было трудной задачей, требующей ручного резервного копирования, которое часто занимало много времени и было подвержено ошибкам. Давайте вспомним, насколько это было сложно.
Manticore Search предлагает поддержку двух типов таблиц: RT
(реального времени) и plain
. Хотя оба типа служат разным целям, стоит отметить, что резервное копирование простых таблиц относительно легко, тогда как таблицы RT требуют более тонкого подхода.
Резервное копирование таблиц RT
Вы, вероятно, долго боролись с резервным копированием данных Manticore Search RT таблиц, не имея надежного инструмента для упрощения этого процесса. Если вам интересно, позвольте мне рассказать о том, что включал в себя процесс ручного резервного копирования:
- Прежде всего, важно было остановить Manticore Search и убедиться, что все данные были правильно сброшены и программа корректно завершила выполнение.
- Далее вам нужно было найти папки
data_dir
/path
, обратившись к конфигурации Manticore, и скопировать все данные из них. Это гарантировало, что все данные были сохранены и могли быть восстановлены при необходимости. Важно отметить, что при работе с большими объемами данных процесс резервного копирования мог занять некоторое время, что приводило к простоям, пока экземпляр был остановлен. Однако этот шаг необходим для обеспечения безопасности и доступности ваших данных. - Наконец, вам нужно было снова запустить Manticore Search.
В качестве альтернативы вы могли установить set global maintenance=1
, а затем выполнить резервное копирование или переключить ваше приложение на _readonly
слушатель и убедиться, что все записи остановлены.
Резервное копирование простых таблиц
Когда вы используете простые таблицы в Manticore Search, файлы на диске обновляются только тогда, когда вы запускаете индексатор или вносите изменения в атрибуты через SQL-запрос. Этот простой подход делает резервное копирование вашего индекса легким. Хотя это и не сложная задача, у нас все же есть планы включить это в Инструмент резервного копирования. Вы можете оставаться на связи и следить за обновлениями, проверяя соответствующий вопрос .
Новый инструмент резервного копирования предоставляет значительно более простой способ управления резервными копиями. С ним все упрощено и понятно. Вы даже можете планировать регулярные резервные копии, чтобы всегда иметь последнюю версию ваших данных под рукой, без простоя и лишних хлопот.
На пути к разработке инструмента резервного копирования
Чтобы разработать инструмент, нам пришлось добавить дополнительные функции в нашу существующую систему Manticore: команды FREEZE
и UNFREEZE
, которые играют важную роль в обеспечении согласованности ваших данных во время процесса резервного копирования.
Команды FREEZE
и UNFREEZE
в Manticore Search работают немного иначе, чем традиционная функция блокировки и разблокировки таблиц в MySQL. При использовании FREEZE
он останавливает сброс данных на диск, но все еще позволяет записывать в таблицу и выбирать обновленные данные из нее. Важно отметить, что если размер вашего блока RAM превышает порог rt_mem_limit
во время выполнения длительной операции резервного копирования с большим числом вставок, это может привести к сбросу данных на диск. Только тогда записи будут заблокированы до завершения сброса. Тем не менее, этот подход позволяет найти баланс между полной блокировкой таблицы, поддержанием согласованности данных и обеспечением доступности записи в базе данных, пока таблица заморожена.
Эти функции были необходимы для надежного онлайн решения для резервного копирования. Без них восстановление ваших данных может привести к несогласованным или поврежденным данным, вызывая серьезные проблемы и затраты времени и ресурсов. Чтобы обеспечить правильную логику резервного копирования, мы начинаем с заморозки всех таблиц. Затем мы продолжаем резервное копирование каждой таблицы одну за другой и выполняем UNFREEZE
после каждого резервного копирования. Кроме того, инструмент имеет защитную меру, которая автоматически выполняет UNFREEZE
для всех таблиц в случае, если процесс завершится с ошибкой или будет прерван пользователем.
После того, как мы обеспечили наличие необходимых команд для безопасного внедрения логики копирования данных, возник следующий вопрос – какой язык программирования мы должны использовать для реализации инструмента? Наша команда уже решила использовать PHP в качестве основного языка для проекта Manticore Buddy . Поэтому для нас было простым решением реализовать процесс резервного копирования данных с использованием PHP:
- Прежде всего, PHP предоставляет большую гибкость по сравнению с Bash, который обычно используется для аналогичных инструментов. Это было критически важно для конкретных требований нашего проекта. Например, это позволяет использовать инструмент в среде Windows, что было бы невозможно с Bash.
- Во-вторых, и что более важно, мы разработали его таким образом, чтобы мы могли повторно использовать один и тот же код с тем же уровнем гибкости в Manticore Buddy.
Инструмент резервного копирования требует определенных внешних модулей, включая сжатие. Чтобы упростить его использование, мы статически компилируем PHP и включаем все расширения в него. Этот объединенный объект называется manticore-executor
. В основном, это как PHP, но со всем включенным для выполнения различных проектов PHP Manticore Search: Manticore Buddy и инструмента резервного копирования. Вы можете ознакомиться с нашей историей разработки
Manticore Buddy и тем, как мы использовали PHP там
.
Это дало возможность использовать инструмент не только из командной строки, но и как новую SQL-команду внутри Manticore, используя ту же кодовую базу.
Теперь давайте научимся создавать резервные копии ваших данных с помощью интерфейсов CLI и SQL!
manticore-backup - версия CLI
Новый инструмент резервного копирования был выпущен в Manticore 6 , поэтому установка его проста, если вы просто следуете странице инструкции по установке Manticore .
Предполагая, что вы успешно установили инструмент резервного копирования, вы теперь должны иметь доступ к исполняемому файлу manticore-backup
. Давайте взглянем на некоторые реальные примеры того, как вы можете использовать инструмент в вашей повседневной работе. Для начала убедитесь, что вы создали папку /backup
, чтобы хранить все ваши резервные копии. Эта папка будет использоваться во всех следующих примерах, чтобы проиллюстрировать, как работает инструмент, но, конечно, это не обязательно должно быть точно /backup
, вы можете выбрать любой путь, который хотите.
- Сценарий 1: вы хотите создать резервную копию вашего всего экземпляра Manticore:
manticore-backup --config=/etc/manticore/manticore.conf --backup-dir=/backup
- Сценарий 2: вы хотите создать резервную копию только нескольких таблиц:
manticore-backup --config=/etc/manticore/manticore.conf --backup-dir=/backup --tables=users,messages,products
Не забывайте регулярно создавать резервные копии ваших данных, чтобы убедиться, что все в безопасности. Более того, рекомендуется зеркалировать их на другой сервер или в центр обработки данных, чтобы убедиться, что все данные доступны в любое время.
Проверьте раздел помощи по резервному копированию для глубокого погружения в использование инструмента.
Как использовать команду SQL BACKUP?
Manticore 6 также позволяет делать резервные копии с помощью интерфейса SQL без установки чего-либо или следования специальным инструкциям. Вы можете использовать тот же подход, обсуждаемый в предыдущем разделе, чтобы создать резервные копии либо всего экземпляра, либо конкретных таблиц.
- Для резервного копирования всего экземпляра используйте эту команду:
BACKUP TO /backup
- Для резервного копирования конкретных таблиц используйте это:
BACKUP TABLES users, messages, products TO /backup
Имейте в виду, что резервное копирование большого объема данных может занять некоторое время. Чтобы избежать беспокойства о потере соединения с Manticore во время выполнения команды BACKUP, вы можете выполнить запрос асинхронно. Вы мгновенно получите идентификатор запроса и сможете проверить статус процесса резервного копирования позже, отправив команду SHOW QUERIES
. Вот пример:
BACKUP TO /backup OPTION async=1
Это так просто!
Теперь вы, возможно, задаетесь вопросом: “Что насчет восстановления резервных данных?”
Восстановление
Мы успешно создали резервную копию, используя два различных метода, обеспечивая безопасность ваших данных. Но как восстановить ваши данные? Не волнуйтесь, мы о вас позаботимся.
В данный момент manticore-backup
поддерживает только восстановление полной резервной копии, пока демон поиска Manticore остановлен, но у нас есть
планы
на добавление восстановления отдельных таблиц тоже.
Предположим, что вы создали резервную копию ваших данных в /backup
, и инструмент резервного копирования создал и сохранил все ваши данные в папку под названием backup-20230305121400
. Вам необходимо остановить ваш экземпляр Manticore Search, удалить все данные и конфигурацию и выполнить команду:
manticore-backup --config=/etc/manticore/manticore.conf --backup-dir=/backup --restore=backup-20230305121400
Если вы все еще хотите восстановить конкретную таблицу, вы можете использовать
IMPORT TABLE
в SQL-режиме. Например, если у вас есть таблица с именем users
в вашей резервной копии, вам просто нужно отправить запрос, подобный этому:
IMPORT TABLE users FROM '/backup/backup-20230305121400/data/users'
Вы можете найти больше информации о manticore-backup --restore
в документации
здесь
и о команде IMPORT
здесь
.
Резюме
Когда дело доходит до запуска вещей в производственной среде, создание резервных копий ваших данных является абсолютной необходимостью. И теперь, с помощью manticore-backup
и команды BACKUP
, вы можете делать это с легкостью.
Чтобы начать использовать новые инструменты резервного копирования, посетите нашу документацию . Мы уверены, что вам это понравится! Если у вас есть какие-либо запросы на функции, пожалуйста, поделитесь ими с нами через GitHub Issues .
С наилучшими пожеланиями, команда Manticore ❤️