Перенос MySQL на другой VPS: как проверить базу до переключения сайта

Blog image

Перенос MySQL на другой VPS — это не только копирование файла дампа. Нужно сверить версии и параметры движка, получить согласованную копию, восстановить пользователей и права, проверить кодировки и убедиться, что приложение читает и записывает данные на целевом сервере. Если заранее провести тестовый импорт, окно переключения обычно можно сократить до финального экспорта и проверки подключения.

Инвентаризируйте базу и её пользователей

Начните с перечня баз, таблиц, объёма данных, движков хранения, кодировок, представлений, триггеров и процедур. Узнайте, кто подключается к базе: сайт, фоновые задачи, аналитика, админ-панель или отдельный сервис. В конфигурации приложения могут быть несколько наборов реквизитов для production, очередей и тестовых задач — перенос только основного подключения не охватит все записи.

Секреты подключения не включайте в рабочую таблицу, которую передают нескольким людям. Достаточно указать имя сервиса, владельца и место, где безопасно обновить значение. Проверьте список IP с доступом к MySQL и правила firewall на целевой площадке, но не открывайте порт базе всему интернету. Для приложения заранее подготовьте ограниченную учётную запись с теми правами, которые нужны конкретной схеме.

  • Запишите размер каждой базы и таблиц.
  • Отметьте таблицы InnoDB и любые нетранзакционные таблицы.
  • Найдите все приложения и задания, которые пишут в базу.
  • Сверьте кодировку, collation и sql_mode.

Провайдеры VPS/VDS для сравнения

При переносе MySQL дамп может импортироваться, а приложение после переключения — не подключиться из-за прав пользователя, кодировки или версии сервера; несогласованная финальная копия также грозит потерей новых записей. Мы советуем сравнить VPS до переезда, чтобы успеть проверить импорт и восстановление. В таблице — кандидаты; проверьте место, дисковую нагрузку и резервное копирование.

Место Провайдер
1 Timeweb
2 Selectel
3 EdgeCenter
4 VDSina
5 SpaceWeb
6 AdminVPS
7 Sprintbox
8 Hostland
9 HandyHost
10 FirstVDS

Для подробного разбора провайдеров и условий смотрите общий рейтинг VPS/VDS. Перед заказом сверяйте характеристики и ограничения тарифа на сайте провайдера.

Проверьте совместимость версий и параметры

Уточните точные версии MySQL или MariaDB на источнике и целевом VPS. Название семейства не гарантирует полную совместимость: различаются значения по умолчанию, доступные функции, кодировки и поведение SQL-режимов. Сверьте release notes и проверьте схему на отдельной тестовой базе. Если приложение работает на старой библиотеке клиента, подключение к новому серверу может не установиться даже после успешного импорта.

Сравните charset базы и соединения: неверный набор символов проявляется не только нечитаемыми буквами, но и тихой заменой данных. Проверьте часовую зону сервера и приложения, поддержку временных таблиц и ограничений. Цель этой проверки — обнаружить несовместимость до переключения, а не менять параметры производства наугад. Тестовый сервер удобнее пересоздать после эксперимента, чем пытаться восстановить частично изменённую рабочую базу.

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

Снимите дамп с учётом активности сайта

MySQL описывает `mysqldump` как логический экспорт, который можно загрузить на другой сервер. Для таблиц InnoDB часто применяют `—single-transaction`, чтобы получить согласованный снимок без долгой блокировки чтения; однако гарантии этого подхода зависят от движков таблиц и DDL-операций во время копирования. Если есть таблицы MyISAM или параллельные изменения структуры, нужен отдельный план остановки записи или иной способ согласованного снимка.

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

  • Запишите команду и параметры экспорта без паролей.
  • Проверьте exit code и stderr, а не только наличие файла.
  • Сверьте хеш дампа после передачи между серверами.
  • Не запускайте два параллельных экспорта на перегруженном источнике без оценки влияния.

Восстановите данные, права и дополнительные объекты

Импортируйте дамп в новую базу с правильным именем и заранее подготовленными пользователями. Логический экспорт схемы и данных сам по себе не всегда переносит системные учётные записи и все серверные настройки, поэтому пользователей, grants и параметры сервера проверяют отдельно. Сравните количество таблиц, представлений и триггеров, затем выполните выборочные запросы по ключевым таблицам и датам.

