Как организовать миграцию данных самостоятельно
Пользователи часто спрашивают, как выполнить миграцию данных самостоятельно. В ответ на запросы пользователей, наши инженеры подготовили подробную инструкцию с примерами для случаев самостоятельного переноса, с учетом своего многолетнего опыта.
Акцентируем внимание на настройке надежного резервного копирования в инструкции. Иногда требуется перенести только определенные файлы, чтобы начать работу в облачном сервере, поэтому наша инструкция предлагает сначала перенести резервные копии необходимых данных. Далее мы рассмотрим пример миграции сайта с одного сервера на другой, охватывая шаги от резервного копирования до восстановления данных. И проиллюстрируем этот процесс на примере миграции базы данных MySQL.
В чём заключается апгрейд?
Рассказываем, как можно настроить резервное копирование на несколько разных площадок, в том числе и на публичные сервисы, разберём на примере Google Диск.
В чём разница между миграцией и резервным копированием?
Зачастую пользователям требуется перенести только определённые файлы для начала работы на новом сервере, и при такой миграции мы предлагаем выполнить перенос резервных копий нужных данных. Резервное копирование, в этом случае - это один из этапов в процессе миграции.
Далее по тексту коллеги используют аббревиатуры:
- РК БД - резервное копирование, резервная копия базы данных.
- Миграция данных - перенос данных с одного сервера на другой.
- СУБД - система управления базы данных, для примера: MySQL, PostgreSQL.
Пример переноса данных с одного сервера на другой
Рассмотрим пример, когда требуется выполнить перенос сайта с одного сервера на другой. Шаги по миграции данных будут следующими:
- Выполнить РК базы данных и файлов сайта;
- Миграция данных;
- Восстановление данных.
Вводные данные:
- Сервер под управлением Debian 12.
Шаг 1: Резервное копирование базы данных MySQL
Самый просто и быстрый вариант, это сделать РК БД с помощью mysqldump.
mysqldump -u username -p db > file.sql
Ключи к команде mysqludmp:
u - имя пользователя базы данных,
p - название базы данных,
> file.sql - название файла куда будет скопирована база данных.
Примечание:
1. Для создания нескольких копий используйте следующую команду:
mysqldump -u username -p --databases db1 db2 db3 > test.sql
2. Для копирования всех существующих баз:
mysqldump -u username -p --all-databases > test.sql
3. Рекомендуем использовать учётную запись для доступа к БД отличную от root.
4. Можете сделать выгрузку через phpMyAdmin или любой другой WebUI к СУБД.
Шаг 2: Миграция файлов и базы данных на удаленный сервер
В нашем примере, выполняем копирование данных с одного сервера на другой сервер. Можете выполнить миграцию данных, как для файлов, так и для резервной копии базы данных.
Копирование данных не будем производить через FTP и т.п., выполним перенос чуть быстрее и отличным способом от FTP, для этого выполните установку rsync:
apt install rsync
Возможности rsync:
- Позволяет выполнить синхронизацию и копирование файлов между серверами, папками.
- Синхронизация только измененных данных без копирования уже существующих файлов - актуально при переносе директорий upload и подобных, в которую пользователи загружают свои файлы.
Примечание:
- Мы рассмотрим ситуацию, в которой wordpress находится в директории /var/www/wordpress.
- Отметим, что rsync выдаст ошибку, если конечной директории не существует. Директория /var/www создается автоматически при установке веб-сервера.
Перейдите в /var/www и выполните следующую команду:
rsync -a wordpress root@192.168.88.22:/var/www/
Можете дополнительно использовать следующие ключи:
- a (archive) - сжатие данных перед отправкой;
- z (compress) - сжатие данных во время передачи данных;
- v (verbose) - просмотр отладочной информации при синхронизации (debug).
Два простых шагах, что позволят выполнить миграцию данных с одного сервера на другой. Это базовый момент по переносу, но не забывайте проверить версии ПО, кодировку и другие моменты, чтобы избежать проблем после переноса.
Автоматизация резервного копирования
Выполним автоматизацию создания резервных копий с хранением данных на удаленном сервере. Для этого используем следующий сценарий:
- Создание и хранение копий локально - БД (текущая неделя, 7 дней глубина хранения).
- Архивное хранение на удалённом сервере (текущая и предыдущая неделя, 14 дней глубина хранения).
- Резервная копия виртуальной машины (текущая неделя, 7 дней глубина хранения).
Шаг 1. Ежедневное резервное копирование всех баз данных MySQL с глубиной хранения 7 дней.
- Создаём следующий файл с названием backup.sh и вставляем содержимое:
#!/bin/bash CURRENTDATE=$(date +"%Y%m%d") BACKUP_DIR="/backup/mysql/"
MYSQL=/usr/bin/mysql MYSQLDUMP=/usr/bin/mysqldump
MYSQL_USER="USERNAME" MYSQL_PASSWORD="PASSWORD" SKIPDATABASES="Database|information_schema|performance_schema|mysql"
RETENTION_POLICY=7
mkdir -p $BACKUP_DIR/$CURRENTDATE
databases=`$MYSQL -u$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "($SKIPDATABASES)"`
for db in $databases; do echo $db $MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --skip- lock-tables --events --databases $db | gzip > "$BACKUP_DIR/$CURRENTDATE/$db.sql.gz" done
find $BACKUP_DIR/* -mtime +$RETENTION_POLICY -delete
backup.sh - выполнение резервного копирования в папку /backup/mysql/
2. Выставляем права на исполнение файла:
chmod +x backup.sh
3. Откроем cron (crontab -e) и добавляем следующее правило:
0 0 * * * /backup/backup.sh
С подробным описанием работы и валидатором cron можете ознакомиться на данном сайте.
Кратко рассмотрим:
- MYSQL_USER, MYSQL_PASSWORD - укажите данные для подключения к базе данных. Учетная запись должна иметь доступ к БД.
- SKIPDATABASES - пропускаем РК системных БД.
- RETENTION_POLICY - указываем глубину хранения в точках, мы выполняем РК раз в сутки, поэтому указываем 7 точек, т.е. 7 дней.
- 0 0 * * * - запускаем выполнение скрипта каждый день в 00:00.
Шаг 2. Копирование данных на Google Диск с глубиной хранения 14 дней.
- Копирование данных будем выполнять с помощью rsync, но с дополненным функционалом для бесплатных облачных платформах, таких как Google Диск.
- Приложение называется rclone, выполним установку:
curl https://rclone.org/install.sh | sudo bash
3. Добавим конфигурацию Google Диск.
rclone config
4.Создадим новую удалённую точку, клавишей N (New remote) и присвоим имя, например, google-drive.
5. Теперь настроим следующие параметры:
- client_id и client_secret - оставьте пустыми
- scope - выберите 1 (Full access)
- root_folder-id, service_account_file - оставьте пустым
- edit advanced config - n
- Use web browser … - n
На экране должна появиться команда, которую нужно будет запустить на локальном компьютере (предварительно скачав его).
Выполнив команду у вас откроется браузер для входа в ваш Google аккаунт для подключения rclone к Google Диск, по завершению вы получите токен для связи rclone и ваш Google Диск.
6. Теперь копируем данные в папку backups на Google Диск:
/usr/bin/rclone copy "/root/wordpress.tar.gz" "google-drive:/backups/wordpress.tar.gz"
7. В завершении настроим глубину хранений 14 дней, т.е. файлы старше 15 дней будут удалены.
/usr/bin/rclone delete “google-drive”:”/backups/” --min-age 15d -v --dry-run
Наши итоговые рекомендации:
- Храните резервные копии в нескольких местах, одно из этих место должно быть на удалённом сервере, либо хранилище, либо на вашем компьютере.
- Проверяйте планы резервного копирования, что копию создаются, нет переполнения по месту и т.п.
- Рекомендуем проверять резервные копии, что выполнение восстановления из этих копий происходит успешно.
- Если у вас недостаточно компетенций или времени, то просто воспользуйтесь услугой резервного копирования, где мы выполним:
- резервное копирование с глубиной хранения от 7 дней,
- хранение копий на разных устройствах и машинных залах: одна копия храния на сервер РК, вторая копия находится на системе хранения данных, которая размещена в другом машинном зале,
- настроим оптимальный план резервного копирования и восстановления данных,
- ежедневные отчёты для вас о выполненных заданиях резервного копирования.
Виртуализация — неизбежная и незаменимая часть современной ИТ-инфраструктуры любого бизнеса. Что это такое и как она работает, рассмотрим в этой статье.
01 октября, 2024Как мы используем продукты VMware для виртуальных серверовМы строим облачную инфраструктуру на основе архитектуры этого бренда: используем VMware vSphere для создания виртуальных серверов и управления ими, панель VMware vCloud Director для управления облаком. В статье рассказываем, почему выбираем именно эти решения.
28 сентября, 2024Частные, публичные и гибридные облака: разные виды облачных сервисовРассказываем, что представляет собой гибридное облако, как оно работает, какие особенности имеет и кому подойдет
20 августа, 2024