Рейтинг:0

Миграция сервера: mysql

флаг mx

Каков наилучший и самый быстрый способ перемещения mysql при смене серверов?

В настоящее время я делаю это через phpmyadmin, делаю резервную копию базы данных на старом сервере, открываю нового пользователя на новом сервере, создаю новую базу данных и загружаю/восстанавливаю резервную копию.

(Я использую что-то подобное, чтобы ускорить восстановление базы данных с помощью терминала mysql.)

mysql -u имя пользователя -p база данных < /var/www/html/mysql_dump/nomedb.sql

Долгая и утомительная операция... можно ли сделать лучше и быстрее копирование базы данных и пользователей mysql на новый сервер?

У меня есть доступ по ssh и корень сервера, сервер ubuntu 20.04, apache, php8.1

----------Обновить---------

Просто для полноты картины я регулярно использую этот скрипт для создания резервных копий mysql и загружаю все с помощью rsync на локальный диск, поэтому резервное копирование баз данных не является проблемой. Утомительная часть восстанавливает их один за другим... https://www.alebalweb-blog.com/66-backup-automatico-mysql-su-server-ubuntu.html (Извините, описание на итальянском, но это почти весь код...)

флаг in
Пользователь+пароль+разрешения могут быть сложными, если новый сервер не той же версии, что и исходный. Знаете ли вы все пароли для учетных записей пользователей? Или они используются людьми (в отличие от систем), которые меняют свои пароли?
alebal avatar
флаг mx
Думаю сервер будет такой же... более-менее... я его устанавливаю... я знаю все пароли, не проблема.
raj avatar
флаг cn
raj
Самый надежный способ скопировать базу данных MySQL — через mysqldump, как вы уже это делаете. Не рекомендуется просто копировать файлы базы данных. Только вместо создания дампа базы данных в phpMyAdmin вы можете просто использовать mysqldump напрямую и скопировать полученные файлы на новый сервер.
Рейтинг:1
флаг in

«Наилучший» довольно субъективен, что приводит к мнениям, но обычно это метод, которым я следую при настройке новой базы данных MySQL:

На новом сервере ¦

  1. Создайте все базы данных
    СОЗДАТЬ БАЗУ ДАННЫХ `{dbname}` CHARSET ПО УМОЛЧАНИЮ = utf8mb4 COLLATE = utf8mb4_unicode_ci;
    СОЗДАТЬ БАЗУ ДАННЫХ ¦
    СОЗДАТЬ БАЗУ ДАННЫХ ¦ 
    
  2. Создайте все учетные записи пользователей и установите привилегии:
    СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ '{user}'@'localhost', ИДЕНТИФИЦИРОВАННОГО С помощью mysql_native_password BY 'superSecretPassword!123';
    GRANT ALL ON `{dbname}`.* TO '{user}'@'localhost';
    СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ ¦
    ПРЕДОСТАВЬТЕ ВСЕ ¦
    

На исходном сервере ¦

  1. Экспортируйте базы данных одну за другой:

    sudo mysqldump {dbname} -n --routines --triggers > dbname.sql
    

    Примечание: Вам не нужно использовать для этого командную строку, если вы предпочитаете phpMyAdmin или другой инструмент.

    • Подавить оператор CREATE DATABASE ... IF EXISTS.

    --рутины ✓ Дамп хранимых подпрограмм (функций и процедур)

    --триггеры ✓ Триггеры дампа для каждой таблицы дампа

  2. Упакуйте и сожмите дампы базы данных для упрощения транспортировки:

    sudo tar -czvf dbs.tar.gz *.sql
    
  3. Скопируйте/отправьте сжатый файл на новый сервер

На новом сервере ¦

  1. Извлеките базы данных из сжатого файла:
    tar -xvf dbs.tar.sql
    
  2. Импортируйте базы данных:
    sudo mysql имя_базы_данных < dbname.sql
    sudo mysql имя_базы_данных ¦
    
  3. (Необязательно) Перезапустите MySQL, чтобы очистить буферы:
    перезапуск службы sudo mysql
    
  4. Наслаждайтесь коротким перерывом

Есть и другие способы сделать это, но я следую этому процессу, поскольку он позволяет мне избежать проблем с перезаписью разных версий файла. mysql системную таблицу (если новый сервер отличается от той же версии), а также убедиться, что все данные, учетные записи, разрешения и функции/процедуры/триггеры на месте.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.