Назад | Перейти на главную страницу

Могу ли я скопировать всю папку / var / lib / mysql на другой сервер? (mysql vs mariadb, разные версии)

Раньше у меня была система Linux (LMDE) с MySQL. Система использовала innodb_file_per_table для большинства баз данных. (не уверен насчет версии, какая бы последняя ни была в LMDE)

Сейчас я использую новую систему (Manjaro / Arch) с MariaDB.

$ mysql --version
mysql  Ver 15.1 Distrib 10.0.15-MariaDB, for Linux (x86_64) using readline 5.1

В старой системе было много больших баз данных, которые я бы предпочел не копировать с помощью mysqldump. Я бы предпочел скопировать папку / var / lib / mysql из старой системы.

Это возможно?

Да, это возможно. (Я понял это, когда писал вопрос)

  1. Установите MariaDB в новую систему Arch, убедитесь, что она работает.
    Внесите изменения в /etc/mysql/my.cnf. Например. innodb_file_per_table.
    (больше этого выходит за рамки этого вопроса)
  2. sudo systemctl stop mysqld.
    (Вы хотите остановиться на обоих серверах, но в моем случае другой уже был выключен)
  3. Переименуйте папку / var / lib / mysql, например в / var / lib / _mysql.
  4. Скопируйте старую папку / var / lib / mysql из старой системы Debian (LMDE).
  5. Восстановите право собственности на файл в mysql: mysql для всего в / var / lib / mysql:
    sudo chown -R mysql:mysql /var/lib/mysql
  6. sudo systemctl start mysqld.
    -> Job for mysqld.service failed. See "systemctl status mysqld.service" and "journalctl -xe" for details.
  7. sudo systemctl status mysqld.
    -> Это показывает, что служба работает, но что-то идет не так. Это то, для чего нужен mysql_upgrade.
  8. mysql_upgrade -u root -p
    Ноты:
    • Это пароль root mysql из старой системы!
    • Мне пришлось удалить одну оставшуюся папку из / var / lib / mysql из-за недопустимого имени базы данных.
    • Файл / var / lib / mysql / mysql_upgrade_info должен быть доступен для записи.
    • Процесс может занять некоторое время.
  9. sudo systemctl restart mysqld.

ПРЕДОСТЕРЕЖЕНИЕ: По-видимому, вы не можете перейти на более раннюю версию MySQL. Я попытался перенести свои базы данных на MySQL 5.5 (точнее, на соответствующую MariaDB), но сервер не запускался. Вместо этого мне пришлось установить MySQL 5.6. (MariaDB, соответствующая MySQL 5.6, недоступна в моем дистрибутиве Linux).