Для магазина или сервиса заказов смотрите не только суммарное число строк. Сопоставьте количество объектов по статусам, последние идентификаторы, суммы за контрольный период и связанные записи. Для разреженных таблиц полезно проверить случайные значения по первичной базе. После импорта проверьте автоинкремент и ограничения целостности. Если разница обнаружена, выясните, относится ли она к ожидаемым фоновой очистке или к пропущенным изменениям.

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

Проведите переключение с короткой паузой записи

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

После переключения выполните контролируемые сценарии: создать тестовую запись, прочитать её из приложения, проверить журнал ошибок и убедиться, что фоновые задачи не пишут в старый адрес. Не используйте реальные платежи и массовые письма для smoke-теста. Сохраните старую базу в режиме без записи на согласованный срок. Если нужно вернуться, продумайте обратный перенос изменений, появившихся после cutover, иначе смена адреса назад восстановит только доступ, но не данные.

  • Заморозьте запись во всех сервисах, а не только на сайте.
  • Обновите конфигурацию и секреты через штатный механизм.
  • Проверьте чтение, запись, очереди и журналы.
  • Не удаляйте исходную базу после первого успешного запроса.

Выберите VPS под базу и приложение

Для базы данных важны не только число vCPU и RAM. Смотрите доступное место, тип диска, устойчивость задержек записи, возможность отделить базу от веб-процесса, ограничения трафика и способ сделать внешнюю резервную копию. Учитывайте рост данных, временный двойной объём во время переноса и место для журнала и дампа. Для тарифа аренды VPS заранее проверьте, можно ли увеличить диск без полной переустановки и каков порядок восстановления после повреждения.

Ниже — тот же порядок VPS/VDS-провайдеров, что в <a href="https://impossible-studio.com/vps-vds/vps-vds-dlya-proekta-s-vebhukami-kak-ne-teryat-vhodyashhie-sобытия-и-obrabatyvat-ih-bez-zaderzhek/">обзоре VPS/VDS для проекта с вебхуками</a>. Используйте его как перечень площадок для сравнения условий именно под вашу базу: доступ к резервным копиям, расположение, лимиты диска и поддержка. Не делайте вывод о скорости или надёжности конкретного тарифа без проверки его параметров и подходящего теста.

  • Оставьте место для дампа и промежуточной копии.
  • Сверьте условия по snapshot и выгрузке за пределы аккаунта.
  • Проверьте ограничения по IOPS или пропускной способности, если они указаны.
  • Оцените стоимость полного цикла: сервер, копии и администрирование.

Как провести репетицию переноса базы без риска для действующего сайта

Проведите первый импорт в отдельную пустую базу на целевом VPS. Убедитесь, что кодировка, collation, SQL mode, версии MySQL и доступы приложения совпадают с ожиданиями. Выполните контрольные запросы по числу таблиц и строк для важных сущностей, затем откройте сайт в тестовом режиме. Если дамп содержит персональные данные, ограничьте доступ к тестовой копии, удалите её после репетиции и не включайте реальные данные в открытые журналы.

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

  • Репетируйте импорт в отдельную базу.
  • Сверьте кодировку, версии и ключевые таблицы.
  • Замерьте этапы и выберите длину окна переключения.
  • Опишите остановку записей и правила возврата.

Частые вопросы

Можно ли переносить MySQL без остановки сайта?

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

Достаточно ли файла SQL-дампа?

Нет. Отдельно проверьте пользователей, права, серверные параметры, кодировки и объекты базы. После загрузки сравните данные и работу приложения.

Стоит ли переносить MySQL и сайт одновременно?

Если система позволяет разнести этапы и проверить каждый по отдельности, риск проще локализовать. При тесно связанных настройках заранее отрепетируйте полный сценарий на тестовом VPS.

Документация и полезные источники

Материал проверен 12 ноября 2026 года. Условия провайдеров, версии программ и DNS-настройки могут меняться — сверяйте актуальные данные перед выполнением переноса.