Миграция базы данных MySQL обычно требует всего лишь нескольких простых шагов, но может занять довольно много времени, в зависимости от объема данных, которые вы хотите перенести.
В следующих шагах вы узнаете, как экспортировать базу данных MySQL со старого сервера, защитить ее, скопировать на новый сервер, успешно импортировать и убедиться в наличии данных.
Oracle предоставляет утилиту с именем mysqldump, которая позволяет легко экспортировать структуру базы данных и данные в файл дампа SQL. Используйте следующую команду:
mysqldump -u root -p --opt [database name] > [database name].sql
Несколько заметок:
В большинстве случаев данные организации являются ее наиболее важным активом. Поэтому мы не хотим, чтобы резервные копии баз данных оставались на наших серверах незащищенными, поскольку они могут по ошибке утечь или, что еще хуже, быть украденными хакерами.
Поэтому при первом удобном случае давайте сжимаем и шифруем файл и удаляем исходный файл. Чтобы зашифровать файл в сжатый файл в операционных системах Linux, используйте эту команду:
zip --encrypt dump.zip db.sql
Вам будет предложено ввести пароль до начала сжатия.
Теперь, когда у нас есть зашифрованный файл дампа, давайте перенесем его по сети на новый сервер, используя SCP:
scp /path/to/source-file user@host:/path/to/destination-folder/
Теперь, когда у нас есть файл резервной копии на новом сервере, давайте расшифруем и распакуем его:
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'
Наслаждайтесь вашим новым сервером!