Миграция базы данных MySQL обычно требует всего лишь нескольких простых шагов, но может занять довольно много времени, в зависимости от объема данных, которые вы хотите перенести.
В следующих шагах вы узнаете, как экспортировать базу данных MySQL со старого сервера, защитить ее, скопировать на новый сервер, успешно импортировать и убедиться в наличии данных.
Экспорт базы данных MySQL в файл дампа
Oracle предоставляет утилиту с именем mysqldump, которая позволяет легко экспортировать структуру базы данных и данные в файл дампа SQL. Используйте следующую команду:
mysqldump -u root -p --opt [database name] > [database name].sql
Несколько заметок:
- Мы используем флаг –single -action, чтобы избежать блокировки базы данных при экспорте данных . Это позволит вам продолжить обновление данных в вашей старой базе данных при экспорте файла дампа. Обратите внимание, что новые данные, которые будут обновлены после того, как процесс экспорта уже запущен, не будут доступны в экспортированном файле дампа.
- Обязательно замените [database name] реальным именем базы данных перед запуском команды.
- Не забудьте ввести свои учетные данные пользователя вместо «user» и «Password» в команде. Убедитесь, что у пользователя есть разрешения на резервное копирование базы данных.
Защитите файл резервной копии
В большинстве случаев данные организации являются ее наиболее важным активом. Поэтому мы не хотим, чтобы резервные копии баз данных оставались на наших серверах незащищенными, поскольку они могут по ошибке утечь или, что еще хуже, быть украденными хакерами.
Поэтому при первом удобном случае давайте сжимаем и шифруем файл и удаляем исходный файл. Чтобы зашифровать файл в сжатый файл в операционных системах Linux, используйте эту команду:
zip --encrypt dump.zip db.sql
Вам будет предложено ввести пароль до начала сжатия.
Перенести файл резервной копии
Теперь, когда у нас есть зашифрованный файл дампа, давайте перенесем его по сети на новый сервер, используя SCP:
scp /path/to/source-file user@host:/path/to/destination-folder/
Импортируйте дамп MySQL на новый сервер
Теперь, когда у нас есть файл резервной копии на новом сервере, давайте расшифруем и распакуем его:
unzip -P your-password dump.zip
После того, как файл импортирован, не забудьте удалить файл дампа как для хранения, так и из соображений безопасности.
Чтобы импортировать файл, используйте следующую команду:
mysql -u root -p newdatabase < /path/to/newdatabase.sql
Проверить импортированные данные на новом сервере
Теперь, когда у нас есть база данных, импортированная на новый сервер, нам нужен способ убедиться, что данные действительно есть, и мы ничего не потеряли.
Мы рекомендуем начать с выполнения этого запроса как для старой, так и для новой базы данных и сравнить результаты.
Запрос подсчитает количество строк во всех таблицах, что обеспечит указание количества данных в обеих базах данных.
SELECT TABLE_NAME, TABLE_ROWS FROM `information_schema`.`tables` WHERE `table_schema` = 'YOUR_DB_NAME';
Кроме того, мы рекомендуем проверять записи MIN и MAX столбцов в таблицах, чтобы убедиться, что действительными являются сами данные, а не только объем данных.
Еще, перед переносом самого приложения мы рекомендуем перенаправить один экземпляр приложения в новую базу данных и убедиться, что все работает правильно.
Еще один вариант экспорта и импорта
Мы сохранили эту опцию до конца, так как не очень рекомендуем работать с ней.
Кажется, это намного проще, так как он будет экспортировать, передавать файл дампа и импортировать данные в новую базу данных, все в одной команде.
Недостатком является то, что если сетевое соединение прекратится, вам нужно начать все сначала.
Поэтому мы считаем, что с этой командой работать не рекомендуется, особенно с большой базой данных.
Если вы все равно хотите попробовать, используйте эту команду:
mysqldump -u root -pPassword --all-databases | ssh user@new_host.host.com 'cat - | mysql -u root -pPassword'
Важные заметки
- Убедитесь, что оба сервера MySQL установлены с одинаковым официальным дистрибутивом и версией. В противном случае вам нужно будет следовать инструкциям по обновлению с веб-сайта MySQL.
- Убедитесь, что на вашем старом сервере достаточно места для файла дампа и сжатого файла (2 x db_size => free).
- Убедитесь, что на вашем новом сервере достаточно места для хранения зашифрованного файла дампа, дешифрованного файла дампа и импортированной базы данных (3 x db_size => free).
- Если вы когда-нибудь задумывались о переносе datadir из одной базы данных в другую, пожалуйста, не делайте этого. если вы не хотите связываться с внутренней структурой базы данных, так как это, скорее всего, вызовет проблемы в будущем.
- Не забудьте настроить важные флаги, такие как innodb_log_file_size, в конфигурации вашего нового сервера. Если забыть обновить конфигурацию в соответствии со спецификациями нового сервера, это может привести к серьезным проблемам с производительностью.
Наслаждайтесь вашим новым сервером!