Миграция данных с других хранилищ
Перенести данные можно с помощью сторонних инструментов, таких как Rclone.
Для миграции потребуется:
Созданный бакет
Компьютер или виртуальный сервер для управления процессом с установленной утилитой Rclone.
Для сохранения консистентности данных процесс выполняется в несколько этапов.
Подготовка
Получите данные доступа от хранилища с которого необходимо произвести перенос и данные доступа от хранилища S3 Миран.
Добавление профилей в утилиту Rclone
Для возможности копирования данных необходимо добавить два профиля с настройками подключения к старому и новому хранилищу. Для этого создадим профили:
out-store - настройки старого хранилища, от куда необходимо перенести данные
miran-s3 - настройки нового хранилищу, куда мы будем переносить данные
Откройте терминал и запустите мастер конфигурации:
rclone config
В главном меню введите n и нажмите Enter, чтобы выбрать создание нового удалённого хранилища (New remote).
Система попросит вас придумать имя для новой конфигурации. Сначала введите out-store (для первого профиля) и нажмите Enter.
Затем вам нужно будет выбрать тип хранилища - Amazon S3 Compliant Storage
Дальше мастер попросит выбрать провайдера. Provider (Провайдер) - выберите вариант Other.
На следующем этапе укажите, что реквизиты доступа будут переданы при настройке.
Далее вводим реквизиты
Access Key ID и Secret Access Key - введите свой ключ доступа и секретный ключ.
Endpoint - это URL адрес сервера для доступа к хранилищу. Очень важный параметр, заполняйте точно по данным вашего провайдера.
Region (Регион) - оставьте данные по умолчанию
Остальные вопросы можно пропускать, просто нажимая Enter (будут использованы значения по умолчанию).
На последнем этапе проверьте настройки и подтвердите создание профиля нажав Enter
Первый профиль out-store создан.
Вернувшись в главное меню, снова нажмите n и повторите шаги, но при вводе имени напишите miran-s3 (где найти реквизиты доступа). Теперь у вас есть и второй профиль.
Первоначальное копирование данных
Запустите копирование объектов следующей командой, предварительно подставив необходимые данные:
rclone copy -v -P --log-file=rclone.log --transfers=128 [out-store]:[имя бакета] miran-s3:[имя бакета]
--log-file=rclone.log - включает лог процесса копирования
--transfers - число параллельных загрузок. Чем оно выше тем быстрее процесс копирования, однако не стоит ставить огромные значения, так как будет расти количество ошибок.
Вы также можете использовать дополнительные параметры:
--retries— задаёт число повторных попыток подключения, если передача файла не удалась;
--retries-sleep — указывает время ожидания до следующей попытки подключения;
--low-level-retries — задаёт число повторных попыток передачи данных на низких уровнях хранилища;
--timeout — задаёт таймаут на выполнение операции ввода-вывода. Если передача началась, но повисла в ожидании, этот параметр задаёт время, по истечению которого передача считается невыполненной.
--bwlimit, указав максимально допустимую скорость передачи в мегабайтах
rclone copy -v -P --log-file=rclone.log --transfers=128 --retries=100 --retries-sleep 5m --low-level-retries=100 --timeout=10m --bwlimit=100 [out-store]:[имя бакета] miran-s3:[имя бакета]
Обратите внимание. Rclone переносит данные и часть метаданных объектов, но установленные на исходном хранилище политики перенесены не будут.
Синхронизация данных
Во время копирования, часть данных на старом хранилище могла быть изменена вашими сервисами. Чтобы избежать потери новых данных необходимо запустить процесс синхронизации.
rclone copy -v -P --log-file=rclone.log --transfers=128 [out-store]:[имя бакета] miran-s3:[имя бакета]
В бакет будут скопированы только изменившиеся или новые файлы.
Остановка изменений и финальная синхронизация
Для сохранения консистентности данных потребуется временно отключить сервиси которые могут вносить изменения в хранилище с которого мы переносим данные. В это время надо запустить финальную синхронизацию:
rclone sync -v -P --log-file=rclone.log --transfers=128 [out-store]:[имя бакета] miran-s3:[имя бакета]
Настройка сервисов для работы с новым хранилищем
После финальной синхронизации хранилищ выполните подключение сервисов и приложений к новому хранилищу.
После успешного переключения сервисов на новое хранилище данные из старого хранилища лучше сразу не удалять, оставив их до финальной проверки работы.